@EventHandler(ignoreCancelled = true) public void onGMChange(PlayerGameModeChangeEvent event){ MinigamePlayer ply = pdata.getMinigamePlayer(event.getPlayer()); if(ply == null) return; if(ply.isInMinigame() && !ply.getAllowGamemodeChange()){ event.setCancelled(true); event.getPlayer().sendMessage(ChatColor.RED + "[Minigames] " + ChatColor.WHITE + MinigameUtils.getLang("minigame.error.noGamemode")); } }
/** * @param event */ @EventHandler(priority = EventPriority.HIGH) public void onPlayerGameModeChangeEvent(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); GameMode gameMode = event.getNewGameMode(); Field field = plugin.getForceFieldManager().getEnabledSourceField(player.getLocation(), FieldFlag.ALL); if (field != null) { if (field.getSettings().getForceEntryGameMode() != null) { if (FieldFlag.ENTRY_GAME_MODE.applies(field, player)) { if (!gameMode.equals(field.getSettings().getForceEntryGameMode())) { ChatHelper.send(player, "cannotChangeGameMode"); event.setCancelled(true); } } } } }
@EventHandler public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); LocalPlayer localPlayer = plugin.wrapPlayer(player); WorldConfiguration wcfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager().get(localPlayer.getWorld()); Session session = WorldGuard.getInstance().getPlatform().getSessionManager().getIfPresent(localPlayer); if (session != null) { GameModeFlag handler = session.getHandler(GameModeFlag.class); if (handler != null && wcfg.useRegions && !WorldGuard.getInstance().getPlatform().getSessionManager().hasBypass(localPlayer, localPlayer.getWorld())) { GameMode expected = handler.getSetGameMode(); if (handler.getOriginalGameMode() != null && expected != null && expected != BukkitAdapter.adapt(event.getNewGameMode())) { log.info("Game mode change on " + player.getName() + " has been blocked due to the region GAMEMODE flag"); event.setCancelled(true); } } } }