差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

modding:migrationv6 [2022/03/15 08:56] – 创建/转码 硫缺铅modding:migrationv6 [2022/03/16 14:35] (当前版本) – 翻译 硫缺铅
行 1: 行 1:
 +====== 6.0 迁移指南 ======
  
 +如果你的模组或插件是为 5.0 开发的,你//<del>极有</del>//可能发现在 6.0 内容的功能不再正常。这是由于内部功能的更改与添加导致的。所有变化将在此记录。
 +
 +===== 基础更改 =====
 +
 +==== 最低游戏版本 ====
 +
 +所有的模组必须包含一个名为 ''%%minGameVersion%%''的字段,而且值是一个比 105 大的数才能加载。这是为了让过时的模组不被加载。就是在 ''%%mod.hjson%%'' 加入一个 ''%%minGameVersion: 135%%'' 即可。
 +
 +===== 名称更改 =====
 +
 +==== 类名和变量名 ====
 +
 +''%%ItemTurret%%'':
 +
 +  * ''%%ammo%%'' -> ''%%ammoTypes%%''
 +  * ''%%reload%%'' -> ''%%reloadTime%%''
 +
 +''%%ArtilleryTurret%%'', ''%%BurstTurret%%'', ''%%ChargeTurret%%'':
 +
 +  * 已删除. 用 ''%%ItemTurret%%'' 或 ''%%PowerTurret%%'' 来代替; 所有功能都已合并到基类中。
 +
 +''%%BasicBulletType%%'':
 +
 +  * ''%%bulletWidth%%'' -> ''%%width%%''
 +  * ''%%bulletHeight%%'' -> ''%%height%%''
 +  * ''%%bulletSprite%%'' -> ''%%sprite%%''
 +
 +==== TileEntity -> Building ====
 +
 +''%%TileEntity%%'' 现在变成 ''%%Building%%''。因此,以前的“%%TileEntity%%”模型以及与其相关的任何函数(包含或提及“实体”)都已重命名,现在它们将“%%TileEntity%%”称为"building"或"build”。''%%Tile.entity%%'' 重命名为 ''%%Tile.build%%'',所有的 ''%%TileEntity%%'' 实例 (例如 ''%%RouterEntity%%''和''%%ConveyorEntity%%'')重命名为结尾带 "Build" 的 (例如''%%RouterBuild%%''和''%%ConveyorBuild%%'')。
 +
 +许多函数,如"%%draw()%%"或"%%placed()%%"已从在"%%Block%%"中声明转移到在"%%Building%%"中声明。这意味着这些函数不会通过"%%Tile%%",从而降低了特定块的行为复杂性。值得注意的是,"%%update(Tile tile)%%"已被移动到"%%Building%%"并重命名为"%%updateile()%%"
 +
 +==== Array -> Seq ====
 +
 + ''%%arc.struct.Array%%'' 重命名为 ''%%arc.struct.Seq%%'',其中 "%%Seq%%" 是 ''%%Sequence%%'' 的缩写。
 +
 +为什么?
 +
 +  * 准确, 数据结构并不是数组,它更像 ''%%ArrayList%%''
 +  * 他不会与其他名为''%%Array%%''冲突,比如 Java 的反射 API 和 JS 的数组。
 +  * 它更短,因为我懒。
 +
 +==== mindustry.plugin.Plugin -> mindustry.mod.Plugin ====
 +
 +''%%Plugin%%'' 类挪到了 ''%%mod%%'' 包,旧包将只包含一个类。(as翻译存疑)
 +
 +==== 删除调用方法的"on"前缀 ====
 +
 +"%%Call%%"中的所有远程调用方法都已删除其"on"前缀。例如:
 +
 +  * ''%%onSnapshot%%'' -> ''%%snapshot%%''
 +  * ''%%onSetRules%%'' -> ''%%setRules%%''
 +  * ''%%onLabel%%'' -> ''%%label%%''
 +
 +==== 新玩家系统 ====
 +
 +现在玩家能控制单位,他们不再是游戏中的无脑生物——也就是说,他们没有生命或武器。每一个动作都是由 ''%%Unit%%'' 执行。不再有 ''%%Mech%%'' 类,只有 ''%%UnitType%%''
 +
 +  * 每一个单位都有一个 ''%%UnitController%%'',可能为 AI,逻辑或者玩家(主语存疑)
 +  * 检查单位是否为玩家所控制,使用  ''%%unit.isPlayer()%%''
 +  * 得到控制单位的玩家,使用 ''%%unit.getPlayer()%%''
 +  * 设置玩家的位置毫无作用,用设置单位来代替