
walkmc.hologram.MoveableHologram.kt Maven / Gradle / Ivy
package walkmc.hologram
import org.bukkit.*
import walkmc.*
import walkmc.extensions.*
import walkmc.serializer.tag.impl.*
/**
* Represents a moveable hologram.
*/
open class MoveableHologram : AbstractHologram {
constructor() : super()
constructor(world: MinecraftWorld) : super(world)
var count = 0
var max = 40
var moveDelay = 1
var offsetX = 0.0
var offsetY = 0.08
var offsetZ = 0.0
var allowReverseOrder = false
var isInReverseOrder = false
override fun onTick() {
super.onTick()
if (ticksLived % moveDelay != 0)
return
if (!allowReverseOrder) {
if (++count >= max) delete()
} else {
if (!isInReverseOrder) {
if (++count >= max) isInReverseOrder = true
} else {
if (-max >= --count) isInReverseOrder = false
}
}
move(relative(location), true)
}
override fun saveEntityData(tag: CompoundTag) {
super.saveEntityData(tag)
tag["CountMoves"] = count
tag["MaxMoves"] = max
tag["MoveDelay"] = moveDelay
tag["OffsetX"] = offsetX
tag["OffsetY"] = offsetY
tag["OffsetZ"] = offsetZ
tag["AllowReverseOrder"] = allowReverseOrder
tag["IsInReverseOrder"] = isInReverseOrder
}
override fun loadEntityData(tag: CompoundTag) {
super.loadEntityData(tag)
count = tag.getInt("CountMoves")
max = tag.getInt("MaxMoves", 40)
moveDelay = tag.getInt("MoveDelay", 1)
offsetX = tag.getDouble("OffsetX")
offsetY = tag.getDouble("OffsetY", 0.08)
offsetZ = tag.getDouble("OffsetZ")
allowReverseOrder = tag.getBoolean("AllowReverseOrder")
isInReverseOrder = tag.getBoolean("IsInReverseOrder")
}
fun relative(location: Location): Location {
return if (!isInReverseOrder)
location.getRelative(offsetX, offsetY, offsetZ)
else
location.getRelative(-offsetX, -offsetY, -offsetZ)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy