From 58b48dceb461896e57e08777442937a9fa738c19 Mon Sep 17 00:00:00 2001 From: Kekschen <52585984+Kek5chen@users.noreply.github.com> Date: Sun, 20 Feb 2022 21:59:54 +0100 Subject: [PATCH 1/2] Updated APIPlayer Caching ---Untested Code--- Updated the BukkitPlayer caching objects to use UUIDs instead of Player objects as Player objects generate a new hash when rejoining the server and get out of sync therefore will horde memory and stay unavailable till the programs termination. --- .../dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java index 6ecef11..b2a125f 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java @@ -11,7 +11,7 @@ import java.util.stream.Collectors; public class BukkitPlayerExecutor implements PlayerExecutor { - private final Map cachedPlayers = new WeakHashMap<>(); + private final Map cachedPlayers = new WeakHashMap<>(); @Override public Optional getPlayer(String name) { @@ -21,7 +21,7 @@ public class BukkitPlayerExecutor implements PlayerExecutor { return Optional.empty(); } - return Optional.of(cachedPlayers.computeIfAbsent(player, BukkitPlayer::new)); + return Optional.of(cachedPlayers.getOrDefault(player.getUniqueId(), new BukkitPlayer(player))); } @Override @@ -32,14 +32,14 @@ public class BukkitPlayerExecutor implements PlayerExecutor { return Optional.empty(); } - return Optional.of(cachedPlayers.computeIfAbsent(player, BukkitPlayer::new)); + return Optional.of(cachedPlayers.getOrDefault(player.getUniqueId(), new BukkitPlayer(player))); } @Override public List getOnlinePlayers() { return Bukkit.getOnlinePlayers().stream() - .map(pl -> cachedPlayers.computeIfAbsent(pl, BukkitPlayer::new)) + .map(pl -> cachedPlayers.getOrDefault(pl.getUniqueId(), new BukkitPlayer(pl))) .collect(Collectors.toList()); } From 66d193148e29dc887d257d95a8320a396fd609aa Mon Sep 17 00:00:00 2001 From: Kekschen <52585984+Kek5chen@users.noreply.github.com> Date: Sun, 20 Feb 2022 22:06:28 +0100 Subject: [PATCH 2/2] Fixed setting values into cache --- .../dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java index b2a125f..7be7a57 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java @@ -21,7 +21,7 @@ public class BukkitPlayerExecutor implements PlayerExecutor { return Optional.empty(); } - return Optional.of(cachedPlayers.getOrDefault(player.getUniqueId(), new BukkitPlayer(player))); + return Optional.of(cachedPlayers.computeIfAbsent(player.getUniqueId(), k -> new BukkitPlayer(player))); } @Override @@ -32,14 +32,14 @@ public class BukkitPlayerExecutor implements PlayerExecutor { return Optional.empty(); } - return Optional.of(cachedPlayers.getOrDefault(player.getUniqueId(), new BukkitPlayer(player))); + return Optional.of(cachedPlayers.computeIfAbsent(player.getUniqueId(), k -> new BukkitPlayer(player))); } @Override public List getOnlinePlayers() { return Bukkit.getOnlinePlayers().stream() - .map(pl -> cachedPlayers.getOrDefault(pl.getUniqueId(), new BukkitPlayer(pl))) + .map(pl -> cachedPlayers.computeIfAbsent(pl.getUniqueId(), k -> new BukkitPlayer(pl))) .collect(Collectors.toList()); }