目录

Erekir分支代码友好相处指南

设置

这个指南面向Java(也有一点 Json),如果你用的是JS,就不用看了

在一切之前,先看看旧版迁移教程,并且确保你没用什么弃用的东西,因为俄式英语中弃用就是已经删了的意思。这里完全不会去处理它们

如何在 JITPack 和 Gradle 中依赖于 Erekir 分支

build.gradle 里的Mindustry依赖项调成这样

compileOnly "com.github.Anuken.MindustryJitpack:core:935b478139"
compileOnly "com.github.Anuken.Arc:arc-core:dfcb21ce56"

注意,jitpack项目现在是 MindustryJitpack 了,但不是Mindustry,JITPack太TM讨厌了,但是细说就是另外一件事了 如果想要Mindustry/Arc绝对的最新版本,把末尾的哈希值换成对应的最新版即可

武器/炮塔设计模版系统

一些有趣的模版:

DrawBlock

大多数 DrawBlock 的基类都删了,都裁走了。方块的绘制器现在是模块化的了,所以你可以不必新建强耦合的 DrawBlock ,而是组建不同的层。

例如,冷冻液混合器的绘制器如下:

drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(Liquids.cryofluid), new DrawDefault());

了解更多请查看源码.

Turrets

大多数字段改名成适用于炮塔的名字

reloadTime -> reload
shootLength -> shootY
recoilAmount -> recoil
shootShake -> shake
chargeEffect/chargeBeginEffect -> 塞进子弹里了
xRand ->老子删了,你可能会用 ShootBarrel 代替冷却时间,没有简简单单的替换件,要么用cooldownTime要么用recoilTime

#这两个寄吧东西不管就出现奇奇怪怪的bug克死你

reload (TurretBuild) -> reloadCounter
recoil (TurretBuild) -> curRecoil

Consumption

名称:

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)

其余重命名计划(完全没写完)

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

实际上的迁移指南(万分火急)

如果你以前一直用 IDE,你就应该知道这件事,但我还是有必要澄清一下,那就是:你不需要去肝,别一直手动替换。举个简单的例子,像consumes.powerconsumePower这种替换,你应该打开IDEA的全局替换对话框(ctrl-shift-r)然后把你代码全换一遍,如果你耍json,你也可以用类似VSCode的东西全局替换,比如reloadTimereload