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

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值