From 0fed35a80f9d700ca6d3d55e7f0031138a5b5768 Mon Sep 17 00:00:00 2001 From: zml2008 Date: Sat, 21 Apr 2012 15:12:16 -0700 Subject: [PATCH] Add bypass handling to the gamemode flag Set a player's previous gamemode when exiting a gamemode region to the server's default gamemode if there is not a previous gamemode already set --- .../sk89q/worldguard/bukkit/WorldGuardPlayerListener.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java index ba8bfa82..df646616 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlayerListener.java @@ -206,10 +206,12 @@ public void onPlayerMove(PlayerMoveEvent event) { + regionList); } - if (gameMode != null) { + if (!hasBypass && gameMode != null) { if (player.getGameMode() != gameMode) { state.lastGameMode = player.getGameMode(); player.setGameMode(gameMode); + } else if (state.lastGameMode == null) { + state.lastGameMode = player.getServer().getDefaultGameMode(); } } else { if (state.lastGameMode != null) { @@ -237,7 +239,7 @@ public void onPlayerMove(PlayerMoveEvent event) { public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); - if (wcfg.useRegions) { + if (wcfg.useRegions && !plugin.getGlobalRegionManager().hasBypass(player, player.getWorld())) { GameMode gameMode = plugin.getGlobalRegionManager().get(player.getWorld()) .getApplicableRegions(player.getLocation()).getFlag(DefaultFlag.GAME_MODE); if (plugin.getFlagStateManager().getState(player).lastGameMode != null