MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
用户:MashKJo/1.12.2模组开发教程/7.自定义创造模式物品栏
读者可能已经注意到了:之前笔者添加的新物品,都是放在“杂项”这一创造模式物品栏中的——那么我们可不可以自定义我们的Mod的独有创造模式物品栏呢?当然可以。
所有创造模式物品栏都是net.minecraft.creativetab.CreativeTabs
的实例,这个类是抽象类,且只有一个抽象方法:ItemStack getTabIconItem()
,这个方法用于决定该创造模式物品栏的显示的图标,它返回一个ItemStack实例。另外,CreativeTabs还有2个构造方法:(String label)
和(int index, String label)
,我们应该用前者,而后者是给原版的CreativeTabs用的——毕竟后者可以显式指定CreativeTabs的数字ID,显然Modder不该用这个,否则兼容性会被搞得一塌糊涂。
如果你没什么特殊的需求,只需要弄个匿名内部类就可以了:
public static final CreativeTabs TUTORIAL_MOD_TAB = new CreativeTabs("tutorial_mod"){ @Override public ItemStack getTabIconItem(){ return new ItemStack(TutorialModItems.RUBY); } };
此外,创造模式物品栏名称的本地化键名为"itemGroup." + label
,例如,上述代码定义的创造模式物品栏,其名称的本地化键名为itemGroup.tutorial_mod
。
另外,CreativeTabs类中还有一些方法可以覆写,借此你可以控制:是否有搜索框、搜索框宽度、创造模式物品栏背景图,等等。这里笔者再讲一下设定背景图的方法:setBackgroundImageName。这个方法传入一个String——没错,不是ResourceLocation,很意外吧?这个String中应该包含材质文件的扩展名——其实只能是.png。如,笔者传入"tutorial_mod.png"
,那么该文件的实际路径为assets/[modid]/textures/gui/container/creative_inventory/tabs_tutorial_mod.png
。没错,Mojang在这里不仅硬编码了该文件的父级目录,甚至还包括文件名本身——这是什么离谱的设计??最后,该文件的尺寸,只能是256×256,但其实际显示的地方没这么大,其右下角的部分是透明,这块你根据原版的相关材质改就行。
向创造模式物品栏中手动添加ItemStack
很简单,只需要覆写displayAllRelevantItems这个方法即可,该方法的默认实现为:遍历物品的注册表,并调用所有已经注册的Item实例的getSubItems方法。如果我们想把原版的某个东西加个特殊的附加NBT,塞进我们的Mod的创造模式物品栏里,该怎么做?虽然是个特别奇怪的需求,但真的可以做到。注意覆写该方法的时候,先调用super.displayAllRelevantItems这个方法。