diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt index 8a970bc..bf6125f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/EcoCratesPlugin.kt @@ -18,6 +18,7 @@ import com.willfp.ecocrates.converters.impl.SpecializedCratesConverter import com.willfp.ecocrates.crate.CrateKeyListener import com.willfp.ecocrates.crate.Crates import com.willfp.ecocrates.crate.placed.CrateDisplay +import com.willfp.ecocrates.crate.placed.HologramBugFixer import com.willfp.ecocrates.crate.placed.PlacedCrates import com.willfp.ecocrates.display.KeyDisplay import com.willfp.ecocrates.reward.Rewards @@ -110,7 +111,8 @@ class EcoCratesPlugin : EcoPlugin() { override fun loadListeners(): List { return listOf( PlacedCrateListener(this), - CrateKeyListener() + CrateKeyListener(), + HologramBugFixer ) } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/HologramBugFixer.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/HologramBugFixer.kt new file mode 100644 index 0000000..08dd6b9 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/HologramBugFixer.kt @@ -0,0 +1,17 @@ +package com.willfp.ecocrates.crate.placed + +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.world.ChunkUnloadEvent + +object HologramBugFixer: Listener { + @EventHandler + fun handle(event: ChunkUnloadEvent) { + val chunk = event.chunk + for (crate in PlacedCrates.values()) { + if (crate.location.chunk == chunk) { + crate.handleChunkUnload() + } + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/PlacedCrate.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/PlacedCrate.kt index 1a3e185..6285587 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/PlacedCrate.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecocrates/crate/placed/PlacedCrate.kt @@ -11,7 +11,7 @@ class PlacedCrate( blockLocation: Location ) { // Center the location, they're mutable because bukkit is bad at designing APIs. - private val location = blockLocation.clone().apply { + val location = blockLocation.clone().apply { x += 0.5 y += 0.5 z += 0.5 @@ -42,6 +42,10 @@ class PlacedCrate( item?.remove() } + internal fun handleChunkUnload() { + hologram.remove() + } + private fun tickHolograms(tick: Int) { var frameToShow: HologramFrame? = null