forked from SteamWar/SteamWar
Remove softRef construct, add onPlayerLeave cleanup
This commit is contained in:
+16
-18
@@ -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<Player> calculationActive = new HashSet<>();
|
||||
private final Map<Player, SoftReference<RCursor>> activeCursors = new HashMap<>();
|
||||
private final Map<Player, RCursor> 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<RCursor> 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<RCursor> 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<RCursor> 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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user