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

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

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

MCBBS Wiki GitHub群组已上线!

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

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

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

用户:MashKJo/1.12.2模组开发教程/7.自定义创造模式物品栏

来自MCBBS Wiki
MashKJo留言 | 贡献2024年12月8日 (日) 20:53的版本 (// Edit via Wikiplus)
跳到导航 跳到搜索

读者可能已经注意到了:之前笔者添加的新物品,都是放在“杂项”这一创造模式物品栏中的——那么我们可不可以自定义我们的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,但其实际显示的地方没这么大,其右下角的部分是透明,这块你根据原版的相关材质改就行。