准备工作

按照我的习惯,会创建一个名为setup的软件包,用来存放mod自定义的东西。

在软件包中新建一个类ModItems,用来存放mod注册的物品。

创建 DeferredRegister

  1. 将以下代码添加到类ModItems中,就可以创建一个DeferredRegister,用于我们mod物品的注册。

    // Mod 使用的 DeferredRegister
    public static final DeferredRegister.Items ITEM = DeferredRegister.createItems(TutorialMod.MODID);

    // 加载并将我们的 DeferredRegister 添加到事件总线中
    public static void register(IEventBus bus) {
    ITEM.register(bus);
    }

    此时的 ModItems.java

  2. 接着在Mod主类的构造方法中添加以下代码,用来调用上面的物品注册方法
    此时的 TutorialMod.java

注册新物品

  1. 添加以下代码到ModItems来注册一个最简单的物品,这里叫做红水晶好了

    public static final DeferredItem<Item> RED_CRYSTAL = ITEM.registerSimpleItem("red_crystal");
  2. 为这个物品添加 贴图和模型(目前模型为手动写,后面会教使用数据生成器来自动生成)

    • resources中新建文件夹,assets/你的modid/,在本教程的modid为tutorialmod
      ,所以就新建一个文件夹叫做assets/tutorialmod/
    • 新建一个文件夹 textures/item 用于存放物品贴图,并将准备好的贴图命名为你的物品id在放入这个文件夹
    • 新建一个文件夹 models/item 用于存放物品模型,并将准备好的模型命名为你的物品id在放入这个文件夹
    • 模型json文件可仿照下面来写
      {
      "parent": "item/generated",
      "textures": {
      "layer0": "tutorialmod:item/red_crystal"
      }
      }

    此时的文件结构大致如下:
    此时文件结构

  3. 为物品添加语言文件

    • 创建lang文件夹并新建文件en_us.json作为英文文本文件,中文的文本文件是 zh_cn.json

      物品的翻译键一般为item.modid.itemid,这里示例为item.tutorialmod.red_crystal

  4. 进入游戏检查是否成功注册

    • 现在还没有创造模式物品栏,可以使用give命令来获取注册的物品
      例:give @p tutorialmod:red_crystal
      img.png

此教程所写代码的GitHub仓库:https://github.com/DancingSnow0517/Tutorial-Mod-NeoForge/tree/1-custom_item