diff --git a/MobArena.jar b/MobArena.jar index 39641c4..9e4025a 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/resources/plugin.yml b/resources/plugin.yml index cd99cd5..1a9b437 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.94.3.10 +version: 0.94.3.11 softdepend: [Spout,Permissions,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells] commands: ma: diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index 5f87db9..93e279f 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -488,7 +488,8 @@ public class Arena if (e == null) continue; Creature c = (Creature) e; - if (c.getTarget() != null && e.getLocation().distanceSquared(c.getTarget().getLocation()) < 8) + LivingEntity target = c.getTarget(); + if (target != null && target instanceof Player && MAUtils.distanceSquared((Player) target, e.getLocation()) < 8D) { CraftEntity ce = (CraftEntity) e; CraftWorld cw = (CraftWorld) e.getWorld(); diff --git a/src/com/garbagemule/MobArena/MAUtils.java b/src/com/garbagemule/MobArena/MAUtils.java index cce2fd5..e5c0088 100644 --- a/src/com/garbagemule/MobArena/MAUtils.java +++ b/src/com/garbagemule/MobArena/MAUtils.java @@ -1087,8 +1087,8 @@ public class MAUtils continue; } - double dist = p.getLocation().distanceSquared(e.getLocation()); - if (dist < current && dist < 256) + double dist = distanceSquared(p, e.getLocation()); + if (dist < current && dist < 256D) { current = dist; result = p; @@ -1097,6 +1097,20 @@ public class MAUtils return result; } + public static double distanceSquared(Player p, Location l) + { + try + { + return p.getLocation().distanceSquared(l); + } + catch(Exception e) + { + p.kickPlayer("Banned for life! No, but stop trying to cheat in MobArena!"); + MobArena.warning(p.getName() + " tried to cheat in MobArena and has been kicked."); + return Double.MAX_VALUE; + } + } + /** * Convert a proper arena name to a config-file name. * All spaces are replaced by underscores, and the whole String is diff --git a/src/com/garbagemule/MobArena/MobArena.java b/src/com/garbagemule/MobArena/MobArena.java index b02a145..52d3076 100644 --- a/src/com/garbagemule/MobArena/MobArena.java +++ b/src/com/garbagemule/MobArena/MobArena.java @@ -46,8 +46,8 @@ public class MobArena extends JavaPlugin // Global variables public static PluginDescriptionFile desc; public static File dir, arenaDir; - public static final double MIN_PLAYER_DISTANCE = 15.0; - public static final double MIN_PLAYER_DISTANCE_SQUARED = MIN_PLAYER_DISTANCE * MIN_PLAYER_DISTANCE; + public static final double MIN_PLAYER_DISTANCE = 15D; + public static final double MIN_PLAYER_DISTANCE_SQUARED = 225D; public static final int ECONOMY_MONEY_ID = -29; public static Random random = new Random(); diff --git a/src/com/garbagemule/MobArena/util/WaveUtils.java b/src/com/garbagemule/MobArena/util/WaveUtils.java index 8ae51ca..c0e3a99 100644 --- a/src/com/garbagemule/MobArena/util/WaveUtils.java +++ b/src/com/garbagemule/MobArena/util/WaveUtils.java @@ -30,19 +30,11 @@ public class WaveUtils { for (Player p : players) { - try - { - if (l.distanceSquared(p.getLocation()) >= MobArena.MIN_PLAYER_DISTANCE_SQUARED) - continue; - - result.add(l); - break; - } - catch (Exception e) - { - p.kickPlayer("Banned for life! No, but stop trying to cheat in MobArena!"); - MobArena.warning(p.getName() + " tried to cheat in MobArena and has been kicked."); - } + if (MAUtils.distanceSquared(p, l) >= MobArena.MIN_PLAYER_DISTANCE_SQUARED) + continue; + + result.add(l); + break; } } diff --git a/src/com/garbagemule/MobArena/waves/BossAbility.java b/src/com/garbagemule/MobArena/waves/BossAbility.java index af38be1..fc36abb 100644 --- a/src/com/garbagemule/MobArena/waves/BossAbility.java +++ b/src/com/garbagemule/MobArena/waves/BossAbility.java @@ -16,6 +16,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import com.garbagemule.MobArena.Arena; +import com.garbagemule.MobArena.MAUtils; import com.garbagemule.MobArena.MobArena; import com.garbagemule.MobArena.util.WaveUtils; @@ -334,7 +335,7 @@ public enum BossAbility { List result = new LinkedList(); for (Player p : arena.getLivingPlayers()) - if (p.getLocation().distanceSquared(boss.getLocation()) > x*x) + if (MAUtils.distanceSquared(p, boss.getLocation()) > (double) (x*x)) result.add(p); return result; }