物品组是创造模式物品栏内存储物品的标签页。 你可以创建自己的物品组,从而在单独的标签页内存储物品。 如果你的模组添加许多物品,需要保持组织在你的玩家容易访问的一个位置中,这就非常有用。
创建物品组
创建物品组极其容易。 只要在你的物品类中简单创建一个新的 static final 字段,存储物品组以及注册表键,就可以使用物品组事件,类型于给原版物品组添加物品的方式:
java
public static final ResourceKey<CreativeModeTab> CUSTOM_ITEM_GROUP_KEY = ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "item_group"));
public static final CreativeModeTab CUSTOM_ITEM_GROUP = FabricItemGroup.builder()
.icon(() -> new ItemStack(ModItems.GUIDITE_SWORD))
.title(Component.translatable("itemGroup.example-mod"))
.displayItems((params, output) -> {
output.accept(ModItems.SUSPICIOUS_SUBSTANCE);
output.accept(ModItems.POISONOUS_APPLE);
// The tab builder also accepts Blocks
output.accept(ModBlocks.CONDENSED_OAK_LOG);
output.accept(ModBlocks.PRISMARINE_LAMP);
// And custom ItemStacks
ItemStack stack = new ItemStack(Items.SEA_PICKLE);
stack.set(DataComponents.ITEM_NAME, Component.literal("Pickle Rick"));
stack.set(DataComponents.LORE, new ItemLore(List.of(Component.literal("I'm pickle riiick!!"))));
output.accept(stack);
})
.build();1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
java
// Register the group.
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, CUSTOM_ITEM_GROUP_KEY, CUSTOM_ITEM_GROUP);1
2
2
你现在应该可以在物品栏菜单内看到物品组了。 然而还没有翻译——必须给你的翻译文件添加翻译键——类似于翻译你的第一个物品的方式。

添加翻译键
如果在物品组的 builder 内,为 displayName 方法使用了 Text.translatable,就需要往语言文件添加翻译。
json
{
"itemGroup.example-mod": "Example Mod"
}1
2
3
2
3
现在可以看到,物品组应该被正确命名了。


