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

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添加材质
请添加图片描述

效果

在这里插入图片描述


http://www.kler.cn/a/558557.html

相关文章:

  • 高速差分信号的布线
  • 怎么合并主从分支,要注意什么
  • PHP二手车置换平台系统小程序源码
  • 【蓝桥】动态规划-多维dp-地图(带有转向次数限制)
  • stm32四种方式精密控制步进电机
  • 理解 “边缘计算“
  • 【C++】模版
  • 细说 Java 引用(强、软、弱、虚)和 GC 流程(二)
  • linux系统如何配置host.docker.internal
  • 关于GeoPandas库
  • 【Golang 面试题】每日 3 题(六十四)
  • CentOS-7-x86_64-Minimal-2009 免费下载与使用教程
  • 【C语言】第七期——字符数组、字符串、类型转换
  • 3D Gaussian Splatting(3DGS)的核心原理
  • ubuntu中打包与压缩命令详解
  • 【js逆向入门】图灵爬虫练习平台 第七题
  • 【大模型】蓝耘智算平台部署DeepSeek-R1大模型使用详解
  • Linux-C-函数栈-SP寄存器
  • vim 多个关键字高亮插件介绍
  • 设计模式-adapter模式(适配器)