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绝对的最新版本,把末尾的哈希值换成对应的最新版即可
武器/炮塔设计模版系统
- 武器和炮塔现在有一个
ShootPattern shoot
字段 - 模版决定了炮管何时何地如何生成
- 像
shots
、chargeTime
、spread
这样的字段挪到了这个模版当中 - 默认的射击模版没有分裂,并且只支持
firstShotDelay
(充能)和shotDelay
(延迟发射)
一些有趣的模版:
ShootSpread
:可配置分裂的导弹发射ShootAlternate
:双管/分裂双管发射ShootBarrel
:类似上一个,但炮管可以任意位置任意方向ShootMulti
:链式协同模版,所以你能整点活,比如每个炮管都发射的双管炮
DrawBlock
大多数 DrawBlock 的基类都删了,都裁走了。方块的绘制器现在是模块化的了,所以你可以不必新建强耦合的 DrawBlock ,而是组建不同的层。
例如,冷冻液混合器的绘制器如下:
drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidTile(Liquids.cryofluid), new DrawDefault());
- DrawMulti 仅用来结合起来多个绘制步骤
- DrawRegion 会绘制一个名为
cryofluid-mixer-bottom
的贴图作为第一层 - DrawLiquidTile 会绘制一个流动的冷却液正方形贴图,不透明度取决于液体容积。
- DrawDefault 绘制默认方块贴图(这个例子中,就是顶部玻璃材质)
了解更多请查看源码.
Turrets
大多数字段改名成适用于炮塔的名字
reloadTime -> reload shootLength -> shootY recoilAmount -> recoil shootShake -> shake chargeEffect/chargeBeginEffect -> 塞进子弹里了 xRand ->老子删了,你可能会用 ShootBarrel 代替冷却时间,没有简简单单的替换件,要么用cooldownTime要么用recoilTime #这两个寄吧东西不管就出现奇奇怪怪的bug克死你 reload (TurretBuild) -> reloadCounter recoil (TurretBuild) -> curRecoil
Consumption
consumes
永远离开了我们efficiency
变成了方块真实的效率,不是一个电量说的算了- 如果方块的
shouldConsume
返回为 false 或者没有物品,效率就是0,有电也不行 - 如果你想知道方块本来将要有的效率,如果 shouldConsume为true,用
potentialEfficiency
代替 - 将来会有更好的流体网络与部分消耗。例如,一个方块每帧得到1单位而实际需要10单位时,每帧会产生10%的效率,来取代consValid()每10帧true一次的
- 我啥子也不知道,希望它不要变成噩梦
名称:
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.power
→ consumePower
这种替换,你应该打开IDEA的全局替换对话框(ctrl-shift-r)然后把你代码全换一遍,如果你耍json,你也可以用类似VSCode的东西全局替换,比如reloadTime
变 reload