From 5e4d9b56245c49918f373e35053f23f4331cfd94 Mon Sep 17 00:00:00 2001 From: Garbage Mule Date: Wed, 1 Jun 2011 16:26:13 +0200 Subject: [PATCH] Optimized getClosestPlayer --- MobArena.jar | Bin 30177 -> 30099 bytes .../garbagemule/MobArena/MASpawnThread.java | 19 +++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/MobArena.jar b/MobArena.jar index c21b3f5c01a7ba0c12d1d129409220f276cabf37..59ec769126ebefdfcf2db248773f0934e071c8f5 100644 GIT binary patch delta 3390 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 DE|PEQ diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index ffd8b9b..3cb8417 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -50,10 +50,7 @@ public class MASpawnThread implements Runnable } public void run() - { - // Make a new ArrayList with all the players for fast lookup - playerList = new ArrayList(ArenaManager.playerSet); - + { // Check if we need to grant more rewards with the recurrent waves. for (Integer i : ArenaManager.everyWaveMap.keySet()) { @@ -215,9 +212,9 @@ public class MASpawnThread implements Runnable public static Player getClosestPlayer(Entity e) { // Grab the coordinates. - double ex = e.getLocation().getX(); - double ey = e.getLocation().getY(); - double ez = e.getLocation().getZ(); + double x = e.getLocation().getX(); + double y = e.getLocation().getY(); + double z = e.getLocation().getZ(); // Set up the comparison variable and the result. double current = Double.POSITIVE_INFINITY; @@ -225,12 +222,10 @@ public class MASpawnThread implements Runnable /* Iterate through the ArrayList, and update current and result every * time a squared distance smaller than current is found. */ - for (int i = 0; i < playerList.size(); i++) + for (Player p : ArenaManager.playerSet) { - Player p = playerList.get(i); - double dist = distance(p.getLocation(), ex, ey, ez); - - if (dist < current || current == -1.0D) + double dist = distance(p.getLocation(), x, y, z); + if (dist < current) { current = dist; result = p;