Mods 使用与制作指南|安装、内容扩展与开发
Mods 为 Mindustry 添加或更改内容与行为——新的方块、物品、液体、单位、区块、星球和脚本钩子——允许社区创建的玩法、视觉和地图。本页总结了 mod 的结构、常见包含内容、如何获取或开发它们,以及使用时的实用建议。
一个 mod 可以包含的内容
- 新的方块(墙体、炮塔、工厂、发电方块、
传送带、特殊用途方块)。社区示例中展示的类型:自定义墙体、墙面瓦片和防御方块。
- 新的物品和液体(资源、燃料、流体,例如自定义液体)。
- 新的子弹/弹药类型和炮塔弹药映射(你可以添加或复制子弹并分配给炮塔)。
- 新的单位和单位工厂。
- 新的星球、区块和区块生成器(包括替换或扩充程序生成区块的隐藏或社区创建区块)。
- 方块的视觉资源与绘制层(regions、shadows、额外的绘制层)。
- 脚本、处理器与处理器链用于自定义行为,包括 Java/JavaScript 内容解析。
- Mod 端覆盖和联动方块行为,将物品、液体和能量处理转发到其他格子。
常见的技术模式和 API
- 内容扩展:Mods 通常通过继承基础类来创建新内容(例如继承 Wall 来制作自定义墙体,或继承 GenericCrafter 来制作工厂)。在创建内容时构造函数会设置 name、description 和像 solid 这样的标志。
- 复制与修改现有内容:你可以复制子弹、弹药类型或方块,修改字段(damage、visuals、requirements)并注册它们,从而避免修改原始内容。
- 物品/液体的接受与处理:方块可以重写 acceptItem/handleItem 和 acceptLiquid/handleLiquid,将处理委托给链接的格子或实现自定义路由逻辑。能量钩子同样可以将 addPower 调用委托给链接的格子。
- 绘制与层级:方块定义 regions,并可能指定额外的绘制层(layer2)或自定义阴影区域以丰富视觉效果。
- 建造可见性与需求:方块包含 buildVisibility、requirements、buildTime 和 size 字段,用以控制它们何时/如何出现以及如何被建造。
区块、星球与地图内容
- Mods 可以添加完整的区块和星球。社区创建的“隐藏”攻击地图被某些 mod 活动使用,并在种子中替换程序生成的区块;作者常在说明中标注资源与防御情况(例如富含
脉冲地雷 的地图,或终局防御采用
塑钢/
相织布墙 的地图)。
- 在测试时可以通过控制台标志使星球可访问或可见(例如:Planets.
.accessible = Planets. .alwaysUnlocked = true)。
开发 mod:语言与工具
- 支持 Java 和 JavaScript 来创建 mods。mod 制作者工作流可使用 Java 进行核心更改,或使用类 ContentParser 的脚本来进行类似 JSON 的内容创建。
- 必要的 mod 资源:典型包含 items、liquids、blocks、units、bullets、planets/sectors 的定义以及本地化包(name/description)。
- 初学者应从复制并编辑示例内容(墙体、炮塔、子弹)开始,而不是从零重写。
- 有用的 mod 学习领域:物品与液体、工厂(GenericCrafter)、生产/电力方块、炮塔绘制部件、特效/音效/状态、单位/武器/能力、星球/区块/生成,以及在游戏代码中定位类/字段。
- 工具与流程:许多 mod 制作者在 Java 和 JavaScript(JavaJS)之间切换,并在合适时使用社区工具(ACD、ContentParser)。
安装与访问 mods
- 在 Android 上,官方正式版与测试版可通过 Google Play 获得(成为测试版用户以获取最新构建)。iOS 的测试构建通过 TestFlight 分发。
- 一些 mod 内容或隐藏的物品/星球可以通过开发者控制台(按 F8)解锁或设为可见,方法是将星球或对象的可见性标志设置为 true。
- 官方 mod 内容:一些 mod 由开发者撰写并以“官方 mod”形式在社区内分发;这些会出现在 mod 列表中,但其行为如同社区 mod。
示例片段与模式
- 将自定义子弹分配给现有炮塔的弹药表(JavaScript 风格):
- 示例:方块.duo.ammoTypes.put(Items.pyratite, 方块.hail.ammoTypes.get(Items.pyratite))
- 复制子弹并更改属性:
- 示例模式:bullet = 方块.hail.ammoTypes.get(Items.graphite).copy(); bullet.damage = 200; 方块.hail.ammoTypes.put(Items.titanium, bullet)
- 最小化的自定义墙体定义(类似 JavaScript):
- 示例模式展示在扩展 Wall 时如何设置 region、health、category、size、requirements、buildTime、icons 和 description。
最佳实践与社区规范
- 在可能的情况下重用并复制现有内容,以保持与游戏平衡和视觉的兼容性。
- 将本地化键保存在 Bundles(block.[name].name 和 block.[name].description)中以支持翻译。
- 在发布前使用控制台可见性标志测试新的区块与星球。
- 如果你会用 Java 编码,则通过 issue 报告或 pull request 来贡献 bug 修复;加入社区频道以参与翻译、讨论和反馈。
- 在创建复杂的联动方块时,确保被覆盖的方法正确地将 accept/handle 函数和能量路由委托给链接的格子,以避免供应链中断。
mods 的使用场景
- Mods 为自定义生存地图、社区制作的攻击区块、新的战役内容和为创作者提供的质量改进工具提供支持。
- 一些官方和社区 mod 被打包为插件并通过 mod 浏览器或外部托管分发。
本指南概述了在使用或制作 Mindustry mods 时会遇到的常见结构与工作流:内容扩展、资源与行为覆盖、区块/星球添加,以及测试与分发的实用步骤。