@Override public void setGameMode(GameMode mode) { if (getHandle().playerNetServerHandler == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); } if (mode != getGameMode()) { PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(this, mode); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } getHandle().theItemInWorldManager.setGameType(net.minecraft.world.WorldSettings.GameType.getByID(mode.getValue())); getHandle().fallDistance = 0; getHandle().playerNetServerHandler.sendPacket(new net.minecraft.network.play.server.S2BPacketChangeGameState(3, mode.getValue())); } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerGameModeChangeEvent(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); if (!WorldGuardUtils.hasBypass(player)) { new BukkitRunnable() { @Override public void run() { try { event.getPlayer().setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(FlyFlag.class).getCurrentValue()); } catch(Exception ignored) { } } }.runTask(WorldGuardExtraFlagsPlugin.getPlugin()); } }
@Test public void shouldDoEverything() { // given Player player = mock(Player.class); World world = mock(World.class); given(world.getName()).willReturn("world"); given(player.getWorld()).willReturn(world); Group group = mockGroup("world"); given(groupManager.getGroupFromWorld("world")).willReturn(group); PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(player, GameMode.CREATIVE); // when listener.onPlayerGameModeChange(event); // then verify(groupManager).getGroupFromWorld("world"); verify(playerManager).addPlayer(player, group); verify(bukkitService).runTaskLater(any(Runnable.class), any(Long.class)); }
@EventHandler public void onGamemodeChange(PlayerGameModeChangeEvent event){ GameMode newMode = event.getNewGameMode(); String worldName = event.getPlayer().getWorld().getName(); if(!event.getPlayer().hasPermission("spigotplus.gamemode." + worldName + "." + newMode)){ boolean modeFound = false; for(GameMode mode : GameMode.values()){ if(event.getPlayer().hasPermission("spigotplus.gamemode." + worldName + "." + mode)){ modeFound = true; break; } } event.setCancelled(true); event.getPlayer().sendMessage("You are not permitted to use the " + newMode + " gamemode in this world"); if(!modeFound){ logWarn("The player " + event.getPlayer().getName() + " is not permitted to use any gamemode in the world \"" + worldName + "\""); event.getPlayer().kickPlayer("There is a configuration error with the gamemodes you are permitted to use. Please contact the server administrator"); } } }
@Override public void setGameMode(GameMode mode) { if (getHandle().playerConnection == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); } if (mode != getGameMode()) { PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(this, mode); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } getHandle().playerInteractManager.setGameMode(EnumGamemode.getById(mode.getValue())); getHandle().fallDistance = 0; getHandle().playerConnection.sendPacket(new PacketPlayOutGameStateChange(3, mode.getValue())); } }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); GameMode oldGameMode = player.getGameMode(); GameMode newGameMode = event.getNewGameMode(); Group group = plugin.getGroupManager().getGroupFromWorld(player.getWorld().getName()); if (group == null) { group = new Group(player.getWorld().getName(), null, null); } plugin.getSerializer().writePlayerDataToFile(player, PlayerSerialization.serializePlayer(player, plugin), group, oldGameMode); plugin.getSerializer().getPlayerDataFromFile( player, group, newGameMode); }
@Override public void setGameMode(GameMode mode) { if (getHandle().playerConnection == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); } if (mode != getGameMode()) { PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(this, mode); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } getHandle().setSpectatorTarget(getHandle()); getHandle().playerInteractManager.setGameMode(WorldSettings.EnumGamemode.getById(mode.getValue())); getHandle().fallDistance = 0; getHandle().playerConnection.sendPacket(new PacketPlayOutGameStateChange(3, mode.getValue())); } }
@Override public void setGameMode(GameMode mode) { if (getHandle().playerConnection == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); } if (mode != getGameMode()) { PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(this, mode); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } getHandle().playerInteractManager.setGameMode(EnumGamemode.a(mode.getValue())); getHandle().playerConnection.sendPacket(new Packet70Bed(3, mode.getValue())); } }
@EventHandler(priority = EventPriority.NORMAL) public void onPlayerQuitCreative(final PlayerGameModeChangeEvent event) { if (event.getPlayer().getGameMode() == GameMode.CREATIVE) { final boolean wasFlying = event.getPlayer().isFlying(); final Player player = event.getPlayer(); if (Perms.hasFly(event.getPlayer()) && this.feature.hasFlyMode(event.getPlayer())) { Bukkit.getScheduler().runTaskLater(this.feature.getPlugin(), new BukkitRunnable() { @Override public void run() { if (player.isOnline()) { player.setAllowFlight(true); player.setFlying(wasFlying); } } }, 1L); } } }
@Override public void setGameMode(GameMode mode) { if (getHandle().field_71135_a == null) return; if (mode == null) { throw new IllegalArgumentException("Mode cannot be null"); } if (mode != getGameMode()) { PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(this, mode); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } getHandle().field_71134_c.func_73076_a(net.minecraft.world.EnumGameType.func_77146_a(mode.getValue())); getHandle().field_71135_a.func_72567_b(new net.minecraft.network.packet.Packet70GameEvent(3, mode.getValue())); } }
@EventHandler(priority=EventPriority.HIGH) protected void onGamemodeChange(PlayerGameModeChangeEvent e) { if (SkyWarsReloaded.getPC().getPlayer(e.getPlayer().getUniqueId()) != null && SkyWarsReloaded.getPC().getPlayer(e.getPlayer().getUniqueId()).isSpectating() && !e.getNewGameMode().equals(GameMode.ADVENTURE) && SkyWarsReloaded.getPC().getPlayer(e.getPlayer().getUniqueId()).gamemodeChangeAllowed()) { e.setCancelled(true); e.getPlayer().setAllowFlight(true); } }
@EventHandler public void onGameModeChange(PlayerGameModeChangeEvent event) { GameMode gameMode = event.getPlayer().getGameMode(); // check if we switch to survival from an exempt GameMode and update. if (Arc.COMPATIBILITY) { if ((gameMode == GameMode.CREATIVE && event.getNewGameMode() == GameMode.SURVIVAL)) { MovingData.getData(event.getPlayer()).setLastGameModeChange(System.currentTimeMillis()); } } else { if ((gameMode == GameMode.CREATIVE || gameMode == GameMode.SPECTATOR) && event.getNewGameMode() == GameMode.SURVIVAL) { MovingData.getData(event.getPlayer()).setLastGameModeChange(System.currentTimeMillis()); } } }
@EventHandler public void onChangeGM(PlayerGameModeChangeEvent e) { Player p = e.getPlayer(); UUID pU = e.getPlayer().getUniqueId(); int GamemodeTemp1 = 0; if (e.getNewGameMode() == GameMode.SURVIVAL) { GamemodeTemp1 = 0; } else if (e.getNewGameMode() == GameMode.CREATIVE) { GamemodeTemp1 = 1; } else if (e.getNewGameMode() == GameMode.ADVENTURE) { GamemodeTemp1 = 2; } else if (e.getNewGameMode() == GameMode.SPECTATOR) { GamemodeTemp1 = 3; } int GamemodeTemp2 = Integer.valueOf(GamemodeTemp1); if (!ConfigTemp.getConfig().contains(String.valueOf(pU))) { ConfigTemp.getConfig().set(pU+".Player", String.valueOf(p)); ConfigTemp.getConfig().set(pU+".Options.Gamemode", Integer.valueOf(GamemodeTemp2)); ConfigTemp.saveConfigFile(); } else if (ConfigTemp.getConfig().contains(String.valueOf(pU))) { ConfigTemp.getConfig().set(pU+".Player", String.valueOf(p)); ConfigTemp.getConfig().set(pU+".Options.Gamemode", Integer.valueOf(GamemodeTemp2)); ConfigTemp.saveConfigFile(); } }
@EventHandler public void onGameModeSwitch(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); if (!InventoryManager.playerIsLoaded(player)) { return; } if (event.getNewGameMode() == GameMode.CREATIVE) { InventoryLocker.unlockSlots(player); } else if (event.getPlayer().getGameMode() == GameMode.CREATIVE) { InventoryLocker.lockSlots(player, true); } }
@EventHandler public void onGameMode(PlayerGameModeChangeEvent e) { if (e.getNewGameMode().equals(GameMode.SPECTATOR) && !e.getPlayer().getGameMode().equals(GameMode.SPECTATOR)) { packet.despawnAllStacks(e.getPlayer()); } else if (!e.getNewGameMode().equals(GameMode.SPECTATOR) && e.getPlayer().getGameMode().equals(GameMode.SPECTATOR)) { packet.spawnAllStacks(e.getPlayer()); } }
@EventHandler public void gameModeChange(final PlayerGameModeChangeEvent event) { Optional<User> optionalUser = UserManager.getInstance().getUser(event.getPlayer().getUniqueId()); User user = optionalUser.orElseGet(() -> new User(event.getPlayer(), Participation.SPECTATOR)); if (event.getPlayer().isOp() || event.getNewGameMode() == GameMode.CREATIVE) { user.setParticipation(Participation.ADMIN); } else { user.setParticipation(Participation.PARTICIPATOR); } UserManager.getInstance().addUser(user); }
@EventHandler public void onGamemodeChange(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); if (event.getNewGameMode() != GameMode.CREATIVE || Thirst.getInstance().getYAMLConfig().ignoreCreative) { ThirstManager.getThirst().displayThirst(player); return; } else if (event.getNewGameMode() == GameMode.CREATIVE && !Thirst.getInstance().getYAMLConfig().ignoreCreative) { for (PotionEffect effect : player.getActivePotionEffects()) { player.removePotionEffect(effect.getType()); } } if (Thirst.getInstance().getYAMLConfig().displayType.equalsIgnoreCase("scoreboard")) { if (Thirst.getInstance().getYAMLConfig().displayType.equalsIgnoreCase("SCOREBOARD")) player.setScoreboard(Bukkit.getServer().getScoreboardManager().getNewScoreboard()); } else if (Thirst.getInstance().getYAMLConfig().displayType.equalsIgnoreCase("action")) { UtilActionBar.getInstance().sendActionBar(player, ""); } else if (Thirst.getInstance().getYAMLConfig().displayType.equalsIgnoreCase("bossbar")) { ThirstData data = ThirstManager.getThirst().getThirstData(player); if (data.getBar() != null) { data.getBar().removePlayer(player); } } }
@Override protected GameMode[] get(final Event e, final Player[] source) { return get(source, new Converter<Player, GameMode>() { @Override @Nullable public GameMode convert(final Player p) { if (getTime() >= 0 && e instanceof PlayerGameModeChangeEvent && ((PlayerGameModeChangeEvent) e).getPlayer() == p && !Delay.isDelayed(e)) return ((PlayerGameModeChangeEvent) e).getNewGameMode(); return p.getGameMode(); } }); }
@Override public void change(final Event e, final @Nullable Object[] delta, final ChangeMode mode) throws UnsupportedOperationException { final GameMode m = delta == null ? Bukkit.getDefaultGameMode() : (GameMode) delta[0]; for (final Player p : getExpr().getArray(e)) { if (getTime() >= 0 && e instanceof PlayerGameModeChangeEvent && ((PlayerGameModeChangeEvent) e).getPlayer() == p && !Delay.isDelayed(e)) { if (((PlayerGameModeChangeEvent) e).getNewGameMode() != m) ((PlayerGameModeChangeEvent) e).setCancelled(true); } p.setGameMode(m); } }
@Override public boolean check(final Event e) { if (mode != null) { return mode.check(e, new Checker<GameMode>() { @Override public boolean check(final GameMode m) { return ((PlayerGameModeChangeEvent) e).getNewGameMode().equals(m); } }); } return true; }
@EventHandler(priority = EventPriority.HIGH) public void onGameModeChange(PlayerGameModeChangeEvent e) { Player p = e.getPlayer(); if (playerStateInfoMap.containsKey(p) && e.getNewGameMode() != GameMode.SPECTATOR) { // Don't let low-priority event listeners cancel the gamemode change if (e.isCancelled()) e.setCancelled(false); } }
@EventHandler public void onPlayerChangeGameMode(final PlayerGameModeChangeEvent e) { // Run this next Tick because bukkit and some plugins are changing variables after calling that event this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { AIOPlugin.getInstance().getJetpackManager().checkJetpackItemForPlayer(e.getPlayer()); } }); }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { if (event.isCancelled()) { return; } Player player = event.getPlayer(); Group group = groupManager.getGroupFromWorld(player.getWorld().getName()); ConsoleLogger.debug("[GM PROCESS] Player '" + player.getName() + "' changed to GameMode '" + event.getNewGameMode().name() + "' in group '" + group.getName() + "'"); playerManager.addPlayer(player, group); bukkitService.runTaskLater(() -> process.processGameModeChange(player, event.getNewGameMode(), group), 1L); }
@Test public void shouldDoNothingEventCancelled() { // given PlayerGameModeChangeEvent event = new PlayerGameModeChangeEvent(mock(Player.class), GameMode.CREATIVE); event.setCancelled(true); // when listener.onPlayerGameModeChange(event); // then verifyZeroInteractions(groupManager); verifyZeroInteractions(playerManager); verifyZeroInteractions(bukkitService); }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerGamemodeChanged(PlayerGameModeChangeEvent evt) { InventoryKey beforeKey = new InventoryKey(evt.getPlayer().getUniqueId(), getGroupName(evt .getPlayer().getWorld().getName()), evt.getPlayer().getGameMode()); InventoryKey afterKey = new InventoryKey(evt.getPlayer().getUniqueId(), getGroupName(evt .getPlayer().getWorld().getName()), evt.getNewGameMode()); if (!beforeKey.equals(afterKey)) { switchInventory(beforeKey, afterKey); } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onGameModeChange(PlayerGameModeChangeEvent event) { if (playersProcessingRan.contains(event.getPlayer().getUniqueId().toString())) { return; } scheduleTask(event.getPlayer()); }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void gamemodeChange(PlayerGameModeChangeEvent event){ BTPlayer ply; try{ ply = pdata.getBTPlayer(event.getPlayer()); } catch (UnknownBTPlayerException e){ return; } if(event.getNewGameMode() != GameMode.CREATIVE && ply.isBuildModeActive()){ ply.setBuildModeActive(false); ply.sendMessage("Build mode deactivated.", ChatColor.RED); } }