Identifier
构造函数的参数只能包含某些字符。两个参数(命名空间
namespace
和路径path
)都可以包含小写字母、数字、下划线、点和横杠。[a-z0-9_.-]
第二个参数(
path
)还可以包含slashes。[a-z0-9_.-]
避免使用其他符号,否则将引发
InvalidIdentifierException
!This is an old revision of the document!
要使你的ItemGroup
属性显示在创造模式菜单中,请使用FabricItemGroupBuilder
创建它们:
public class ExampleMod implements ModInitializer { public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build( new Identifier("tutorial", "general"), () -> new ItemStack(Blocks.COBBLESTONE)); public static final ItemGroup OTHER_GROUP = FabricItemGroupBuilder.create( new Identifier("tutorial", "other")) .icon(() -> new ItemStack(Items.BOWL)) .build(); // ... }
调用FabricItemGroupBuilder#build
后,您的组将被添加到创造模式菜单中的物品组列表中。
请确保将您传递到Identifier
构造器的参数1)替换为您的实际模组ID和你需要给予您的物品组用于稍后本地化的翻译键(translation key)2)。
创建自定义物品时,请在设置上调用Item.Settings#group
,然后传入自定义组:
public static final Item YOUR_ITEM = new Item(new Item.Settings().group(ExampleMod.ITEM_GROUP));
调用FabricItemGroupBuilder#appendItems
,并传递任何Consumer<List<ItemStack>>
。然后,您可以按顺序将将你想要添加的堆栈添加到特定列表中。ItemStack.EMPTY
可用于在组中放置空格。
public class ExampleMod implements ModInitializer { public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build( new Identifier("tutorial", "general"), () -> new ItemStack(Blocks.COBBLESTONE)); public static final ItemGroup OTHER_GROUP = FabricItemGroupBuilder.create( new Identifier("tutorial", "other")) .icon(() -> new ItemStack(Items.BOWL)) .appendItems(stacks -> { stacks.add(new ItemStack(Blocks.BONE_BLOCK)); stacks.add(new ItemStack(Items.APPLE)); stacks.add(PotionUtil.setPotion(new ItemStack(Items.POTION), Potions.WATER)); stacks.add(ItemStack.EMPTY); stacks.add(new ItemStack(Items.IRON_SHOVEL)); }) .build(); // ... }