From 7f6ec7ca2b7ecd38e04e8ab8752007f9c42c585d Mon Sep 17 00:00:00 2001 From: Steffion Date: Mon, 5 Aug 2013 00:02:34 +0200 Subject: [PATCH] Can't run out of the arena while ingame. --- .../Listeners/OnPlayerMoveEvent.java | 59 +++++++++++-------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/nl/Steffion/BlockHunt/Listeners/OnPlayerMoveEvent.java b/src/nl/Steffion/BlockHunt/Listeners/OnPlayerMoveEvent.java index 66ff7d6..14affe6 100644 --- a/src/nl/Steffion/BlockHunt/Listeners/OnPlayerMoveEvent.java +++ b/src/nl/Steffion/BlockHunt/Listeners/OnPlayerMoveEvent.java @@ -2,6 +2,7 @@ package nl.Steffion.BlockHunt.Listeners; import nl.Steffion.BlockHunt.Arena; import nl.Steffion.BlockHunt.W; +import nl.Steffion.BlockHunt.Arena.ArenaState; import org.bukkit.Effect; import org.bukkit.Location; @@ -20,32 +21,40 @@ public class OnPlayerMoveEvent implements Listener { for (Arena arena : W.arenaList) { if (arena.playersInArena.contains(player)) { - double maxX = Math.max(arena.pos1.getX(), arena.pos2.getX()); - double minX = Math.min(arena.pos1.getX(), arena.pos2.getX()); - double maxY = Math.max(arena.pos1.getY(), arena.pos2.getY()); - double minY = Math.min(arena.pos1.getY(), arena.pos2.getY()); - double maxZ = Math.max(arena.pos1.getZ(), arena.pos2.getZ()); - double minZ = Math.min(arena.pos1.getZ(), arena.pos2.getZ()); + if (arena.gameState == ArenaState.INGAME) { + double maxX = Math + .max(arena.pos1.getX(), arena.pos2.getX()); + double minX = Math + .min(arena.pos1.getX(), arena.pos2.getX()); + double maxY = Math + .max(arena.pos1.getY(), arena.pos2.getY()); + double minY = Math + .min(arena.pos1.getY(), arena.pos2.getY()); + double maxZ = Math + .max(arena.pos1.getZ(), arena.pos2.getZ()); + double minZ = Math + .min(arena.pos1.getZ(), arena.pos2.getZ()); - Location loc = player.getLocation(); - if (loc.getBlockX() > maxX || loc.getBlockX() < minX) { - event.setCancelled(true); - loc.getWorld().playEffect(loc, Effect.ENDER_SIGNAL, 0); - loc.getWorld().playSound(loc, Sound.GHAST_FIREBALL, 1, 1); - } else if (loc.getBlockZ() > maxZ || loc.getBlockZ() < minZ) { - event.setCancelled(true); - loc.getWorld().playEffect(loc, Effect.ENDER_SIGNAL, 0); - loc.getWorld().playSound(loc, Sound.GHAST_FIREBALL, 1, 1); - } else if (loc.getBlockY() > maxY) { - event.setCancelled(true); - loc.getWorld().playEffect(loc, Effect.ENDER_SIGNAL, 0); - loc.getWorld().playSound(loc, Sound.GHAST_FIREBALL, 1, 1); - player.teleport(loc.subtract(0, 1, 0)); - } else if (loc.getBlockY() < minY) { - event.setCancelled(true); - loc.getWorld().playEffect(loc, Effect.ENDER_SIGNAL, 0); - loc.getWorld().playSound(loc, Sound.GHAST_FIREBALL, 1, 1); - player.teleport(loc.add(0, 5, 0)); + Location loc = player.getLocation(); + if (loc.getBlockX() > maxX || loc.getBlockX() < minX) { + event.setCancelled(true); + player.playEffect(loc, Effect.ENDER_SIGNAL, 0); + player.playSound(loc, Sound.GHAST_FIREBALL, 1, 1); + } else if (loc.getBlockZ() > maxZ || loc.getBlockZ() < minZ) { + event.setCancelled(true); + player.playEffect(loc, Effect.ENDER_SIGNAL, 0); + player.playSound(loc, Sound.GHAST_FIREBALL, 1, 1); + } else if (loc.getBlockY() > maxY) { + event.setCancelled(true); + player.playEffect(loc, Effect.ENDER_SIGNAL, 0); + player.playSound(loc, Sound.GHAST_FIREBALL, 1, 1); + player.teleport(loc.subtract(0, 1, 0)); + } else if (loc.getBlockY() < minY) { + event.setCancelled(true); + player.playEffect(loc, Effect.ENDER_SIGNAL, 0); + player.playSound(loc, Sound.GHAST_FIREBALL, 1, 1); + player.teleport(loc.add(0, 5, 0)); + } } } }