新物品!Minecraft Fabric 模组开发系列教程 #2
2023-07-25 12:09 作者:ABlueDog一条蓝狗 | 我要投稿
稍微折腾了半天,摸索出了1.20版本注册物品组的写法

public class ModItems {
public static final Item CITRINE = registerItem("citrine",
new Item(new FabricItemSettings()),
ItemGroups.BUILDING_BLOCKS);
//这里只能写ItemGroups里已经有的物品组分类,我把这两个添加到了建筑方块分类中,新建物品组的代码在另一个类中
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() {
ExampleMod.LOGGER.debug("registering mod items for" + ExampleMod.MOD_ID);
}
}

public class ModItemGroup {
//这里构建一个注册物品组所需的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.templatemod"))
//物品组图标
.icon(() -> new ItemStack(ModItems.CITRINE))
//添加物品到物品组里面
.entries((displayContext, entries) -> {
entries.add(ModItems.CITRINE);
entries.add(ModItems.RAW_CITRINE);
}).build());
}
public static void registerModItemGroup() {
ExampleMod.LOGGER.debug("registering mod item group for" + ExampleMod.MOD_ID);
}
}

