Skip to content

进阶:农场模组 ​

在上一节中,我们制作了一个简单的熔炉配方。这一节我们来做一个更有趣的项目——自定义农场模组,包含自定义农作物、自定义食物和多个配方的联动。

你将学到

  • 创建自定义方块(番茄作物)
  • 创建自定义物品(番茄、番茄种子、番茄汤)
  • 创建多个配方让它们联动起来
  • 创建掉落表控制作物掉落物

项目设计 ​

我们要制作一个完整的番茄农场玩法链:

番茄种子 --[种植]--> 番茄作物方块 --[采集]--> 番茄 + 番茄种子
番茄 + 碗 --[工作台合成]--> 番茄汤(可食用)
番茄 --[熔炉烧制]--> 干番茄片(可食用,饱食度更高)

这意味着我们需要创建:

  • 1 个自定义方块(番茄作物)
  • 3 个自定义物品(番茄种子、番茄、番茄汤/干番茄片)
  • 1 个掉落表(作物被破坏时掉落番茄和种子)
  • 2 个配方(工作台合成 + 熔炉烧制)

第一步:创建自定义物品 ​

在编辑器中依次创建 3 个物品配置。

1.1 创建番茄种子 ​

  1. 在「资源管理」面板点击「新建」→「配置」→「物品」
  2. 名称输入 tomato_seeds
  3. 在右侧属性面板中设置:
属性值
物品分类(category)nature
最大堆叠数(max_stack_size)64
  1. 为物品设置贴图:在属性面板中找到「图标」(icon)属性,选择或导入一张种子贴图

贴图资源

如果暂时没有美术资源,可以先使用原版贴图作为占位。原版贴图位于:MCStudioDownload\game\MinecraftPE_Netease\{版本号}\data\resource_packs\vanilla\textures\items\

1.2 创建番茄 ​

  1. 新建物品配置,名称 tomato
  2. 设置属性:
属性值
物品分类nature
最大堆叠数64
  1. 添加 minecraft:food 特性(点击属性面板的「+」按钮,搜索 food):
食物属性值说明
nutrition4回复的饥饿值(同苹果)
saturation_modifierlow饱和度等级

关于 saturation_modifier 格式

中国版使用 format_version 1.10,saturation_modifier 接受字符串值:poor(0.1)、low(0.3)、normal(0.6)、good(0.8)、max(1.0)、supernatural(1.2)。括号内为对应的饱和度系数。国际版在更高 format_version 中改用数值直接指定系数(如 0.6),注意区分。

  1. 添加 minecraft:use_duration 特性,值设为 32(表示食用需要 32 tick,约 1.6 秒,和原版苹果一致)

  2. 添加 minecraft:tags 特性,添加标签 minecraft:is_food(标记为食物,游戏引擎需要此标签识别食品)

  3. 设置贴图

资源包侧的食物配置

如果你后续手动编辑资源包 JSON,还需要在 netease_items_res 的物品 JSON 中添加 "minecraft:use_animation": "eat" 组件,让食物在食用时播放进食动画。通过编辑器的配置创建时,这一步通常会自动处理。

1.3 创建番茄汤 ​

  1. 新建物品配置,名称 tomato_soup
  2. 设置属性:
属性值
物品分类items
最大堆叠数1(和原版蘑菇煲一致)
  1. 添加 minecraft:food 特性:
食物属性值说明
nutrition8高饱食度(和原版蘑菇煲一致)
saturation_modifiernormal中等饱和度
  1. 添加 minecraft:use_duration,值设为 32
  2. 添加 minecraft:tags,标签 minecraft:is_food
  3. 设置贴图

保存所有物品配置(Ctrl + S)。

第二步:创建自定义方块 ​

2.1 创建番茄作物方块 ​

  1. 在「资源管理」→「新建」→「配置」→「方块」
  2. 名称输入 tomato_crop
  3. 在属性面板中设置基础属性:
属性值说明
注册到创造栏true方便测试时找到
破坏时间0作物应该可以瞬间打破
亮度0作物不发光
爆炸抗性0作物不抗爆炸
  1. 添加 minecraft:collision_box 特性,值设为 false(作物没有碰撞箱,玩家和生物可以穿过)

  2. 添加 minecraft:placement_filter 特性,设置条件为:只能放置在耕地(minecraft:farmland)的上方

为什么需要 placement_filter?

如果不设置 placement_filter,作物方块可以放在任何方块上面,包括石头、泥土甚至空气。真正的农作物应该只能种在耕地上。placement_filter 的配置如下:

json
"minecraft:placement_filter": {
  "conditions": [
    {
      "allowed_faces": ["up"],
      "block_filter": ["minecraft:farmland"]
    }
  ]
}

通过编辑器的「+」按钮添加此特性时,搜索 placement_filter,然后在 allowed_faces 中选择 up,在 block_filter 中添加 minecraft:farmland。

  1. 设置方块贴图:选择或导入一张作物贴图

关于作物生长阶段

完整的作物生长阶段(种子→幼苗→成熟)需要使用方块状态(Block States)和 JSON 手动配置,这超出了编辑器可视化操作的范围。本教程先创建一个简化版——单阶段作物方块。后续你可以在 自定义方块 文档中学习完整的多阶段作物实现。

第三步:创建掉落表 ​

掉落表控制方块被破坏时掉落什么物品。

  1. 在「资源管理」→「新建」→「配置」→「掉落表」
  2. 名称输入 tomato_crop_loot
  3. 在属性面板中添加掉落条目:
掉落物数量说明
{你的命名空间}:tomato1-3掉落 1-3 个番茄
{你的命名空间}:tomato_seeds0-2掉落 0-2 个番茄种子
  1. 回到方块配置 tomato_crop,在属性面板中找到 minecraft:loot 属性,将它指向刚创建的掉落表

保存。

第四步:创建联动配方 ​

4.1 工作台合成:番茄汤 ​

  1. 新建配方配置,名称 tomato_soup_recipe
  2. 设置属性:
属性值
配方类型无序合成
适用方块工作台
配方成分{命名空间}:tomato × 3 + minecraft:bowl × 1
配方结果{命名空间}:tomato_soup
结果数量1

4.2 熔炉烧制:干番茄片 ​

  1. 新建配方配置,名称 dried_tomato_recipe
  2. 设置属性:
属性值
配方类型熔炉配方
适用方块熔炉
输入{命名空间}:tomato
输出minecraft:dried_kelp(暂用干海带代替,后续可换成自定义物品)

保存所有配置。

第五步:测试整个农场系统 ​

  1. 点击编辑器右上角「运行」
  2. 进入游戏后,打开物品栏搜索你的命名空间(例如 my_first_mod)
  3. 依次验证:
测试项操作预期结果
番茄可食用拿着番茄,长按右键食用动画播放,饥饿值回复
番茄作物掉落放置番茄作物方块,打破它掉落番茄和番茄种子
番茄汤合成工作台放入 3 个番茄 + 1 个碗合成出番茄汤
熔炉烧制熔炉放入番茄 + 燃料产出干海带(代替干番茄片)
番茄汤可食用拿着番茄汤,长按右键食用动画播放,回复更多饥饿值

小结 ​

在这一节中,你学会了:

  • 创建多个自定义物品并配置食物属性
  • 创建自定义方块并设置基础属性
  • 创建掉落表控制方块掉落物
  • 创建多个配方(工作台合成 + 熔炉烧制)
  • 让多种自定义内容联动形成完整的玩法链

这些内容全部通过编辑器的可视化配置完成,没有编写任何代码。

接下来,让我们挑战更复杂的内容——自定义生物。