From 09a77e98cc15d8f434572718225757157518c158 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Tue, 3 Dec 2013 13:57:43 -0800 Subject: [PATCH 1/2] Prevent Enderdragon from creating portal. --- .../game/arcade/game/games/uhc/UHC.java | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java index 81472ac74..4831adce4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java @@ -33,6 +33,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntityCreatePortalEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; @@ -185,12 +186,40 @@ public class UHC extends TeamGame } @EventHandler - public void endPortalTransfer(PlayerPortalEvent event) + public void endPortalTransfer(final PlayerPortalEvent event) { + System.out.println(event.getCause()); if (event.getCause() == TeleportCause.END_PORTAL) { event.setCancelled(true); - event.getPlayer().teleport(((CraftServer)Bukkit.getServer()).getHandle().getServer().getPlayerList().calculateTarget(event.getPlayer().getLocation(), ((CraftWorld)Bukkit.getWorld("world_the_end")).getHandle())); + + if (event.getPlayer().getLocation().getWorld() == Bukkit.getWorld("world_the_end")) + { + System.out.println("in teleport place"); + Bukkit.getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable() + { + public void run() + { + if (event.getPlayer().isOnline()) + { + System.out.println("Teleporting player back to world: " + new Location(WorldData.World, 2.5, 70, 0.5)); + event.getPlayer().teleport(new Location(event.getPlayer().getWorld(), 2.5, 70, 0.5)); + event.getPlayer().sendMessage("Hi, get back in your world."); + } + } + }, 2L); + } + else + event.getPlayer().teleport(((CraftServer)Bukkit.getServer()).getHandle().getServer().getPlayerList().calculateTarget(event.getPlayer().getLocation(), ((CraftWorld)Bukkit.getWorld("world_the_end")).getHandle())); + } + } + + @EventHandler + public void endPortalCreation(final EntityCreatePortalEvent event) + { + if (event.getEntity() instanceof EnderDragon) + { + event.setCancelled(true); } } From 8984309c561f5091ef37f3b6eb0d7843c8e2e671 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Tue, 3 Dec 2013 17:41:58 -0800 Subject: [PATCH 2/2] Cleaned up portal cancellation. --- .../game/arcade/game/games/uhc/UHC.java | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java index 610bab487..f8dddbde8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java @@ -9,12 +9,14 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Chunk; import org.bukkit.Difficulty; +import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.World.Environment; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_6_R3.CraftServer; import org.bukkit.craftbukkit.v1_6_R3.CraftWorld; import org.bukkit.enchantments.Enchantment; @@ -101,6 +103,8 @@ public class UHC extends TeamGame private ArrayList _portal = null; private boolean _portalCreated = false; private GameTeam _lastDragonDamager = null; + + private Location _exitLocation = null; public UHC(ArcadeManager manager) { @@ -178,29 +182,10 @@ public class UHC extends TeamGame @EventHandler public void endPortalTransfer(final PlayerPortalEvent event) { - System.out.println(event.getCause()); if (event.getCause() == TeleportCause.END_PORTAL) { event.setCancelled(true); - - if (event.getPlayer().getLocation().getWorld() == Bukkit.getWorld("world_the_end")) - { - System.out.println("in teleport place"); - Bukkit.getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable() - { - public void run() - { - if (event.getPlayer().isOnline()) - { - System.out.println("Teleporting player back to world: " + new Location(WorldData.World, 2.5, 70, 0.5)); - event.getPlayer().teleport(new Location(event.getPlayer().getWorld(), 2.5, 70, 0.5)); - event.getPlayer().sendMessage("Hi, get back in your world."); - } - } - }, 2L); - } - else - event.getPlayer().teleport(((CraftServer)Bukkit.getServer()).getHandle().getServer().getPlayerList().calculateTarget(event.getPlayer().getLocation(), ((CraftWorld)Bukkit.getWorld("world_the_end")).getHandle())); + event.getPlayer().teleport(((CraftServer)Bukkit.getServer()).getHandle().getServer().getPlayerList().calculateTarget(event.getPlayer().getLocation(), ((CraftWorld)Bukkit.getWorld("world_the_end")).getHandle())); } }