MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.21.1模组开发教程/5.2.创造模式物品栏:修订间差异

来自MCBBS Wiki
跳到导航 跳到搜索
(创建页面,内容为“显然,用/give命令获取我们注册进游戏的物品还是太麻烦了,我们还需要将新物品放进创造模式物品栏里。 == 修改已有的创造模式物品栏 == 如果你想将物品放入原版已有的创造模式物品栏,考虑监听事件BuildCreativeModeTabContentsEvent: //应该被注册到Mod总线中。 @SubscribeEvent public static void onBuildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { if(eve…”)
 
 
第8行: 第8行:
  public static void onBuildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) {
  public static void onBuildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) {
     if(event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
     if(event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
         event.accept(MyItemClass.MY_ITEM.get());
         event.accept(ModItems.ONE_EXAMPLE_ITEM.get());
     }
     }
  }
  }

2025年9月7日 (日) 01:15的最新版本

显然,用/give命令获取我们注册进游戏的物品还是太麻烦了,我们还需要将新物品放进创造模式物品栏里。

修改已有的创造模式物品栏

如果你想将物品放入原版已有的创造模式物品栏,考虑监听事件BuildCreativeModeTabContentsEvent:

//应该被注册到Mod总线中。
@SubscribeEvent
public static void onBuildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) {
   if(event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
       event.accept(ModItems.ONE_EXAMPLE_ITEM.get());
   }
}

自定义创造模式物品栏

不过更通常的做法是将物品塞进自己自定义的创造模式物品栏中,创造模式物品栏(CreativeModeTab)和物品一样,是注册项,因此需要通过延迟注册机制注册进游戏:

public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, TutorialMod.MODID);

public static final DeferredHolder<CreativeModeTab, CreativeModeTab> EXAMPLE_TAB = CREATIVE_MODE_TABS.register("example_tab", () -> CreativeModeTab.builder()
   .title(Component.translatable("creative_mode_tab.tutorialmod.example_tab"))
   //指定创造模式物品栏的名称,为了使其能本地化,调用Component.translatable()。
   .icon(() -> new ItemStack(...))
   //指定创造模式物品栏的图标,接受一个Supplier<ItemStack>,...处填写一个物品对象。
   .displayItems((parameters, output) -> {
       output.accept(...);
       ...
   })
   //用于指定该创造模式物品栏中陈列哪些物品,#accept方法接受ItemLike和ItemStack。
   .build());

记得把延迟注册器注册进Mod总线,并在语言文件中把创造模式物品栏的名称完成本地化。

进入游戏,开启创造模式,物品栏调到第二页,即可看到你的创造模式物品栏了。