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

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

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

MCBBS Wiki GitHub群组已上线!

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

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

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

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

来自MCBBS Wiki
MashKJo留言 | 贡献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总线,并在语言文件中把创造模式物品栏的名称完成本地化。

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