From 8c758ce28bf05e3bfcecdad44450c328b8b61a70 Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Tue, 30 Dec 2014 16:38:40 -0800 Subject: [PATCH] Fixed players getting stuck in nether portals. This is a workaround for the spigot bug where a PlayerTeleportEvent doesn't fire for portal teleportations. --- .../GriefPrevention/PlayerEventHandler.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 0aa14b3..483182c 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -768,6 +768,20 @@ class PlayerEventHandler implements Listener } } + //when a player teleports via a portal + @EventHandler(priority = EventPriority.LOWEST) + void onPlayerPortal(PlayerPortalEvent event) + { + Player player = event.getPlayer(); + + //FEATURE: when players get trapped in a nether portal, send them back through to the other side + if(event.getCause() == TeleportCause.NETHER_PORTAL) + { + CheckForPortalTrapTask task = new CheckForPortalTrapTask(player, event.getFrom()); + GriefPrevention.instance.getServer().getScheduler().scheduleSyncDelayedTask(GriefPrevention.instance, task, 100L); + } + } + //when a player teleports @EventHandler(priority = EventPriority.LOWEST) public void onPlayerTeleport(PlayerTeleportEvent event) @@ -791,13 +805,6 @@ class PlayerEventHandler implements Listener } } - //FEATURE: when players get trapped in a nether portal, send them back through to the other side - if(event.getCause() == TeleportCause.NETHER_PORTAL) - { - CheckForPortalTrapTask task = new CheckForPortalTrapTask(player, event.getFrom()); - GriefPrevention.instance.getServer().getScheduler().scheduleSyncDelayedTask(GriefPrevention.instance, task, 100L); - } - //FEATURE: prevent teleport abuse to win sieges //these rules only apply to siege worlds only