User Tools

Site Tools


zh_cn:tutorial:itemgroup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
zh_cn:tutorial:itemgroup [2023/08/17 13:02] – [创建简单物品组] wjz_pzh_cn:tutorial:itemgroup [2023/11/18 08:09] (current) solidblock
Line 1: Line 1:
 ====== 物品组 ====== ====== 物品组 ======
 +
 +//这是 1.20+ 版本的教程,对于 1.19 版本,请阅读[[1.19:itemgroup|创建物品组(1.19)]]。//
  
 现在,你可以使用命令 ''/give @s tutorial:custom_item'' 来获得你的物品。要让物品更容易获得,你需要将其添加到创造模式物品栏的物品组中。你也可以添加自己的物品组。所有添加到了物品组中的物品都可以在创造模式物品栏中搜索。 现在,你可以使用命令 ''/give @s tutorial:custom_item'' 来获得你的物品。要让物品更容易获得,你需要将其添加到创造模式物品栏的物品组中。你也可以添加自己的物品组。所有添加到了物品组中的物品都可以在创造模式物品栏中搜索。
Line 8: Line 10:
  
 然后,在你的 ''onInitialize'' 方法中,为这个物品组添加事件处理器。每个需要修改的物品组都需要一个自己的监听器,但可以使用同一个监听器来将多个物品添加到同一个物品组中。 然后,在你的 ''onInitialize'' 方法中,为这个物品组添加事件处理器。每个需要修改的物品组都需要一个自己的监听器,但可以使用同一个监听器来将多个物品添加到同一个物品组中。
 +<yarncode java [enable_line_numbers="true"]>
 +ItemGroupEvents.modifyEntriesEvent(class_7706.field_40195).register(content -> {
 + content.add(CUSTOM_ITEM);
 +});
 +</yarncode>
 +
 +这个 modification event 也能够进行更加精细化的控制,例如将你的自定义物品放在特定的位置(例如,在 ''<yarn field_8691>'' 的后面)或者其他的高级修改。每个你需要修改的物品组都需要自己的事件处理器,当然,同一个事件处理器可以用于给一个物品组添加多个物品。
  
 物品可以添加到一个相对于原版物品的位置。仔细思考你的模组的用户会期望物品出现在哪里。例如,如果你添加一种新的类型的木头,那么将其添加到已有木头的后面或许是最合理的。 物品可以添加到一个相对于原版物品的位置。仔细思考你的模组的用户会期望物品出现在哪里。例如,如果你添加一种新的类型的木头,那么将其添加到已有木头的后面或许是最合理的。
Line 24: Line 33:
 创建物品组之前,先决定是否有足够多的内容以至于需要自己的物品组。你的物品组会放置在单独的标签页中,影响可见性。 创建物品组之前,先决定是否有足够多的内容以至于需要自己的物品组。你的物品组会放置在单独的标签页中,影响可见性。
  
-如果你认为需要自己的物品组,可以使用 ''FabricItemGroup.builder'' 方法来创建物品组的构建器,并调用 ''build'' 方法来完成:(注意,1.19.4以及更新的版本中,下面所示的builder方法不需要任何参数,且代码略有区别,请参考英文原版https://fabricmc.net/wiki/tutorial:itemgroup)+如果你认为需要自己的物品组,可以使用 ''FabricItemGroup.builder'' 方法来创建物品组的构建器,并调用 ''build'' 方法来完成:
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
-private static final class_1761 ITEM_GROUP = FabricItemGroup.builder(new class_2960("tutorial", "test_group"))+private static final class_1761 ITEM_GROUP = FabricItemGroup.builder()
  .icon(() -> new class_1799(CUSTOM_ITEM))  .icon(() -> new class_1799(CUSTOM_ITEM))
 + .displayName(class_2561.method_43469("itemGroup.tutorial.test_group"))
 +        .entries((context, entries) -> {
 + entries.add(CUSTOM_ITEM);
 + })
  .build();  .build();
 </yarncode> </yarncode>
  
-你可以使用 ''ITEM_GROUP'' 来修改内容,注意必须依次添加,因为没有原版物品可以为相对位置+你可以在 ''entries'' 方法中将物品添加到你的物品组中。注意,不像原版的物品组,当你添加与已存在的物品相对位置的物品时,必须往你自己的物品组添加物品,因为没有原版物品可以用来做为相对位置。 
 + 
 +必须设置显示名称,否则会导致崩溃。 
 + 
 +下一部是注册你的物品组。
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
-ItemGroupEvents.modifyEntriesEvent(ITEM_GROUP).register(content -> { +class_2378.method_10230(class_7923.field_44687, new class_2960("tutorial", "test_group"), ITEM_GROUP);
- content.add(CUSTOM_ITEM)+
-});+
 </yarncode> </yarncode>
  
 {{:tutorial:item_group_append_items.png?nolink&400|}} {{:tutorial:item_group_append_items.png?nolink&400|}}
zh_cn/tutorial/itemgroup.1692277355.txt.gz · Last modified: 2023/08/17 13:02 by wjz_p