JavaScript Mod:修订间差异

来自像素工厂维基百科-mindustry wiki
无编辑摘要
无编辑摘要
第34行: 第34行:


}
}
=== 一些小坑 ===
一个函数接受所有方法,例如:
extend(BulletType, {
hit(b, x, y) {
print(b)
}
}
BulletType#hit(Bullet b)和BulletType#hit(Bullet b, float x, float y)都会调用上面的hit方法,
所以x,y可能为undefined

2024年2月17日 (六) 21:00的版本

Mindustry的JS

Mindustry使用: Rhino

类似于node.js,它没有window


Mindustry提供了一下全局变量:global.js

一些常用的变量

  • scriptName: 当前脚本的名称(这会随脚本的变化而变化,建议: const { scriptName } = this;)
  • modName: 当前Mod的名称(这会随mod的变化而变化,建议: const { modName } = this;)
  • print: 打印日志
  • extend: js 'extend(Base, ..., {})' = java 'new Base(...) {}'

关于解构复制

cosnt { a, b } = { a: 1, b: 2 };

特殊语法

new xxx/* functionName */ ( /* args */ ) { /* code */ }

其实就是xxx/* functionName */ ( /* args */ , { /* code */ } )

在最后面传了一个对象

所以你可以:new extend(Block, "a block") {

setBars() {

print(this.barMap)

}

}

一些小坑

一个函数接受所有方法,例如:

extend(BulletType, {

hit(b, x, y) {

print(b)

}

}

BulletType#hit(Bullet b)和BulletType#hit(Bullet b, float x, float y)都会调用上面的hit方法,

所以x,y可能为undefined