User Tools

Site Tools


zh_cn:tutorial:itemgroup

物品组

这是 1.20+ 版本的教程,对于 1.19 版本,请阅读创建物品组(1.19)

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

添加物品组

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

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

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

这个 modification event 也能够进行更加精细化的控制,例如将你的自定义物品放在特定的位置(例如,在 OAK_DOOR 的后面)或者其他的高级修改。每个你需要修改的物品组都需要自己的事件处理器,当然,同一个事件处理器可以用于给一个物品组添加多个物品。

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

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

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

创建简单物品组

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

如果你认为需要自己的物品组,可以使用 FabricItemGroup.builder 方法来创建物品组的构建器,并调用 build 方法来完成:

  1. private static final ItemGroup ITEM_GROUP = FabricItemGroup.builder()
  2. .icon(() -> new ItemStack(CUSTOM_ITEM))
  3. .displayName(Text.translatable("itemGroup.tutorial.test_group"))
  4. .entries((context, entries) -> {
  5. entries.add(CUSTOM_ITEM);
  6. })
  7. .build();

你可以在 entries 方法中,将物品添加到你的物品组中。注意,不像原版的物品组,当你添加与已存在的物品相对位置的物品时,必须往你自己的物品组添加物品,因为没有原版的物品可以用来做为相对位置。

必须设置显示名称,否则会导致崩溃。

下一部是注册你的物品组。

  1. Registry.register(Registries.ITEM_GROUP, new Identifier("tutorial", "test_group"), ITEM_GROUP);

zh_cn/tutorial/itemgroup.txt · Last modified: 2023/11/18 08:09 by solidblock