35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
const $MBDKineticMachineBlockEntity = Java.loadClass("com.lowdragmc.mbd2.integration.create.machine.MBDKineticMachineBlockEntity")
|
|
|
|
MBDMachineEvents.onStructureFormed("createdelight:hydropower_station", e => {
|
|
const{machine} = e.event
|
|
/** @type {Internal.MBDMultiblockMachine} */
|
|
let multiblock = machine
|
|
let fan_poses = []
|
|
multiblock.parts.forEach(part => {
|
|
let fan_pos = [part.pos.x, part.pos.y, part.pos.z]
|
|
fan_poses.push(fan_pos)
|
|
/** @type {Internal.MBDKineticMachineBlockEntity} */
|
|
let fan = part.machineHolder
|
|
fan.stopWorking()
|
|
fan.scheduleWorkingRPM(-32, false)
|
|
})
|
|
machine.customData.putInt("fan_count", fan_poses.length)
|
|
for(let i = 0; i <= fan_poses.length-1; i++) {
|
|
machine.customData.putIntArray(`fan_pos_${i}`, fan_poses[i])
|
|
}
|
|
})
|
|
|
|
MBDMachineEvents.onStructureInvalid("createdelight:hydropower_station", e => {
|
|
const{machine} = e.event
|
|
const{level,customData} = machine
|
|
let fan_count = customData.getInt("fan_count")
|
|
for(let i = 0; i <= fan_count; i++){
|
|
let intArray = customData.getIntArray(`fan_pos_${i}`)
|
|
/** @type {Internal.MBDKineticMachineBlockEntity} */
|
|
let fan = level.getBlockEntity([intArray[0], intArray[1], intArray[2]])
|
|
try {
|
|
fan.stopWorking()
|
|
} catch (error) {}
|
|
}
|
|
})
|