diff --git a/src/lishid/orebfuscator/Orebfuscator.java b/src/lishid/orebfuscator/Orebfuscator.java index 31519ba..3622788 100644 --- a/src/lishid/orebfuscator/Orebfuscator.java +++ b/src/lishid/orebfuscator/Orebfuscator.java @@ -1,7 +1,6 @@ package lishid.orebfuscator; -import java.util.Arrays; -import java.util.HashSet; +import java.util.WeakHashMap; import java.util.logging.Logger; import lishid.orebfuscator.chunkscrambler.ChunkScramblerWorldListener; @@ -77,9 +76,9 @@ public class Orebfuscator extends JavaPlugin { private static int lastTask = -1; /** - * List of players online + * Players list */ - public static HashSet players = new HashSet(); + public static WeakHashMap players = new WeakHashMap(); @Override public void onEnable() { @@ -91,8 +90,10 @@ public class Orebfuscator extends JavaPlugin { OrebfuscatorConfig.load(); synchronized(Orebfuscator.players) { - players.clear(); - players.addAll(Arrays.asList(this.getServer().getOnlinePlayers())); + for(Player p : this.getServer().getOnlinePlayers()) + { + players.put(p, true); + } } //Orebfuscator events diff --git a/src/lishid/orebfuscator/OrebfuscatorPlayerListener.java b/src/lishid/orebfuscator/OrebfuscatorPlayerListener.java index 404640a..ac997d0 100644 --- a/src/lishid/orebfuscator/OrebfuscatorPlayerListener.java +++ b/src/lishid/orebfuscator/OrebfuscatorPlayerListener.java @@ -27,7 +27,7 @@ public class OrebfuscatorPlayerListener implements Listener } synchronized(Orebfuscator.players) { - Orebfuscator.players.add(player); + Orebfuscator.players.put(player, true); } } diff --git a/src/lishid/orebfuscator/utils/Calculations.java b/src/lishid/orebfuscator/utils/Calculations.java index 17608b7..b6ea776 100644 --- a/src/lishid/orebfuscator/utils/Calculations.java +++ b/src/lishid/orebfuscator/utils/Calculations.java @@ -47,10 +47,10 @@ public class Calculations List playerList = getPlayers(block.getWorld()); for (Player player : playerList) { - double dx = Math.abs(player.getLocation().getChunk().getX() - block.getChunk().getX()); - double dz = Math.abs(player.getLocation().getChunk().getZ() - block.getChunk().getZ()); - double dist = Bukkit.getServer().getViewDistance(); - if (dx <= dist && dz <= dist) + double dx = Math.abs(player.getLocation().getX() - block.getX()); + double dz = Math.abs(player.getLocation().getZ() - block.getZ()); + double dist = Bukkit.getServer().getViewDistance() * 16; + if (dx < dist && dz < dist) { players.add((CraftPlayer) player); } @@ -124,8 +124,7 @@ public class Calculations synchronized(Orebfuscator.players) { - HashSet allPlayers = Orebfuscator.players; - for(Player p : allPlayers) + for(Player p : Orebfuscator.players.keySet()) { if(p.getWorld().getName().equals(world.getName())) players.add(p); diff --git a/src/plugin.yml b/src/plugin.yml index 29eb41c..78d449b 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: Orebfuscator main: lishid.orebfuscator.Orebfuscator -version: 1.3.9-beta +version: 1.3.9 author: lishid softdepend: [Spout, ChunkScrambler] load: startup