LTDV10/packet/kubejs/server_scripts/mbd2/dryer.js
2026-04-14 18:20:56 +08:00

45 lines
1.7 KiB
JavaScript

const $Mth = Java.loadClass("net.minecraft.util.Mth")
MBDMachineEvents.onTick("createdelight:dryer", e => {
const {machine} = e.event
const {pos, level} = machine
if (level.time % 100 != 0) return
/** @type {Internal.KineticBlockEntity} */
let be = machine.getMachineHolder()
let speed = Math.abs(be.speed)
if (speed <= 8) return
let manager = SeasonUtil.getSaveData(level)
let nearHumidityControlProvider = manager.queryHumidityControlProvider(pos)
if (nearHumidityControlProvider != null) {
if (nearHumidityControlProvider.getRemainTime() <= 200) {
nearHumidityControlProvider.addRemainTime(100)
}
} else {
manager.addHumidityControlProvider(pos, SeasonUtil.createHumidityControlProvider(-1, 4, 500))
}
})
MBDMachineEvents.onRemoved("createdelight:dryer", e => {
let event = e.event
const { machine } = event
const {pos, level} = machine
let manager = SeasonUtil.getSaveData(level)
if (manager != null) {
manager.removeHumidityControlProvider(pos)
}
})
MBDMachineEvents.onTick("createdelight:dryer", e => {
const {machine} = e.event
const {pos, level} = machine
if (level.time % 60 != 0) return
/** @type {Internal.KineticBlockEntity} */
let be = machine.getMachineHolder()
let speed = Math.abs(be.speed)
if (speed <= 8) return
let start = Vec3d.atCenterOf(pos).offsetRandom(level.random, 1)
let motion = Vec3d.atCenterOf(pos).subtract(start)
.normalize()
.scale($Mth.clamp(2, 0, 0.5))
level.spawnParticles("minecraft:poof", true, start.x(), start.y(), start.z(), motion.x(), motion.y(), motion.z(), 3, 0.2)
})