Skip to content

02-物品栏

1. 将自定义物品添加到物品栏

首先编写一个添加方法,通过 FabricItemGroupEntries 中的 add 方法添加:

java
private static void addItemToItemGroup(FabricItemGroupEntries fabricItemGroupEntries)
{
    fabricItemGroupEntries.add(ICE_ETHER);
}

最后调用该方法:

java
public static void registerModItems()
{
    ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(ModItems::addItemToItemGroup);
    Testmod.LOGGER.info("Registering Items");
}

2. 创建物品栏

首先,新建 java 类 ./item/ModItemGroups.java

创建物品栏:

java
public static final ItemGroup TEST_GROUP = Registry.register(Registries.ITEM_GROUP,
        Identifier.of(Testmod.MOD_ID, "test_group"),
        ItemGroup.create(null, -1).displayName(Text.translatable("itemGroup.test_group"))
                .icon(() -> new ItemStack(ModItems.ICE_ETHER))
                .entries((displayContext, entries) -> {
                    entries.add(ModItems.ICE_ETHER);
                }).build());

接下来编写初始化(注册)方法:

java
public static void registerModItemGroups()
{
    Testmod.LOGGER.info("Registering Item Groups");
}
java
@Override
public void onInitialize()
{
    ModItems.registerModItems();
    ModItemGroups.registerModItemGroups();
}

3. 添加语言文件

resourses/assets/testmod/lang/en_us.jsonzh_cn.json 中添加下面语句:

java
{
  "item.testmod.ice_ether": "Ice Ether",
  "itemGroup.test_group": "Test Group"
}
java
{
  "item.testmod.ice_ether": "冰之以太",
  "itemGroup.test_group": "测试物品栏"
}

4. 完整代码

Details
java
package com.nckname.testmod;

import com.nckname.testmod.item.ModItemGroups;
import com.nckname.testmod.item.ModItems;
import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Testmod implements ModInitializer
{
    public static final String MOD_ID = "testmod";
    public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
    
    @Override
    public void onInitialize()
    {
        ModItems.registerModItems();
        ModItemGroups.registerModItemGroups();
    }
}
java
package com.nckname.testmod.item;

import com.nckname.testmod.Testmod;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;

public class ModItemGroups
{
    public static final ItemGroup TEST_GROUP = Registry.register(Registries.ITEM_GROUP,
            Identifier.of(Testmod.MOD_ID, "test_group"),
            ItemGroup.create(null, -1).displayName(Text.translatable("itemGroup.test_group"))
                    .icon(() -> new ItemStack(ModItems.ICE_ETHER))
                    .entries((displayContext, entries) -> {
                        entries.add(ModItems.ICE_ETHER);
                    }).build());

    public static void registerModItemGroups()
    {
        Testmod.LOGGER.info("Registering Item Groups");
    }
}