diff --git a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 9b78ff53..b3b688de 100644 --- a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -171,7 +171,7 @@ public File getConfigFolder() { public void onPlayerJoin(MinecraftServer server, ServerPlayerEntity playerInstance) { if (this.serverInstance != server) return; - FabricPlayer player = new FabricPlayer(this, playerInstance); + FabricPlayer player = new FabricPlayer(this, playerInstance.getUuid()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java index 7c8ce5b6..f9c8279b 100644 --- a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java +++ b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.fabric; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -65,12 +64,10 @@ public class FabricPlayer implements Player { private Gamemode gamemode; private FabricMod mod; - private WeakReference delegate; - public FabricPlayer(FabricMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUuid(); + public FabricPlayer(FabricMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -119,19 +116,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerManager().getPlayer(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameMode()); diff --git a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 66ba908d..9466c681 100644 --- a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -175,8 +175,8 @@ public File getConfigFolder() { public void onPlayerJoin(MinecraftServer server, ServerPlayerEntity playerInstance) { if (this.serverInstance != server) return; - - FabricPlayer player = new FabricPlayer(this, playerInstance); + + FabricPlayer player = new FabricPlayer(this, playerInstance.getUuid()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java index 7c8ce5b6..f9c8279b 100644 --- a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java +++ b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.fabric; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -65,12 +64,10 @@ public class FabricPlayer implements Player { private Gamemode gamemode; private FabricMod mod; - private WeakReference delegate; - public FabricPlayer(FabricMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUuid(); + public FabricPlayer(FabricMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -119,19 +116,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerManager().getPlayer(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameMode()); diff --git a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 66ba908d..9466c681 100644 --- a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -175,8 +175,8 @@ public File getConfigFolder() { public void onPlayerJoin(MinecraftServer server, ServerPlayerEntity playerInstance) { if (this.serverInstance != server) return; - - FabricPlayer player = new FabricPlayer(this, playerInstance); + + FabricPlayer player = new FabricPlayer(this, playerInstance.getUuid()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java index 7c8ce5b6..f9c8279b 100644 --- a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java +++ b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.fabric; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -65,12 +64,10 @@ public class FabricPlayer implements Player { private Gamemode gamemode; private FabricMod mod; - private WeakReference delegate; - public FabricPlayer(FabricMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUuid(); + public FabricPlayer(FabricMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -119,19 +116,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerManager().getPlayer(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameMode()); diff --git a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index fca4b2be..8b8560b5 100644 --- a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -194,7 +194,7 @@ public void onPlayerJoin(PlayerLoggedInEvent evt) { PlayerEntity playerInstance = evt.getPlayer(); if (!(playerInstance instanceof ServerPlayerEntity)) return; - ForgePlayer player = new ForgePlayer(this, (ServerPlayerEntity) playerInstance); + ForgePlayer player = new ForgePlayer(this, playerInstance.getUniqueID()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java index 546f466a..f55516f4 100644 --- a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java +++ b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.forge; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -65,12 +64,10 @@ public class ForgePlayer implements Player { private Gamemode gamemode; private ForgeMod mod; - private WeakReference delegate; - public ForgePlayer(ForgeMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUniqueID(); + public ForgePlayer(ForgeMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -119,19 +116,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerList().getPlayerByUUID(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerList().getPlayerByUUID(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameType()); diff --git a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 3cbc3396..570e628e 100644 --- a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -193,8 +193,8 @@ public File getConfigFolder() { public void onPlayerJoin(PlayerLoggedInEvent evt) { PlayerEntity playerInstance = evt.getPlayer(); if (!(playerInstance instanceof ServerPlayerEntity)) return; - - ForgePlayer player = new ForgePlayer(this, (ServerPlayerEntity) playerInstance); + + ForgePlayer player = new ForgePlayer(this, playerInstance.getUniqueID()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java index a0787c2c..c4226074 100644 --- a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java +++ b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.forge; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -65,12 +64,10 @@ public class ForgePlayer implements Player { private Gamemode gamemode; private ForgeMod mod; - private WeakReference delegate; - public ForgePlayer(ForgeMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUniqueID(); + public ForgePlayer(ForgeMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -119,19 +116,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerList().getPlayerByUUID(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerList().getPlayerByUUID(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameType()); diff --git a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 86f7d552..9d3d4f6c 100644 --- a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -191,8 +191,8 @@ public File getConfigFolder() { public void onPlayerJoin(PlayerLoggedInEvent evt) { PlayerEntity playerInstance = evt.getPlayer(); if (!(playerInstance instanceof ServerPlayerEntity)) return; - - ForgePlayer player = new ForgePlayer(this, (ServerPlayerEntity) playerInstance); + + ForgePlayer player = new ForgePlayer(this, playerInstance.getUniqueID()); onlinePlayerMap.put(player.getUuid(), player); onlinePlayerList.add(player); } diff --git a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java index a5c5f4fa..9b0f32db 100644 --- a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java +++ b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgePlayer.java @@ -25,7 +25,6 @@ package de.bluecolored.bluemap.forge; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -64,12 +63,10 @@ public class ForgePlayer implements Player { private Gamemode gamemode; private ForgeMod mod; - private WeakReference delegate; - public ForgePlayer(ForgeMod mod, ServerPlayerEntity delegate) { - this.uuid = delegate.getUniqueID(); + public ForgePlayer(ForgeMod mod, UUID playerUuid) { + this.uuid = playerUuid; this.mod = mod; - this.delegate = new WeakReference<>(delegate); update(); } @@ -118,19 +115,16 @@ public Gamemode getGamemode() { * Only call on server thread! */ public void update() { - ServerPlayerEntity player = delegate.get(); + MinecraftServer server = mod.getServer(); + if (server == null) { + this.online = false; + return; + } + + ServerPlayerEntity player = server.getPlayerList().getPlayerByUUID(uuid); if (player == null) { - MinecraftServer server = mod.getServer(); - if (server != null) { - player = server.getPlayerList().getPlayerByUUID(uuid); - } - - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.interactionManager.getGameType()); diff --git a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlayer.java b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlayer.java index 277833ff..3dad1db0 100644 --- a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlayer.java +++ b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlayer.java @@ -24,7 +24,6 @@ */ package de.bluecolored.bluemap.bukkit; -import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.Map; import java.util.UUID; @@ -58,12 +57,9 @@ public class BukkitPlayer implements Player { private boolean sneaking; private boolean invisible; private Gamemode gamemode; - - private WeakReference delegate; - public BukkitPlayer(org.bukkit.entity.Player delegate) { - this.uuid = delegate.getUniqueId(); - this.delegate = new WeakReference<>(delegate); + public BukkitPlayer(UUID playerUUID) { + this.uuid = playerUUID; update(); } @@ -111,15 +107,10 @@ public Gamemode getGamemode() { * API access, only call on server thread! */ public void update() { - org.bukkit.entity.Player player = delegate.get(); + org.bukkit.entity.Player player = Bukkit.getPlayer(uuid); if (player == null) { - player = Bukkit.getPlayer(uuid); - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.getGameMode()); diff --git a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java index bf1bc9c5..abb37fb3 100644 --- a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java +++ b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java @@ -132,7 +132,7 @@ public void onEnable() { this.onlinePlayerList.clear(); this.onlinePlayerMap.clear(); for (org.bukkit.entity.Player player : getServer().getOnlinePlayers()) { - BukkitPlayer bukkitPlayer = new BukkitPlayer(player); + BukkitPlayer bukkitPlayer = new BukkitPlayer(player.getUniqueId()); onlinePlayerMap.put(player.getUniqueId(), bukkitPlayer); onlinePlayerList.add(bukkitPlayer); } @@ -235,7 +235,7 @@ public static BukkitPlugin getInstance() { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerJoin(PlayerJoinEvent evt) { - BukkitPlayer player = new BukkitPlayer(evt.getPlayer()); + BukkitPlayer player = new BukkitPlayer(evt.getPlayer().getUniqueId()); onlinePlayerMap.put(evt.getPlayer().getUniqueId(), player); onlinePlayerList.add(player); } diff --git a/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlayer.java b/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlayer.java index 5f3dcb60..cd5b1390 100644 --- a/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlayer.java +++ b/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlayer.java @@ -24,7 +24,6 @@ */ package de.bluecolored.bluemap.sponge; -import java.lang.ref.WeakReference; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -63,12 +62,9 @@ public class SpongePlayer implements Player { private boolean sneaking; private boolean invisible; private Gamemode gamemode; - - private WeakReference delegate; - public SpongePlayer(org.spongepowered.api.entity.living.player.Player delegate) { - this.uuid = delegate.getUniqueId(); - this.delegate = new WeakReference<>(delegate); + public SpongePlayer(UUID playerUUID) { + this.uuid = playerUUID; update(); } @@ -116,15 +112,10 @@ public Gamemode getGamemode() { * API access, only call on server thread! */ public void update() { - org.spongepowered.api.entity.living.player.Player player = delegate.get(); + org.spongepowered.api.entity.living.player.Player player = Sponge.getServer().getPlayer(uuid).orElse(null); if (player == null) { - player = Sponge.getServer().getPlayer(uuid).orElse(null); - if (player == null) { - this.online = false; - return; - } - - delegate = new WeakReference<>(player); + this.online = false; + return; } this.gamemode = GAMEMODE_MAP.get(player.get(Keys.GAME_MODE).orElse(GameModes.NOT_SET)); diff --git a/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java b/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java index 301c1736..c43f8f7e 100644 --- a/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java +++ b/implementations/sponge-7.2.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java @@ -163,7 +163,7 @@ public void onServerReload(GameReloadEvent evt) { @Listener public void onPlayerJoin(ClientConnectionEvent.Join evt) { - SpongePlayer player = new SpongePlayer(evt.getTargetEntity()); + SpongePlayer player = new SpongePlayer(evt.getTargetEntity().getUniqueId()); onlinePlayerMap.put(evt.getTargetEntity().getUniqueId(), player); onlinePlayerList.add(player); }