From 5c19b5ed9ee394188161f8bd44e7c99925bc97d6 Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 9 Oct 2019 02:08:15 +0100 Subject: [PATCH] Fixed pearling snitches not firing when pearled into PlayerTeleportEvent is fired before the player is actually teleported. As a result of this the location of the player as far as the event is concerned is where they are before they teleport. So when the snitch entry is handled it will take that location & not where they move to. By using the getTo() method & a player location override we can trigger snitches for when the player teleports in or out of a snitch field. --- .../JukeAlert/listener/JukeAlertListener.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/untamedears/JukeAlert/listener/JukeAlertListener.java b/src/main/java/com/untamedears/JukeAlert/listener/JukeAlertListener.java index f43c74f1..4b7c228d 100644 --- a/src/main/java/com/untamedears/JukeAlert/listener/JukeAlertListener.java +++ b/src/main/java/com/untamedears/JukeAlert/listener/JukeAlertListener.java @@ -477,7 +477,7 @@ public void enterSnitchProximity(PlayerMoveEvent event) { } return; } - handleSnitchEntry(player); + handleSnitchEntry(player, null); } catch (NullPointerException npe) { if (System.currentTimeMillis() - lastNotifyMoveFailure > failureReportDelay) { JukeAlert.getInstance().getLogger().log(Level.SEVERE, "MoveEvent generated an NPE", npe); @@ -500,10 +500,11 @@ public void onVehicleMovement(VehicleMoveEvent event) { public void onPlayerTeleport(PlayerTeleportEvent event) { Player player = event.getPlayer(); - handleSnitchEntry(player); + handleSnitchEntry(player, null); + handleSnitchEntry(player, event.getTo()); } - private void handleSnitchEntry(Player player) { + private void handleSnitchEntry(Player player, Location overrideLocation) { if (player.hasMetadata("NPC")) { return; @@ -513,7 +514,7 @@ private void handleSnitchEntry(Player player) { return; } UUID accountId = player.getUniqueId(); - Location location = player.getLocation(); + Location location = (overrideLocation == null ? player.getLocation() : overrideLocation); World world = location.getWorld(); Set inList = playersInSnitches.get(accountId); if (inList == null) {