diff --git a/MobArena.jar b/MobArena.jar index c2a761e..7fceb5f 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/resources/plugin.yml b/resources/plugin.yml index cc304cb..662b1db 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.94.3.18 +version: 0.94.3.19 softdepend: [Spout,Permissions,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells] commands: ma: diff --git a/src/com/garbagemule/MobArena/MAListener.java b/src/com/garbagemule/MobArena/MAListener.java index 3c24da7..556061f 100644 --- a/src/com/garbagemule/MobArena/MAListener.java +++ b/src/com/garbagemule/MobArena/MAListener.java @@ -623,8 +623,41 @@ public class MAListener implements ArenaListener arena.playerLeave(p); } - + public void onPlayerTeleport(PlayerTeleportEvent event) + { + if (!arena.enabled || !arena.setup || arena.allowWarp || arena.edit) + return; + + Location to = event.getTo(); + Location from = event.getFrom(); + Player p = event.getPlayer(); + + if (arena.inRegion(from)) + { + // Covers the case in which both locations are in the arena. + if ((arena.inRegion(to) && arena.running) || isWarp(to) || to.equals(arena.locations.get(p))) + return; + + MAUtils.tellPlayer(p, Msg.WARP_FROM_ARENA); + event.setCancelled(true); + } + else if (arena.inRegion(to)) + { + if (isWarp(from) || to.equals(arena.locations.get(p))) + return; + + MAUtils.tellPlayer(p, Msg.WARP_TO_ARENA); + event.setCancelled(true); + } + } + + private boolean isWarp(Location l) + { + return l.equals(arena.arenaLoc) || l.equals(arena.lobbyLoc) || l.equals(arena.spectatorLoc); + } + + /*public void onPlayerTeleport(PlayerTeleportEvent event) { if (!arena.running || arena.edit || !arena.enabled || !arena.setup || arena.allowWarp) return; @@ -668,7 +701,7 @@ public class MAListener implements ArenaListener event.setCancelled(true); return; } - } + }*/ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {