From 2664acbe47546fe64bbfd972c1455a424dc7675f Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 26 Feb 2019 08:19:05 -0800 Subject: [PATCH] Adds null check for world in portal teleport listener This should not occur, but apparently, it can sometimes. https://github.com/BentoBoxWorld/BentoBox/issues/583 --- .../PortalTeleportationListener.java | 2 +- .../PortalTeleportationListenerTest.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/world/bentobox/bentobox/listeners/PortalTeleportationListener.java b/src/main/java/world/bentobox/bentobox/listeners/PortalTeleportationListener.java index fc2407612..6ad889c09 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/PortalTeleportationListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/PortalTeleportationListener.java @@ -52,7 +52,7 @@ public class PortalTeleportationListener implements Listener { return false; } World fromWorld = e.getFrom().getWorld(); - if (e.getCause() != TeleportCause.END_PORTAL || !plugin.getIWM().isEndGenerate(fromWorld)) { + if (fromWorld == null || e.getCause() != TeleportCause.END_PORTAL || !plugin.getIWM().isEndGenerate(fromWorld)) { // Do nothing special return false; } diff --git a/src/test/java/world/bentobox/bentobox/listeners/PortalTeleportationListenerTest.java b/src/test/java/world/bentobox/bentobox/listeners/PortalTeleportationListenerTest.java index 90df754ef..fc3e81ade 100644 --- a/src/test/java/world/bentobox/bentobox/listeners/PortalTeleportationListenerTest.java +++ b/src/test/java/world/bentobox/bentobox/listeners/PortalTeleportationListenerTest.java @@ -207,6 +207,31 @@ public class PortalTeleportationListenerTest { assertFalse(e.isCancelled()); } + /** + * Test method for {@link PortalTeleportationListener#onEndIslandPortal(org.bukkit.event.player.PlayerPortalEvent)}. + */ + @Test + public void testOnEndIslandPortalNullLocation() { + PortalTeleportationListener np = new PortalTeleportationListener(plugin); + Location loc = null; + PlayerPortalEvent e = new PlayerPortalEvent(null, loc, null, null, TeleportCause.END_PORTAL); + assertFalse(np.onEndIslandPortal(e)); + assertFalse(e.isCancelled()); + } + + /** + * Test method for {@link PortalTeleportationListener#onEndIslandPortal(org.bukkit.event.player.PlayerPortalEvent)}. + */ + @Test + public void testOnEndIslandPortalNullWorld() { + PortalTeleportationListener np = new PortalTeleportationListener(plugin); + Location loc = mock(Location.class); + when(loc.getWorld()).thenReturn(null); + PlayerPortalEvent e = new PlayerPortalEvent(null, loc, null, null, TeleportCause.END_PORTAL); + assertFalse(np.onEndIslandPortal(e)); + assertFalse(e.isCancelled()); + } + /** * Test method for {@link PortalTeleportationListener#onEndIslandPortal(org.bukkit.event.player.PlayerPortalEvent)}. */