User Tools

Site Tools


zh_cn:tutorial:itemgroup

This is an old revision of the document!


物品组

现在,你可以使用命令 /give @s tutorial:custom_item 来获得你的物品。要让物品更容易获得,你需要将其添加到创造模式物品栏的物品组中。你也可以添加自己的物品组。所有添加到了物品组中的物品都可以在创造模式物品栏中搜索。

添加物品组

首先,先决定需要将物品添加到哪个物品组。例如,添加到建筑方块物品组。原版物品组存储在 ItemGroups 类中。

然后,在你的 onInitialize 方法中,为这个物品组添加事件处理器。每个需要修改的物品组都需要一个自己的监听器,但可以使用同一个监听器来将多个物品添加到同一个物品组中。

物品可以添加到一个相对于原版物品的位置。仔细思考你的模组的用户会期望物品出现在哪里。例如,如果你添加一种新的类型的木头,那么将其添加到已有木头的后面或许是最合理的。

例如,以下这个事件监听器会将你的模组中的物品放在建筑方块物品组中的橡木门后面:

  1. ItemGroupEvents.modifyEntriesEvent(ItemGroups.BUILDING_BLOCKS).register(content -> {
  2. content.addAfter(Items.OAK_DOOR, CUSTOM_ITEM);
  3. });

创建简单物品组

创建物品组之前,先决定是否有足够多的内容以至于需要自己的物品组。你的物品组会放置在单独的标签页中,影响可见性。

如果你认为需要自己的物品组,可以使用 FabricItemGroup.builder 方法来创建物品组的构建器,并调用 build 方法来完成:(注意,1.19.4以及更新的版本中,下面所示的builder方法不需要任何参数,且代码略有区别,请参考英文原版https://fabricmc.net/wiki/tutorial:itemgroup

  1. private static final ItemGroup ITEM_GROUP = FabricItemGroup.builder(new Identifier("tutorial", "test_group"))
  2. .icon(() -> new ItemStack(CUSTOM_ITEM))
  3. .build();

你可以使用 ITEM_GROUP 来修改内容,注意必须依次添加,因为没有原版物品可以作为相对位置:

  1. ItemGroupEvents.modifyEntriesEvent(ITEM_GROUP).register(content -> {
  2. content.add(CUSTOM_ITEM);
  3. });

zh_cn/tutorial/itemgroup.1692277355.txt.gz · Last modified: 2023/08/17 13:02 by wjz_p