From 637306da3af62953101bacbdb6e5da31b34caa0b Mon Sep 17 00:00:00 2001 From: T14D3 <73843330+T14D3@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:57:45 +0100 Subject: [PATCH] Invalidate caches for unused objects --- src/main/java/de/t14d3/zones/Zones.java | 2 ++ .../zones/listeners/ChunkEventListener.java | 20 +++++++++++++++++++ .../zones/listeners/PlayerQuitListener.java | 1 + 3 files changed, 23 insertions(+) create mode 100644 src/main/java/de/t14d3/zones/listeners/ChunkEventListener.java diff --git a/src/main/java/de/t14d3/zones/Zones.java b/src/main/java/de/t14d3/zones/Zones.java index fa9916e..76368b5 100644 --- a/src/main/java/de/t14d3/zones/Zones.java +++ b/src/main/java/de/t14d3/zones/Zones.java @@ -5,6 +5,7 @@ import de.t14d3.zones.integrations.FAWEIntegration; import de.t14d3.zones.integrations.PlaceholderAPI; import de.t14d3.zones.integrations.WorldEditSession; +import de.t14d3.zones.listeners.ChunkEventListener; import de.t14d3.zones.listeners.CommandListener; import de.t14d3.zones.listeners.PlayerInteractListener; import de.t14d3.zones.listeners.PlayerQuitListener; @@ -79,6 +80,7 @@ public void onEnable() { // Register listeners this.getServer().getPluginManager().registerEvents(new PlayerInteractListener(regionManager, permissionManager, this), this); this.getServer().getPluginManager().registerEvents(new PlayerQuitListener(this), this); + this.getServer().getPluginManager().registerEvents(new ChunkEventListener(this), this); // Populate Types types = new Types(); diff --git a/src/main/java/de/t14d3/zones/listeners/ChunkEventListener.java b/src/main/java/de/t14d3/zones/listeners/ChunkEventListener.java new file mode 100644 index 0000000..162711d --- /dev/null +++ b/src/main/java/de/t14d3/zones/listeners/ChunkEventListener.java @@ -0,0 +1,20 @@ +package de.t14d3.zones.listeners; + +import de.t14d3.zones.Zones; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.world.ChunkUnloadEvent; + +public class ChunkEventListener implements Listener { + + private final Zones plugin; + + public ChunkEventListener(Zones plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onChunkUnload(ChunkUnloadEvent event) { + plugin.getPermissionManager().invalidateInteractionCacheForChunk(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld().getName()); + } +} diff --git a/src/main/java/de/t14d3/zones/listeners/PlayerQuitListener.java b/src/main/java/de/t14d3/zones/listeners/PlayerQuitListener.java index acaab50..633ab40 100644 --- a/src/main/java/de/t14d3/zones/listeners/PlayerQuitListener.java +++ b/src/main/java/de/t14d3/zones/listeners/PlayerQuitListener.java @@ -19,5 +19,6 @@ public void onPlayerQuit(PlayerQuitEvent event) { zones.selection.remove(uuid); zones.particles.remove(uuid); zones.getPermissionManager().invalidateInteractionCache(uuid); + zones.getPermissionManager().invalidateCache(uuid.toString()); } }