复杂:牧场模组
在上一节中,我们用编辑器的可视化配置做了一个完整的农场模组。这一节我们继续扩展——制作一个牧场模组,加入自定义生物、交易系统和生成规则。
难度提升
本节部分内容需要手动编辑 JSON 文件,因为编辑器的可视化配置目前不支持实体的事件、组件组和资源包配置。你需要用文本编辑器(如 VS Code)打开项目目录中的 JSON 文件进行修改。
你将学到
- 创建自定义生物(番茄鸡——吃番茄的变种鸡)
- 配置生物的行为和外观(基于原版鸡的模板)
- 创建自定义生物蛋
- 创建掉落表控制生物掉落物
- 创建交易表实现 NPC 交易
- 创建生成规则让生物自然生成
项目设计
我们要在上一节的番茄农场基础上,扩展出一个牧场系统:
番茄鸡(自定义生物)
├── 外观:基于原版鸡,但带红色贴图
├── 掉落:死亡掉落番茄 + 羽毛
├── 生成:在平原自然生成
└── 生物蛋:可在创造模式使用
农场商人(自定义 NPC)
├── 外观:基于原版村民
└── 交易:用番茄换取绿宝石、用绿宝石买番茄种子第一步:创建自定义生物——番茄鸡
1.1 通过编辑器创建实体配置
- 在「资源管理」→「新建」→「配置」→「实体」
- 在数据模板中选择「chicken」(鸡)——这样我们的番茄鸡会继承原版鸡的所有行为
- 不要勾选「覆盖模板数据」(我们是创建新生物,不是替换原版鸡)
- 名称输入
tomato_chicken - 点击创建
编辑器会基于原版鸡的数据生成一套完整的实体配置。你可以在属性面板中修改部分基础属性:
| 属性 | 值 | 说明 |
|---|---|---|
| 生命值(health) | 6 | 比原版鸡(4)稍高 |
| 移动速度(movement) | 0.25 | 和原版鸡一致 |
1.2 手动修改资源包(换贴图)
编辑器创建的实体会复用原版鸡的模型和贴图。要让番茄鸡看起来不同,我们需要手动操作:
- 在 MC Studio 中找到作品,点击「更多」→「打开目录」
- 进入
resource_pack_xxx/textures/entity/目录 - 复制原版鸡的贴图(可从
MCStudioDownload\game\MinecraftPE_Netease\{版本}\data\resource_packs\vanilla\textures\entity\chicken.png获取) - 用绘图工具将贴图修改为偏红色调,保存为
tomato_chicken.png - 打开
resource_pack_xxx/entity/目录,找到番茄鸡的资源包 JSON 文件 - 将其中的贴图路径改为你的新贴图:
"textures": {
"default": "textures/entity/tomato_chicken"
}打开目录的位置
MC Studio 的作品目录通常在 MCStudioDownload 文件夹下。通过「更多」→「打开目录」可以直接跳转到对应的作品文件夹。
1.3 创建生物蛋
- 在「资源管理」→「新建」→「配置」→「物品」
- 名称输入
tomato_chicken_egg - 在
description中设置custom_item_type为egg - 关联到你的番茄鸡实体标识符(
{命名空间}:tomato_chicken)
这样你就能在创造模式中使用生物蛋来生成番茄鸡了。
第二步:创建掉落表
番茄鸡死亡时应该掉落番茄(来自我们的农场模组)和羽毛。
- 新建掉落表配置,名称
tomato_chicken_loot - 设置掉落条目:
| 掉落物 | 数量 | 说明 |
|---|---|---|
{命名空间}:tomato | 1-3 | 掉落番茄 |
minecraft:feather | 0-2 | 掉落羽毛 |
- 将掉落表关联到番茄鸡的实体配置:在实体属性面板中找到
minecraft:loot组件,设置为刚创建的掉落表路径
第三步:创建生成规则
让番茄鸡在特定的生物群系中自然生成。
- 新建生成规则配置,名称
tomato_chicken_spawn - 在属性面板中设置:
| 属性 | 值 | 说明 |
|---|---|---|
| 实体标识符 | {命名空间}:tomato_chicken | 要生成的实体 |
| 数量控制(population_control) | animal | 使用动物类的数量控制池 |
| 生成权重(weight) | 6 | 生成概率(原版鸡是 10) |
| 最小群组大小 | 2 | 至少同时生成 2 只 |
| 最大群组大小 | 4 | 最多同时生成 4 只 |
添加
minecraft:spawns_on_surface组件(设为空对象{}),声明实体在地表生成添加生物群系过滤条件,限制只在平原和向日葵平原生成
生成规则的关键组件
手动编辑 JSON 时,一个完整的生成规则至少需要以下结构:
{
"format_version": "1.8.0",
"minecraft:spawn_rules": {
"description": {
"identifier": "{命名空间}:tomato_chicken",
"population_control": "animal"
},
"conditions": [
{
"minecraft:spawns_on_surface": {},
"minecraft:weight": { "default": 6 },
"minecraft:herd": { "min_size": 2, "max_size": 4 },
"minecraft:biome_filter": {
"test": "has_biome_tag",
"value": "plains"
}
}
]
}
}population_control可选值:animal、underwater_animal、monster、ambient,控制生成和消失的数量上限minecraft:spawns_on_surface声明在地表生成(对应还有spawns_underground和spawns_underwater)- 通过编辑器创建时这些通常已自动处理,但理解其结构有助于调试
第四步:创建农场商人
4.1 创建商人实体
- 新建实体配置,数据模板选择「villager_v2」(村民)
- 不要勾选覆盖
- 名称输入
farm_trader - 修改基础属性:
| 属性 | 值 | 说明 |
|---|---|---|
| 生命值 | 20 | 比普通村民更耐打 |
| 移动速度 | 0.2 | 稍慢,显得稳重 |
4.2 创建交易表
- 新建交易表配置,名称
farm_trader_trades - 添加交易条目:
| 交易 | 输入 | 输出 | 说明 |
|---|---|---|---|
| 卖番茄 | {命名空间}:tomato × 16 | minecraft:emerald × 1 | 玩家用番茄换绿宝石 |
| 买种子 | minecraft:emerald × 1 | {命名空间}:tomato_seeds × 8 | 玩家用绿宝石买种子 |
| 买番茄汤 | minecraft:emerald × 2 | {命名空间}:tomato_soup × 1 | 玩家买番茄汤 |
- 将交易表关联到农场商人实体
交易表配置
交易表在编辑器中有完整的可视化支持。每个交易条目可以设置输入物品(1-2 种)、输出物品、最大交易次数等属性。
4.3 手动配置商人行为(JSON)
要让农场商人能被右键打开交易界面,需要手动在行为包 JSON 中确保包含 minecraft:trade_table 组件。
通过 MC Studio 的「更多」→「打开目录」找到行为包目录,打开 entities/ 下的农场商人 JSON 文件,在 components 中确认包含:
"minecraft:trade_table": {
"display_name": "entity.{命名空间}:farm_trader.name",
"table": "trading/farm_trader_trades.json",
"new_screen": true
}| 字段 | 说明 |
|---|---|
display_name | 交易界面标题,引用 zh_CN.lang 中的实体名称 |
table | 交易表 JSON 文件路径,相对于行为包根目录 |
new_screen | 使用新版交易界面 |
交易组件的两种写法
中国版基于村民模板创建的实体通常使用 minecraft:economy_trade_table(现代村民的交易组件,支持经验升级和多层级交易)。而 minecraft:trade_table 是更简单的版本(适用于流浪商人等不需要升级的 NPC)。
如果你的商人是基于 villager_v2 模板创建的,模板中已自动包含 minecraft:economy_trade_table,直接修改其 table 路径指向你的交易表文件即可。如果是从零创建的简单 NPC,使用 minecraft:trade_table 更合适。
在 resource_pack_xxx/texts/zh_CN.lang 中添加中文名称:
entity.{命名空间}:farm_trader.name=农场商人
entity.{命名空间}:tomato_chicken.name=番茄鸡第五步:完整测试
保存所有配置后运行测试,逐项验证:
| 测试项 | 操作 | 预期结果 |
|---|---|---|
| 番茄鸡生物蛋 | 创造模式搜索并使用生物蛋 | 生成带红色贴图的鸡 |
| 番茄鸡掉落 | 击杀番茄鸡 | 掉落番茄和羽毛 |
| 自然生成 | 在平原探索 | 能看到自然生成的番茄鸡 |
| 农场商人交易 | 使用生物蛋生成商人,右键交互 | 打开交易界面 |
| 用番茄换绿宝石 | 放入 16 个番茄 | 获得 1 个绿宝石 |
| 用绿宝石买种子 | 放入 1 个绿宝石 | 获得 8 个番茄种子 |
| 完整链路 | 种植→采集→交易→买种子→种植 | 形成可持续的游戏循环 |
整个农牧模组的玩法链路
到这里,我们的农场 + 牧场模组已经形成了一个完整的经济循环:
┌─────────────────────────┐
│ 番茄种子 │
└──────────┬──────────────┘
│ 种植
┌──────────▼──────────────┐
│ 番茄作物方块 │
└──────────┬──────────────┘
│ 采集/掉落
┌──────────▼──────────────┐
│ 番茄 │
└──┬───────┬──────┬───────┘
│ │ │
┌────────▼─┐ ┌──▼───┐ │
│ +碗=番茄汤│ │熔炉 │ │16个
└──────────┘ │=干番茄│ │
└──────┘ │
┌─────────────────▼───────┐
│ 农场商人: 换取绿宝石 │
│ 绿宝石 → 买回番茄种子 │
└─────────────────────────┘
┌─────────────────────────┐
│ 番茄鸡 │
│ 击杀掉落番茄+羽毛 │
│ 平原自然生成 │
└─────────────────────────┘小结
在这一节中,你学会了:
- 基于原版模板创建自定义生物(番茄鸡、农场商人)
- 通过手动编辑 JSON 自定义生物外观(贴图替换)
- 创建生物蛋方便测试
- 创建掉落表控制生物掉落
- 创建生成规则让生物在特定群系自然出现
- 创建交易表实现 NPC 买卖
- 多种自定义内容组合联动形成完整的经济循环
还能做什么?
如果你想让农牧模组更完善,还可以继续学习:
- Python 脚本开发:实现自定义生长机制、喂养繁殖逻辑、自定义 UI 仪表板
- 自定义维度:创建一个专属的农场维度世界
- 可视化编程:用蓝图逻辑编辑器实现复杂玩法,无需手写 Python
接下来,前往 下一步做什么 查看更多学习方向。
