当前位置: 首页 > news >正文

forge-1.21.x模组开发(二)给物品添加功能

功能效果

创建一个兑换券,当使用兑换券对着兑换机右键时,获得一条烤鱼

创建兑换券

创建ExchangeCouponsItem.java,继承Item,定义兑换券内容

public class ExchangeCouponsItem extends Item {

	public ExchangeCouponsItem(Properties p_41383_) {
		super(p_41383_);
	}

    @Override
    public InteractionResult useOn(UseOnContext p_41383_) {
    	// 获取方块信息
        Level level = p_41383_.getLevel();
        BlockPos blockpos = p_41383_.getClickedPos();
        BlockState blockstate = level.getBlockState(blockpos);
        // 检查方块是否为自定义的方块
        if (blockstate.getBlock() == TestMod.myblock.get()) {
        	// 获取玩家信息
            Player player = p_41383_.getPlayer();
            // 往物品栏添加一条烤鱼
            player.addItem(new ItemStack(Items.COOKED_COD));
            // 获取物品栏
            ItemStack itemstack = p_41383_.getItemInHand();
            // 将兑换券-1
            itemstack.shrink(1);
            // 返回成功
            return InteractionResult.SUCCESS;
        }
        return super.useOn(p_41383_);
    }

}

注册兑换券

	public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);
	
	// 自定义兑换券物品
	public static final RegistryObject<Item> exchangeCouponsItem = ITEMS.register("exchange_coupons",
			() -> new ExchangeCouponsItem(new Item.Properties().setId(ITEMS.key("exchange_coupons"))));
	public TestMod(FMLJavaModLoadingContext context) {
		IEventBus modEventBus = context.getModEventBus();
		ITEMS.register(modEventBus);
		// 注册选项卡
		modEventBus.addListener(this::addCreativeTab);
	}

	public void addCreativeTab(BuildCreativeModeTabContentsEvent event) {
		// 将自定义物品放到功能方块下
		if (event.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) {
			event.accept(exchangeCouponsItem);
		}
	}

添加材质

在这里插入图片描述
在items创建exchange_coupons.json文件

{
  "model": {
    "type": "minecraft:model",
    "model": "testmod:item/exchange_coupons"
  }
}

在lang创建en_us.jsonzh_cn.json文件

{
  "item.testmod.exchange_coupons" : "兑换卷"
}

在models.item添加exchange_coupons.json文件

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "testmod:item/exchange_coupons"
  }
}

在textures.item添加材质
请添加图片描述

效果

在这里插入图片描述

相关文章:

  • C#上位机--循环语句
  • PCL 基于FPFH特征的SAC-IA算法
  • Docker入门及基本概念
  • Java基础常见的面试题(易错!!)
  • 登录功能的实现
  • 记一次复杂分页查询的优化历程:从临时表到普通表的架构演进
  • 【Nacos】从零开始启动Nacos服务(windows/linux)
  • jmeter接口测试(二)
  • 黑马点评_分布式锁
  • 前端设计模式面试题及参考答案
  • AI赋能的未来城市:如何用智能化提升生活质量?
  • ONVIF协议全解析:版本、Profile与关键流程实现
  • Linux红帽:RHCSA认证知识讲解(一)RedHat背景与环境配置
  • 腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
  • 简单又强大的Zustand,为啥不自己手写一个呢
  • LeetCode 热题 100 560. 和为 K 的子数组
  • 侯捷 C++ 课程学习笔记:内存管理的每一层面
  • Linux提权之passwd提权(七)
  • AI助力小微企业技术开发规范化管理 | 杂谈
  • Python爬虫处理网页中的动态内容
  • 做爰全过程免费的视频网站爱/今日新闻最新消息大事
  • 网站搭建三部曲是什么?/提高工作效率的句子
  • 政府网站 html/百度关键词优化软件
  • 360安全网址导航/南京企业网站排名优化
  • 做的网站怎么发布到网上/济南seo外包公司
  • 网站域名解析失败/广州seo技术外包公司