新物品!Minecraft Fabric 模組開發(fā)系列教程 #2
2023-07-25 20:42 作者:ABlueDog一條藍狗 | 我要投稿

稍微折騰了半天,摸索出了1.20版本注冊物品組的寫法


public class ModItems { public static final Item CITRINE = registerItem("citrine", new Item(new FabricItemSettings()), ItemGroups.BUILDING_BLOCKS); //這里只能寫ItemGroups里已經(jīng)有的物品組分類,我把這兩個添加到了建筑方塊分類中,新建物品組的代碼在另一個類中 public static final Item RAW_CITRINE = registerItem("raw_citrine", new Item(new FabricItemSettings()), ItemGroups.BUILDING_BLOCKS); @SafeVarargs public static Item registerItem(String name, Item item, RegistryKey<ItemGroup>... itemGroups) { Item registerItem = Registry.register(Registries.ITEM, new Identifier("template-mod", name), item); for (RegistryKey<ItemGroup> itemGroup : itemGroups) { ItemGroupEvents.modifyEntriesEvent(itemGroup).register(entries -> { entries.add(registerItem); }); }//下面的寫法除了變量類型不同幾乎沒變化 return registerItem; } public static void registerModItems() { TemplateMod.LOGGER.debug("registering mod items for" + TemplateMod.MOD_ID); } }
public class ModItemGroup { //這里構(gòu)建一個注冊物品組所需的RegistryKey public static RegistryKey<ItemGroup> TEMPLATEMOD = RegistryKey.of(RegistryKeys.ITEM_GROUP, new Identifier("template-mod")); public static void registerItemGroup() { //注冊物品組 Registry.register(Registries.ITEM_GROUP, TEMPLATEMOD, ItemGroup.create(ItemGroup.Row.TOP, 3) //顯示的物品組名稱 .displayName(Text.translatable("itemGroup.template-mod.citrine")) //物品組圖標 .icon(() -> new ItemStack(ModItems.CITRINE)) //添加物品到物品組里面 .entries((displayContext, entries) -> { entries.add(ModItems.CITRINE); entries.add(ModItems.RAW_CITRINE); entries.add(ModBlocks.CITRINE_BLOCK); entries.add(ModBlocks.CITRINE_ORE); entries.add(ModBlocks.DEEPSLATE_CITRINE_ORE); }).build()); } public static void registerModItemGroup() { //在這里調(diào)用完成創(chuàng)建 registerItemGroup(); TemplateMod.LOGGER.debug("registering mod item group for" + TemplateMod.MOD_ID); } }
放上來方便復制
標簽: