45 lines
1.7 KiB
JavaScript
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)
|
|
}) |