Now uses WeakHashMap.

master
lishid 2012-02-18 01:45:10 -05:00
parent 2e886964e2
commit 23ee5dad82
4 changed files with 14 additions and 14 deletions

View File

@ -1,7 +1,6 @@
package lishid.orebfuscator; package lishid.orebfuscator;
import java.util.Arrays; import java.util.WeakHashMap;
import java.util.HashSet;
import java.util.logging.Logger; import java.util.logging.Logger;
import lishid.orebfuscator.chunkscrambler.ChunkScramblerWorldListener; import lishid.orebfuscator.chunkscrambler.ChunkScramblerWorldListener;
@ -77,9 +76,9 @@ public class Orebfuscator extends JavaPlugin {
private static int lastTask = -1; private static int lastTask = -1;
/** /**
* List of players online * Players list
*/ */
public static HashSet<Player> players = new HashSet<Player>(); public static WeakHashMap<Player, Boolean> players = new WeakHashMap<Player, Boolean>();
@Override @Override
public void onEnable() { public void onEnable() {
@ -91,8 +90,10 @@ public class Orebfuscator extends JavaPlugin {
OrebfuscatorConfig.load(); OrebfuscatorConfig.load();
synchronized(Orebfuscator.players) synchronized(Orebfuscator.players)
{ {
players.clear(); for(Player p : this.getServer().getOnlinePlayers())
players.addAll(Arrays.asList(this.getServer().getOnlinePlayers())); {
players.put(p, true);
}
} }
//Orebfuscator events //Orebfuscator events

View File

@ -27,7 +27,7 @@ public class OrebfuscatorPlayerListener implements Listener
} }
synchronized(Orebfuscator.players) synchronized(Orebfuscator.players)
{ {
Orebfuscator.players.add(player); Orebfuscator.players.put(player, true);
} }
} }

View File

@ -47,10 +47,10 @@ public class Calculations
List<Player> playerList = getPlayers(block.getWorld()); List<Player> playerList = getPlayers(block.getWorld());
for (Player player : playerList) { for (Player player : playerList) {
double dx = Math.abs(player.getLocation().getChunk().getX() - block.getChunk().getX()); double dx = Math.abs(player.getLocation().getX() - block.getX());
double dz = Math.abs(player.getLocation().getChunk().getZ() - block.getChunk().getZ()); double dz = Math.abs(player.getLocation().getZ() - block.getZ());
double dist = Bukkit.getServer().getViewDistance(); double dist = Bukkit.getServer().getViewDistance() * 16;
if (dx <= dist && dz <= dist) if (dx < dist && dz < dist)
{ {
players.add((CraftPlayer) player); players.add((CraftPlayer) player);
} }
@ -124,8 +124,7 @@ public class Calculations
synchronized(Orebfuscator.players) synchronized(Orebfuscator.players)
{ {
HashSet<Player> allPlayers = Orebfuscator.players; for(Player p : Orebfuscator.players.keySet())
for(Player p : allPlayers)
{ {
if(p.getWorld().getName().equals(world.getName())) if(p.getWorld().getName().equals(world.getName()))
players.add(p); players.add(p);

View File

@ -1,6 +1,6 @@
name: Orebfuscator name: Orebfuscator
main: lishid.orebfuscator.Orebfuscator main: lishid.orebfuscator.Orebfuscator
version: 1.3.9-beta version: 1.3.9
author: lishid author: lishid
softdepend: [Spout, ChunkScrambler] softdepend: [Spout, ChunkScrambler]
load: startup load: startup