diff --git a/src/main/java/world/bentobox/border/listeners/PlayerListener.java b/src/main/java/world/bentobox/border/listeners/PlayerListener.java index b060c68..cfb4bfa 100644 --- a/src/main/java/world/bentobox/border/listeners/PlayerListener.java +++ b/src/main/java/world/bentobox/border/listeners/PlayerListener.java @@ -348,8 +348,8 @@ public void onPlayerLeaveIsland(PlayerMoveEvent e) { } Util.teleportAsync(p, targetPos).thenRun(() -> inTeleport.remove(p.getUniqueId())); } else { - BentoBox.getInstance().logDebug("Ray trace found a valid safe position for player " + p.getName() + " and teleporting them there."); - Util.teleportAsync(p, targetPos).thenRun(() -> inTeleport.remove(p.getUniqueId())); + BentoBox.getInstance().logDebug("Ray trace did not find a valid position for player " + p.getName() + " so teleporting them back to their island home."); + Util.teleportAsync(p, i.getHome("")).thenRun(() -> inTeleport.remove(p.getUniqueId())); } }); diff --git a/src/test/java/world/bentobox/border/listeners/PlayerListenerTest.java b/src/test/java/world/bentobox/border/listeners/PlayerListenerTest.java index 0dc3db0..1b08650 100644 --- a/src/test/java/world/bentobox/border/listeners/PlayerListenerTest.java +++ b/src/test/java/world/bentobox/border/listeners/PlayerListenerTest.java @@ -295,14 +295,11 @@ public void testOnPlayerLeaveIslandReturnTeleportOutsideCheckNotInGameWorld() { */ @Test public void testOnPlayerLeaveIslandVanillaNether() { - when(iwm.isIslandNether(any())).thenReturn(false); // vanilla nether, not island nether - when(iwm.isIslandEnd(any())).thenReturn(false); - when(island.onIsland(any())).thenReturn(false); + when(addon.inGameWorld(any())).thenReturn(false); // vanilla nether is not a game world settings.setReturnTeleport(true); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); pl.onPlayerLeaveIsland(event); - verify(addon, times(2)).getIslands(); - assertTrue(event.isCancelled()); + verify(addon, never()).getIslands(); } /** @@ -311,14 +308,11 @@ public void testOnPlayerLeaveIslandVanillaNether() { */ @Test public void testOnPlayerLeaveIslandVanillaEnd() { - when(iwm.isIslandNether(any())).thenReturn(false); - when(iwm.isIslandEnd(any())).thenReturn(false); // vanilla end, not island end - when(island.onIsland(any())).thenReturn(false); + when(addon.inGameWorld(any())).thenReturn(false); // vanilla end is not a game world settings.setReturnTeleport(true); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); pl.onPlayerLeaveIsland(event); - verify(addon, times(2)).getIslands(); - assertTrue(event.isCancelled()); + verify(addon, never()).getIslands(); } /**