差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
modding:erekir-migration [2022/05/13 19:18] 硫缺铅modding:erekir-migration [未知日期] (当前版本) – 外部编辑 (未知日期) 127.0.0.1
行 1: 行 1:
 +====== Erekir分支代码友好相处指南======
  
 +===== 设置 =====
 +
 +这个指南面向Java(也有一点 Json),如果你用的是JS,就不用看了
 +
 +在一切之前,先看看[[modding:migrationv7|旧版迁移教程]],并且确保**你没用什么弃用的东西**,因为俄式英语中弃用就是**已经删了**的意思。这里完全不会去处理它们
 +
 +===== 如何在 JITPack 和 Gradle 中依赖于 Erekir 分支=====
 +
 +把  ''%%build.gradle%%''  里的Mindustry依赖项调成这样
 +
 +<code gradle>
 +compileOnly "com.github.Anuken.MindustryJitpack:core:935b478139"
 +compileOnly "com.github.Anuken.Arc:arc-core:dfcb21ce56"
 +</code>
 +
 +注意,jitpack项目现在是 MindustryJitpack 了,但**不是**Mindustry,JITPack太TM讨厌了,但是细说就是另外一件事了
 +如果想要Mindustry/Arc绝对的最新版本,把末尾的哈希值换成对应的最新版即可
 +
 +===== 武器/炮塔设计模版系统 =====
 +
 +  * 武器和炮塔现在有一个 ''%%ShootPattern shoot%%'' 字段
 +  *模版决定了炮管何时何地如何生成
 +  * 像 ''%%shots%%''、''%%chargeTime%%''、''%%spread%%'' 这样的字段挪到了这个模版当中
 +  *默认的射击模版没有分裂,并且只支持 ''%%firstShotDelay%%'' (充能)和 ''%%shotDelay%%'' (延迟发射)
 +
 +一些有趣的模版:
 +
 +  * ''%%ShootSpread%%'':可配置分裂的导弹发射
 +  * ''%%ShootAlternate%%'':双管/分裂双管发射
 +  * ''%%ShootBarrel%%'':类似上一个,但炮管可以任意位置任意方向
 +  * ''%%ShootMulti%%'':链式协同模版,所以你能整点活,比如每个炮管都发射的双管炮
 +
 +===== DrawBlock =====
 +大多数 DrawBlock 的基类都删了,都裁走了。方块的绘制器现在是模块化的了,所以你可以不必新建强耦合的 DrawBlock ,而是组建不同的层。
 +
 +例如,冷冻液混合器的绘制器如下:
 +
 +<code java>
 +drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(Liquids.cryofluid), new DrawDefault());
 +</code>
 +
 +  * DrawMulti 仅用来结合起来多个绘制步骤
 +  * DrawRegion 会绘制一个名为''%%cryofluid-mixer-bottom%%''的贴图作为第一层
 +  * DrawLiquidTile 会绘制一个流动的冷却液正方形贴图,不透明度取决于液体容积。
 +  * DrawDefault 绘制默认方块贴图(这个例子中,就是顶部玻璃材质)
 +
 +了解更多请查看[[https://github.com/Anuken/Mindustry/blob/master/core/src/mindustry/content/Blocks.java#L1017|源码]].
 +===== Turrets =====
 +
 +大多数字段改名成适用于炮塔的名字
 +
 +<code>
 +reloadTime -> reload
 +shootLength -> shootY
 +recoilAmount -> recoil
 +shootShake -> shake
 +chargeEffect/chargeBeginEffect -> 塞进子弹里了
 +xRand ->老子删了,你可能会用 ShootBarrel 代替冷却时间,没有简简单单的替换件,要么用cooldownTime要么用recoilTime
 +
 +#这两个寄吧东西不管就出现奇奇怪怪的bug克死你
 +
 +reload (TurretBuild) -> reloadCounter
 +recoil (TurretBuild) -> curRecoil
 +</code>
 +
 +===== Consumption =====
 +
 +  * ''%%consumes%%'' 永远离开了我们
 +  * ''%%efficiency%%'' 变成了方块真实的效率,不是一个电量说的算了
 +  * 如果方块的 ''%%shouldConsume%%''返回为 false 或者没有物品,效率就是0,有电也不行
 +  * 如果你想知道方块//本来将要有的效率//,如果 shouldConsume为true,用 ''%%potentialEfficiency%%'' 代替
 +  * 将来会有更好的流体网络与部分消耗。例如,一个方块每帧得到1单位而实际需要10单位时,每帧会产生10%的效率,来取代consValid()每10帧true一次的
 +  * 我啥子也不知道,希望它不要变成噩梦
 +
 +名称:
 +
 +<code>
 +consValid() -> canConsume()
 +consumes.power -> consumePower
 +consumes.item -> consumeItem
 +consumes.items -> consumeItems
 +consumes.liquid -> consumeLiquid
 +consumes.getPower() -> consPower
 +consumes.add -> consume
 +consumes.get(...) -> findConsumer(c -> c instanceof TheConsumeTypeYouWant) (在init()缓存结果)
 +
 +consumes.powerCond -> 换成 shouldConsume 这毫无卵用
 +consumes.hasPower() -> consPower != null
 +
 +cons.optionalValid() -> 使用可选效率,返回0~1的数字,和原本的efficiency一样
 +efficiency() -> efficiency (删除调用,他就是个getter)
 +</code>
 +===== 其余重命名计划(完全没写完)=====
 +
 +<code>
 +legTrns -> legForwardScl
 +visualElevation -> shadowElevation
 +rotateShooting -> faceTarget
 +
 +BulletType#range() -> BulletType#range
 +Vars.control.input.config.frag -> Vars.control.input.config
 +getSelectedTile() -> getSelected()
 +
 +drawRequestRegion -> drawPlanRegion
 +drawRequestConfig -> drawPlanConfig
 +<任何 "请求建造的方法" "计划"塞到这里>
 +
 +onConfigureTileTapped -> onConfigureBuildTapped
 +
 +PayloadAcceptor -> PayloadBlock
 +PayloadAcceptorBuild -> PayloadBlockBuild
 +
 +#在setBars里可以找到并且替换
 +bars.add(" -> addBar("
 +bars.remove(" -> removeBar("
 +
 +liquids.total() -> liquids.currentAmount()
 +
 +expanded -> 在init()里,叫做`updateClipRadius(<最大绘制范围>)`
 +
 +ContentList -> 删除了这个接口,load()方法static化,然后自行调用
 +Fragment -> 删了,调用load就好了
 +
 +scaleVelocity -> scaleLife
 +
 +#队伍参数删了
 +Drawf.light(team, -> Drawf.light(
 +Drawf.laser(team, -> Drawf.laser(
 +
 +BulletType#range() -> BulletType#calculateRange()
 +
 +Styles.transt -> Styles.cleart
 +Styles.clearTransi -> Styles.cleari
 +Styles.accenti -> Styles.grayi
 +Styles.clearPartialt -> Styles.flatBordert
 +Styles.clearPartiali -> Styles.clearNonei
 +Styles.clearTogglet -> Styles.flatTogglet
 +Styles.clearToggleTransi -> Styles.clearTogglei
 +Styles.clearTogglePartiali -> Styles.clearNoneTogglei
 +
 +Lines.polySeg -> Lines.arc (参数顺序!)
 +Lines.swirl -> Lines.arc
 +
 +Structs.select -> Structs.random
 +</code>
 +
 +===== 实际上的迁移指南(万分火急)=====
 +如果你以前一直用 IDE,你就应该知道这件事,但我还是有必要澄清一下,那就是:你不需要去肝,别一直手动替换。举个简单的例子,像''%%consumes.power%%'' -> ''%%consumePower%%''这种替换,你应该打开IDEA的全局替换对话框(ctrl-shift-r)然后把你代码全换一遍,如果你耍json,你也可以用类似VSCode的东西全局替换,比如''%%reloadTime%%'' 变 ''%%reload%%''