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