首發於Enaium的個人博客
創建物品
public class ExampleMod implements ModInitializer { private static final Item END_HEART = new Item(new Item.Settings().group(ItemGroup.COMBAT).maxCount(32)); [...] }
ItemGroup.COMBAT //分類為COMBAT
maxCount(32) //一組最大堆疊數 一組最大只能疊32個物品
注冊物品
public class ExampleMod implements ModInitializer { private static final Item END_HEART = new Item(new Item.Settings().group(ItemGroup.COMBAT).maxCount(32)); @Override public void onInitialize() { Registry.register(Registry.ITEM, new Identifier("endarmor", "end_heart"), END_HEART); } }
Registry.ITEM //類別是物品
new Identifier("endarmor", "end_heart") //第一個參數是MOD ID 第二個參數是 物品的名字
END_HEART //要注冊的物品的變量名
運行看看
發現是一個紫色方塊 而且 名字是 item.endarmor.end_heart 紫色方塊是沒用紋理(材質)
接下來要添加紋理
需要的文件
Item model: .../resources/assets/endarmor/models/item/end_heart.json
Item texture: .../resources/assets/endarmor/textures/item/end_heart.png
end_heart.json 內容
{ "parent": "item/generated", "textures": { "layer0": "endarmor:item/end_heart" } }
end_heart.png 就是紋理
![]()

創建物品類
public EndHeart(Settings settings) { super(settings); }
這是一個使用物品然后發出聲音的例子
public class FabricItem extends Item { public FabricItem(Settings settings) { super(settings); } @Override public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand) { playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, 1.0F, 1.0F); return new TypedActionResult<>(ActionResult.SUCCESS, playerEntity.getStackInHand(hand)); } }
替換
private static final EndHeart END_HEART = new EndHeart(new Item.Settings().group(ItemGroup.COMBAT).maxCount(32));
