diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index 181fc4d82..b2728edd9 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -600,7 +600,11 @@ public class PlayerEventListener implements Listener { // i.e. untrusted-visit can override deny-teleport // this is acceptable, because otherwise it wouldn't make sense to have both flags set if (result || (plot.getFlag(UntrustedVisitFlag.class) && plot.getHomeSynchronous().equals(BukkitUtil.adaptComplete(to)))) { - plotListener.plotEntry(pp, plot); + // returns false if the player is not allowed to enter the plot (if they are denied, for example) + // don't let the move event cancel the entry after teleport, but rather catch and cancel early (#4647) + if (!plotListener.plotEntry(pp, plot)) { + event.setCancelled(true); + } } else { pp.sendMessage( TranslatableCaption.of("deny.no_enter"),