侧边栏壁纸
博主头像
呱仔爱学习 博主等级

✨基础不牢,地动山摇✨

  • 累计撰写 11 篇文章
  • 累计创建 4 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

NeoForge Mod开发(二)

呱仔
2026-05-11 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

简单物品的开发,不包含任何交互逻辑

一、物品注册

1、定义物品注册类

import cloude.abaaba.tutorial.TutorialMod;
import net.minecraft.world.item.Item;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister;

/**
 * ModItems 物品注册
 *
 * @author Pig-Gua
 * @date 2026-05-10
 */
public class ModItems {

    public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(TutorialMod.MODID);

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

2、在主类中进行全局注册

/**
 * TutorialMod 主类
 *
 * @author Pig-Gua
 * @date 2026-05-10
 */
@Mod(TutorialMod.MODID)
public class TutorialMod {

    public TutorialMod(IEventBus modEventBus, ModContainer modContainer) {
        //...

        // 全局注册物品
        ModItems.register(modEventBus);

        //...
    }
}

二、创建物品

物品属性

import cloude.abaaba.tutorial.TutorialMod;
import net.minecraft.world.item.Item;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister;

/**
 * ModItems 物品注册
 *
 * @author Pig-Gua
 * @date 2026-05-10
 */
public class ModItems {

    public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(TutorialMod.MODID);

    // 自定义物品
    public static final DeferredItem<Item> PIG_GUA = ITEMS.registerSimpleItem("pig_gua", Item.Properties::new);

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

物品材质

1、物品定义

  • 文件位置: resource > assets > [mod_id] > items > [物品id.json]

  • 文件名:需要和物品的id对应

  • 示例如下:该物品的model文件,在 tutorial_mod 的 models 文件夹,下面的 item > pig_gua.json

{
  "model": {
    "type": "minecraft:model",
    "model": "tutorial_mod:item/pig_gua"
  }
}

2、model定义

  • 文件位置: resource > assets > [mod_id] > models > (上述文件定义的路径,如:item > pig_gua.json)

  • 示例如下:该物品只有一个材质,在 tutorial_mod 的 textures 文件夹,下面的 item > pig_gua.png

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "tutorial_mod:item/pig_gua"
  }
}

3、textures定义

  • 文件位置:resource > assets > [mod_id] > textures > (上述文件定义的路径,如:item > pig_gua.png)

  • 图片大小:16*16像素(推荐),或者 32*32,64*64 等

  • 图片颜色:标准 8-bit 索引颜色 PNG(调色板 256 色)

三、创造标签栏

在主类中,将物品添加到创造模式物品栏

/**
 * TutorialMod 主类
 *
 * @author Pig-Gua
 * @date 2026-05-10
 */
@Mod(TutorialMod.MODID)
public class TutorialMod {

    public TutorialMod(IEventBus modEventBus, ModContainer modContainer) {
        //...

        // 添加事件监听
        modEventBus.addListener(this::addCreative);

        //...
    }

    /**
     * 将物品添加到创造模式Tab栏中
     *
     * @param event 创建 "创造模式Tab栏内容" 事件
     */
    private void addCreative(BuildCreativeModeTabContentsEvent event) {
        // 建筑方块 Tab 栏
        if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) {
            // 添加自定义物品
            event.accept(ModItems.PIG_GUA);
        }
    }
}

四、效果演示

0

评论区