项目结构
src
├── main
│ ├── java
│ │ ├── com
│ │ │ ├── XXXYJade17
│ │ │ │ └── TestMod
│ │ │ │ ├── Registry.java //注册类
│ │ │ │ ├── ModCreativeTab .java //自定义物品栏
│ │ │ │ └── TestMod.java //Mod主程序
│ └── resources
│ ├── assets
│ │ ├── testmod
│ │ │ ├── lang
│ │ │ │ ├── en_us.json // 英文语言文件
│ │ │ │ └── zh_cn.json // 中文语言文件
一.创建物品栏的注册器(与Block和Item类似)
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS =
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, TestMod.MODID);
二.注册物品栏,并且添加物品
public static final String EXAMPLE_MOD_TAB_STRING = "creativetab.example_tab";
这里可以将物品栏的名字定义为一个变量
public static final Supplier<CreativeModeTab> EXAMPLE_TAB =
CREATIVE_MODE_TABS.register("example_tab",
() -> CreativeModeTab.builder()
.withTabsBefore(CreativeModeTabs.COMBAT) //将自定义标签页插入原版"战斗"标签页之前
.title(Component.translatable(EXAMPLE_MOD_TAB_STRING)) //设置标签名
.icon(() -> new ItemStack(Registry.EXAMPLE_ITEM_01.get())) //设置物品栏图标
.displayItems((pParameters, pOutput) -> {
pOutput.accept(Registry.EXAMPLE_ITEM_01.get()); //添加物品到物品栏
pOutput.accept(Registry.EXAMPLE_ITEM_02.get());
pOutput.accept(Registry.EXAMPLE_BLOCK_01.get());
pOutput.accept(Registry.EXAMPLE_BLOCK_02.get());
})
.build());
三.添加语言文件
同Block和Item
//en_us.json
{
"creativetab.example_tab": "Example Tab"
}
//zh_cn.json
{
"creativetab.example_tab": "示例创造模式标签"
}