diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java index 03e8df67..d7781a23 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java @@ -283,8 +283,9 @@ public void onPlayerMove(PlayerMoveEvent event) { if (event.getFrom().getBlockX() != event.getTo().getBlockX() || event.getFrom().getBlockY() != event.getTo().getBlockY() || event.getFrom().getBlockZ() != event.getTo().getBlockZ()) { + PlayerFlagState state = plugin.getFlagStateManager().getState(player); - LocalPlayer localPlayer = plugin.wrapPlayer(player); + LocalPlayer localPlayer = plugin.wrapPlayer(player); boolean hasBypass = plugin.getGlobalRegionManager().hasBypass(player, world); RegionManager mgr = plugin.getGlobalRegionManager().get(world); @@ -303,6 +304,12 @@ public void onPlayerMove(PlayerMoveEvent event) { return; } + //Fix for bug #728 + if (state.lastWorld != null && !state.lastWorld.equals(world)) { + plugin.getFlagStateManager().forget(player); + return; + } + // Have to set this state if (state.lastExitAllowed == null) { state.lastExitAllowed = mgr.getApplicableRegions(toVector(event.getFrom())) @@ -325,7 +332,7 @@ public void onPlayerMove(PlayerMoveEvent event) { String farewell = set.getFlag(DefaultFlag.FAREWELL_MESSAGE); Boolean notifyEnter = set.getFlag(DefaultFlag.NOTIFY_ENTER); Boolean notifyLeave = set.getFlag(DefaultFlag.NOTIFY_LEAVE); - + if (state.lastFarewell != null && (farewell == null || !state.lastFarewell.equals(farewell))) { String replacedFarewell = plugin.replaceMacros(