From a3d2d2be1e0ade60414c157eaf3119bf7e8727c7 Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Thu, 8 May 2025 20:58:16 +0200 Subject: [PATCH] Remove softRef construct, add onPlayerLeave cleanup --- .../utils/cursor/RCursorManager.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursorManager.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursorManager.java index 9d011e26..f7636a79 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursorManager.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/utils/cursor/RCursorManager.java @@ -10,6 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerQuitEvent; import java.lang.ref.SoftReference; import java.util.HashMap; @@ -24,7 +25,7 @@ public class RCursorManager implements Listener { private static RCursorManager instance; private final Set calculationActive = new HashSet<>(); - private final Map> activeCursors = new HashMap<>(); + private final Map activeCursors = new HashMap<>(); public RCursorManager() { if (instance == null) { @@ -54,7 +55,7 @@ public class RCursorManager implements Listener { void registerCursor(RCursor cursor) { closeCursorOf(cursor.getOwner()); - activeCursors.put(cursor.getOwner(), new SoftReference<>(cursor)); + activeCursors.put(cursor.getOwner(), cursor); } void unregisterCursor(RCursor cursor) { @@ -62,13 +63,12 @@ public class RCursorManager implements Listener { } private void closeCursorOf(Player player) { - SoftReference currentPlayerCursorRef = activeCursors.get(player); - if(currentPlayerCursorRef != null) { - RCursor currentCursor = currentPlayerCursorRef.get(); - if(currentCursor != null) { - currentCursor.close(); - }; + RCursor currentPlayerCursor = activeCursors.get(player); + + if(currentPlayerCursor != null) { + currentPlayerCursor.close(); }; + } @@ -85,13 +85,9 @@ public class RCursorManager implements Listener { } } - SoftReference cursorRef = activeCursors.get(player); + RCursor cursor = activeCursors.get(player); - RCursor cursor = cursorRef.get(); - - if (cursor == null) { - activeCursors.remove(player); - } else { + if (cursor != null) { cursor.render(); } @@ -104,11 +100,13 @@ public class RCursorManager implements Listener { private void handlePlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - SoftReference cursorOfPlayerRef = activeCursors.get(player); - if(cursorOfPlayerRef == null) return; - - RCursor cursorOfPlayer = cursorOfPlayerRef.get(); + RCursor cursorOfPlayer = activeCursors.get(player); cursorOfPlayer.handleClick(event.getAction()); } + + @EventHandler + private void handlePlayerQuit(PlayerQuitEvent event) { + closeCursorOf(event.getPlayer()); + } }