@EventHandler public void onLimitChanged(LimitChangedEvent event) { final Player player = event.getPlayer(); if (TFM_AdminList.isSuperAdmin(player)) { return; } if (!event.getPlayer().equals(event.getTarget())) { player.sendMessage(ChatColor.RED + "Only admins can change the limit for other players!"); event.setCancelled(true); } if (event.getLimit() < 0 || event.getLimit() > 10000 && !TFM_DonatorList.isDonator(player)) { player.setOp(false); TFM_Util.bcastMsg( event.getPlayer().getName() + " tried to set their WorldEdit limit to " + event.getLimit() + " and has been de-opped", ChatColor.RED); event.setCancelled(true); player.sendMessage(ChatColor.RED + "You cannot set your limit higher than 10000 or to -1!"); } }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { Player targetPlayer = sender_p; if (args.length == 1) { targetPlayer = getPlayer(args[0]); if (targetPlayer == null) { sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND); return true; } } if (senderIsConsole) { if (targetPlayer == null) { sender.sendMessage( "When used from the console, you must define a target player: /cartsit <player>"); return true; } } else if (targetPlayer != sender_p && !TFM_AdminList.isSuperAdmin(sender)) { sender.sendMessage("Only superadmins can select another player as a /cartsit target."); return true; } if (targetPlayer.isInsideVehicle()) { targetPlayer.getVehicle().eject(); } else { Minecart nearest_cart = null; for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) { if (cart.isEmpty()) { if (nearest_cart == null) { nearest_cart = cart; } else { if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation())) { nearest_cart = cart; } } } } if (nearest_cart != null) { nearest_cart.setPassenger(targetPlayer); } else { sender.sendMessage("There are no empty minecarts in the target world."); } } return true; }
/* */ public boolean senderHasPermission() /* */ { /* 67 */ CommandPermissions permissions = (CommandPermissions) commandClass.getAnnotation(CommandPermissions.class); /* 69 */ if (permissions == null) /* */ { /* 71 */ TFM_Log.warning(commandClass.getName() + " is missing permissions annotation."); /* 72 */ return true; /* */ } /* 75 */ boolean isSuper = TFM_AdminList.isSuperAdmin(commandSender); /* 76 */ boolean isSenior = false; /* 78 */ if (isSuper) { /* 80 */ isSenior = TFM_AdminList.isSeniorAdmin(commandSender); /* */ } /* 83 */ AdminLevel level = permissions.level(); /* 84 */ SourceType source = permissions.source(); /* 85 */ boolean blockHostConsole = permissions.blockHostConsole(); /* 87 */ if (!(commandSender instanceof Player)) /* */ { /* 89 */ if (source == SourceType.ONLY_IN_GAME) { /* 91 */ return false; /* */ } /* 94 */ if ((level == AdminLevel.SENIOR) && (!isSenior)) { /* 96 */ return false; /* */ } /* 99 */ if ((blockHostConsole) && (TFM_Util.isFromHostConsole(commandSender.getName()))) { /* 101 */ return false; /* */ } /* 104 */ return true; /* */ } /* 107 */ Player senderPlayer = (Player) commandSender; /* 109 */ if (source == SourceType.ONLY_CONSOLE) { /* 111 */ return false; /* */ } /* 114 */ if (level == AdminLevel.SENIOR) /* */ { /* 116 */ if (!isSenior) { /* 118 */ return false; /* */ } /* 121 */ if (!TFM_PlayerData.getPlayerData(senderPlayer).isSuperadminIdVerified()) { /* 123 */ return false; /* */ } /* 126 */ return true; /* */ } /* 129 */ if ((level == AdminLevel.SUPER) && (!isSuper)) { /* 131 */ return false; /* */ } /* 134 */ if ((level == AdminLevel.OP) && (!senderPlayer.isOp())) { /* 136 */ return false; /* */ } /* 139 */ return true; /* */ }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length == 1) { if (!args[0].equals("reload")) { return false; } if (!TFM_AdminList.isSuperAdmin(sender)) { playerMsg(TFM_Command.MSG_NO_PERMS); return true; } TFM_MainConfig.load(); TFM_AdminList.load(); TFM_PermbanList.load(); TFM_PlayerList.load(); TFM_BanManager.load(); TFM_CommandBlocker.load(); final String message = String.format( "%s v%s reloaded.", TotalFreedomMod.pluginName, TotalFreedomMod.pluginVersion); playerMsg(message); TFM_Log.info(message); return true; } TFM_Util.playerMsg(sender_p, "§9§ki§r §7|§6Electro§eFreedom§6Mod§7| §9§ki§r", ChatColor.GOLD); TFM_Util.playerMsg(sender_p, "Edited by: SanikIsFast.", ChatColor.GREEN); TFM_Util.playerMsg(sender_p, "§5Made in the image of the §9TFM", ChatColor.GOLD); TFM_Util.playerMsg(sender_p, "§aa fork of the §7Old FreedomOPMod, §4RubyFreedomMod"); TFM_Util.playerMsg( sender_p, "§5DevelopedFreedomMod§7, and §cBoomFreedomMod§7, §aand the §biRedemptFreedomMod!"); TFM_Util.playerMsg( sender_p, "§7This is ElectoFreedomMod v§8:§b" + plugin.getDescription().getVersion(), ChatColor.GOLD); return true; }
@Override public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length == 1) { if (!args[0].equals("reload")) { return false; } if (!TFM_AdminList.isSuperAdmin(sender)) { playerMsg(TFM_Command.MSG_NO_PERMS); return true; } TFM_MainConfig.load(); TFM_AdminList.load(); TFM_PermbanList.load(); TFM_PlayerList.load(); TFM_BanManager.load(); TFM_CommandBlocker.load(); final String message = String.format("%s v%s.%s reloaded.", TotalFreedomMod.pluginName, TotalFreedomMod.pluginVersion, TotalFreedomMod.buildNumber); playerMsg(message); TFM_Log.info(message); return true; } playerMsg("NickFreedomMod for 'Nick Freedom', the forked all-op server, forked from TotalFreedom.", ChatColor.GOLD); playerMsg(String.format("Version " + ChatColor.BLUE + "%s.%s" + ChatColor.GOLD + ", built " + ChatColor.BLUE + "%s" + ChatColor.GOLD + " by " + ChatColor.BLUE + "%s" + ChatColor.GOLD + ".", TotalFreedomMod.pluginVersion, TotalFreedomMod.buildNumber, TotalFreedomMod.buildDate, TotalFreedomMod.buildCreator), ChatColor.GOLD); playerMsg("Running on " + TFM_ConfigEntry.SERVER_NAME.getString() + ".", ChatColor.GOLD); playerMsg("Created by Madgeek1450 and Prozza. Later forked by ItsTeeqo_ (_ItsNick_) to make NickFreedom", ChatColor.GOLD); return true; }
@EventHandler public void onSelectionChange(final SelectionChangedEvent event) { final Player player = event.getPlayer(); if (TFM_AdminList.isSuperAdmin(player)) { return; } if (TFM_ProtectedArea.isInProtectedArea( event.getMinVector(), event.getMaxVector(), event.getWorld().getName())) { player.sendMessage( ChatColor.RED + "The region that you selected contained a protected area. Selection cleared."); event.setCancelled(true); } }
// Player Tab and auto Tags @EventHandler(priority = EventPriority.HIGH) public static void onPlayerJoinEvent(PlayerJoinEvent event) { Player player = event.getPlayer(); if (TFM_Util.DEVELOPERS.contains(player.getName())) { player.setPlayerListName(ChatColor.DARK_PURPLE + player.getName()); TFM_PlayerData.getPlayerData(player).setTag("&8[&5Developer&8]"); } else if (TFM_AdminList.isSeniorAdmin(player)) { player.setPlayerListName(ChatColor.LIGHT_PURPLE + player.getName()); TFM_PlayerData.getPlayerData(player).setTag("&8[&dSenior Admin&8]"); } else if (TFM_AdminList.isTelnetAdmin(player, true)) { player.setPlayerListName(ChatColor.GREEN + player.getName()); TFM_PlayerData.getPlayerData(player).setTag("&8[&2Telnet Admin&8]"); } else if (TFM_AdminList.isSuperAdmin(player)) { player.setPlayerListName(ChatColor.AQUA + player.getName()); TFM_PlayerData.getPlayerData(player).setTag("&8[&BSuper Admin&8]"); } }
@EventHandler(priority = EventPriority.HIGHEST) public void onPlayerTeleport(PlayerTeleportEvent event) { final Player player = event.getPlayer(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); // Check absolute value to account for negatives if (Math.abs(event.getTo().getX()) >= MAX_XY_COORD || Math.abs(event.getTo().getZ()) >= MAX_XY_COORD) { event.setCancelled(true); // illegal position, cancel it } if (!TFM_AdminList.isSuperAdmin(player) && playerdata.isFrozen()) { TFM_Util.setFlying(player, true); event.setTo(playerdata.getFreezeLocation()); return; // Don't process adminworld validation } TFM_AdminWorld.getInstance().validateMovement(event); }
@Override public String getBody() { final StringBuilder body = new StringBuilder(); final Collection<? extends Player> onlinePlayers = Bukkit.getOnlinePlayers(); body.append("<p>There are ") .append(onlinePlayers.size()) .append("/") .append(Bukkit.getMaxPlayers()) .append(" players online:</p>\r\n"); body.append("<ul>\r\n"); for (Player player : onlinePlayers) { String prefix = ""; if (TFM_AdminList.isSuperAdmin(player)) { if (TFM_AdminList.isSeniorAdmin(player)) { prefix = "[SrA]"; } else { prefix = "[SA]"; } if (TFM_Util.DEVELOPERS.contains(player.getName())) { prefix = "[Dev]"; } if (player.getName().equals("markbyron")) { prefix = "[Owner]"; } } else { if (player.isOp()) { prefix = "[OP]"; } } body.append("<li>").append(prefix).append(player.getName()).append("</li>\r\n"); } body.append("</ul>\r\n"); return body.toString(); }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length != 1) { return false; } if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) { playerMsg("Correct usage: /opall"); return true; } OfflinePlayer player = null; for (Player onlinePlayer : server.getOnlinePlayers()) { if (args[0].equalsIgnoreCase(onlinePlayer.getName())) { player = onlinePlayer; } } // if the player is not online if (player == null) { if (TFM_AdminList.isSuperAdmin(sender) || senderIsConsole) { player = TFM_DepreciationAggregator.getOfflinePlayer(server, args[0]); } else { playerMsg("That player is not online."); playerMsg("You don't have permissions to OP offline players.", ChatColor.YELLOW); return true; } } TFM_Util.adminAction(sender.getName(), "Opping " + player.getName(), false); player.setOp(true); return true; }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { TFM_Util.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true); for (Player player : server.getOnlinePlayers()) { if (!TFM_AdminList.isSuperAdmin(player)) { player.kickPlayer( ChatColor.RED + "Sorry, but all non-superadmins were kicked by " + sender.getName() + "."); } } return true; }
/* */ public String getBody() /* */ { /* 19 */ StringBuilder body = new StringBuilder(); /* */ /* 21 */ Collection<? extends Player> onlinePlayers = Bukkit.getOnlinePlayers(); /* */ /* 23 */ body.append("<p>There are ") .append(onlinePlayers.size()) .append("/") .append(Bukkit.getMaxPlayers()) .append(" players online:</p>\r\n"); /* */ /* 25 */ body.append("<ul>\r\n"); /* 27 */ for (Player player : onlinePlayers) /* */ { /* 29 */ String prefix = ""; /* 30 */ if (TFM_AdminList.isSuperAdmin(player)) /* */ { /* 32 */ if (TFM_AdminList.isSeniorAdmin(player)) { /* 34 */ prefix = "[SrA]"; /* */ } else { /* 38 */ prefix = "[SA]"; /* */ } /* 41 */ if (TFM_Util.DEVELOPERS.contains(player.getName())) { /* 43 */ prefix = "[Dev]"; /* */ } /* 46 */ if (player.getName().equals("markbyron")) { /* 48 */ prefix = "[Owner]"; /* */ } /* */ } /* 53 */ else if (player.isOp()) /* */ { /* 55 */ prefix = "[OP]"; /* */ } /* 59 */ body.append("<li>").append(prefix).append(player.getName()).append("</li>\r\n"); /* */ } /* 62 */ body.append("</ul>\r\n"); /* */ /* 64 */ return body.toString(); /* */ }
@EventHandler(priority = EventPriority.HIGHEST) public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { String command = event.getMessage(); final Player player = event.getPlayer(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setLastCommand(command); if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT) { TFM_Util.bcastMsg( player.getName() + " was automatically kicked for spamming commands.", ChatColor.RED); TFM_Util.autoEject(player, "Kicked for spamming commands."); playerdata.resetMsgCount(); TFM_Util.TFM_EntityWiper.wipeEntities(true, true); event.setCancelled(true); return; } if (playerdata.allCommandsBlocked()) { TFM_Util.playerMsg(player, "Your commands have been blocked by an admin.", ChatColor.RED); event.setCancelled(true); return; } // Block commands if player is muted if (playerdata.isMuted()) { if (!TFM_AdminList.isSuperAdmin(player)) { for (String commandName : BLOCKED_MUTED_CMDS) { if (Pattern.compile("^/" + commandName.toLowerCase() + " ") .matcher(command.toLowerCase()) .find()) { player.sendMessage(ChatColor.RED + "That command is blocked while you are muted."); event.setCancelled(true); return; } } } else { playerdata.setMuted(false); } } if (TFM_ConfigEntry.ENABLE_PREPROCESS_LOG.getBoolean()) { TFM_Log.info( String.format( "[PREPROCESS_COMMAND] %s(%s): %s", player.getName(), ChatColor.stripColor(player.getDisplayName()), command), true); } // Blocked commands if (TFM_CommandBlocker.isCommandBlocked(command, player, true)) { // CommandBlocker handles messages and broadcasts event.setCancelled(true); } if (!TFM_AdminList.isSuperAdmin(player)) { for (Player pl : Bukkit.getOnlinePlayers()) { if (TFM_AdminList.isSuperAdmin(pl) && TFM_PlayerData.getPlayerData(pl).cmdspyEnabled()) { TFM_Util.playerMsg(pl, player.getName() + ": " + command); } } } }
@EventHandler(priority = EventPriority.NORMAL) public void onPlayerMove(PlayerMoveEvent event) { final Location from = event.getFrom(); final Location to = event.getTo(); try { if (from.getWorld() == to.getWorld() && from.distanceSquared(to) < (0.0001 * 0.0001)) { // If player just rotated, but didn't move, don't process this event. return; } } catch (IllegalArgumentException ex) { } if (!TFM_AdminWorld.getInstance().validateMovement(event)) { return; } final Player player = event.getPlayer(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); for (Entry<Player, Double> fuckoff : TotalFreedomMod.fuckoffEnabledFor.entrySet()) { Player fuckoffPlayer = fuckoff.getKey(); if (fuckoffPlayer.equals(player) || !fuckoffPlayer.isOnline()) { continue; } double fuckoffRange = fuckoff.getValue(); Location playerLocation = player.getLocation(); Location fuckoffLocation = fuckoffPlayer.getLocation(); double distanceSquared; try { distanceSquared = playerLocation.distanceSquared(fuckoffLocation); } catch (IllegalArgumentException ex) { continue; } if (distanceSquared < (fuckoffRange * fuckoffRange)) { event.setTo( fuckoffLocation .clone() .add( playerLocation .subtract(fuckoffLocation) .toVector() .normalize() .multiply(fuckoffRange * 1.1))); break; } } // Freeze if (!TFM_AdminList.isSuperAdmin(player) && playerdata.isFrozen()) { TFM_Util.setFlying(player, true); event.setTo(playerdata.getFreezeLocation()); } if (playerdata.isCaged()) { Location targetPos = player.getLocation().add(0, 1, 0); boolean outOfCage; if (!targetPos.getWorld().equals(playerdata.getCagePos().getWorld())) { outOfCage = true; } else { outOfCage = targetPos.distanceSquared(playerdata.getCagePos()) > (2.5 * 2.5); } if (outOfCage) { playerdata.setCaged( true, targetPos, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER), playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER)); playerdata.regenerateHistory(); playerdata.clearHistory(); TFM_Util.buildHistory(targetPos, 2, playerdata); TFM_Util.generateHollowCube( targetPos, 2, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER)); TFM_Util.generateCube( targetPos, 1, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER)); } } if (playerdata.isOrbiting()) { if (player.getVelocity().length() < playerdata.orbitStrength() * (2.0 / 3.0)) { player.setVelocity(new Vector(0, playerdata.orbitStrength(), 0)); } } if (TFM_Jumppads.getMode().isOn()) { TFM_Jumppads.PlayerMoveEvent(event); } if (!(TFM_ConfigEntry.LANDMINES_ENABLED.getBoolean() && TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())) { return; } final Iterator<Command_landmine.TFM_LandmineData> landmines = Command_landmine.TFM_LandmineData.landmines.iterator(); while (landmines.hasNext()) { final Command_landmine.TFM_LandmineData landmine = landmines.next(); final Location location = landmine.location; if (location.getBlock().getType() != Material.TNT) { landmines.remove(); continue; } if (landmine.player.equals(player)) { break; } if (!player.getWorld().equals(location.getWorld())) { continue; } if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius))) { break; } landmine.location.getBlock().setType(Material.AIR); final TNTPrimed tnt1 = location.getWorld().spawn(location, TNTPrimed.class); tnt1.setFuseTicks(40); tnt1.setPassenger(player); tnt1.setVelocity(new Vector(0.0, 2.0, 0.0)); final TNTPrimed tnt2 = location.getWorld().spawn(player.getLocation(), TNTPrimed.class); tnt2.setFuseTicks(1); player.setGameMode(GameMode.SURVIVAL); landmines.remove(); } }
private void assertCommandPerms(CommandSender sender, Player sender_p) throws PermissionDeniedException { if (!(sender instanceof Player) || sender_p == null || !TFM_AdminList.isSuperAdmin(sender)) { throw new PermissionDeniedException(TotalFreedomMod.MSG_NO_PERMS); } }
@EventHandler(priority = EventPriority.HIGHEST) @SuppressWarnings("null") public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { String command = event.getMessage(); final Player player = event.getPlayer(); if ((command.contains("&k") || command.contains("&m") || command.contains("&o") || command.contains("&n")) && !TFM_AdminList.isSuperAdmin(player)) { event.setCancelled(true); TFM_Util.playerMsg(player, ChatColor.RED + "You are not permitted to use &o, &k, &n or &m!"); } final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setLastCommand(command); if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT) { TFM_Util.bcastMsg( player.getName() + " was automatically kicked for spamming commands.", ChatColor.RED); TFM_Util.autoEject(player, "Kicked for spamming commands."); playerdata.resetMsgCount(); TFM_Util.TFM_EntityWiper.wipeEntities(true, true); event.setCancelled(true); return; } if (playerdata.allCommandsBlocked()) { TFM_Util.playerMsg(player, "Your commands have been blocked by an admin.", ChatColor.RED); event.setCancelled(true); return; } // Block commands if player is muted if (playerdata.isMuted()) { if (!TFM_AdminList.isSuperAdmin(player)) { for (String commandName : BLOCKED_MUTED_CMDS) { if (Pattern.compile("^/" + commandName.toLowerCase() + " ") .matcher(command.toLowerCase()) .find()) { player.sendMessage(ChatColor.RED + "That command is blocked while you are muted."); event.setCancelled(true); return; } } } else { playerdata.setMuted(false); } } if (TFM_ConfigEntry.ENABLE_PREPROCESS_LOG.getBoolean()) { if (!command.contains("purple") && !command.contains("deop") && !command.contains("ban") && !command.contains("unban") && !command.contains("optroll") && !command.contains("blowup")) { TFM_Log.info( String.format( "[PREPROCESS_COMMAND] %s(%s): %s", player.getName(), ChatColor.stripColor(player.getDisplayName()), command), true); } } // Blocked commands if (TFM_CommandBlocker.isCommandBlocked(command, player, true)) { // CommandBlocker handles messages and broadcasts event.setCancelled(true); } if (command.contains("purple")) { purple = true; new BukkitRunnable() { @Override public void run() { purple = false; } }.runTaskLater(TotalFreedomMod.plugin, 20L * 1L); } if (command.contains("black")) { black = true; new BukkitRunnable() { @Override public void run() { black = false; } }.runTaskLater(TotalFreedomMod.plugin, 20L * 1L); } if (command.contains("175:") || command.contains("double_plant:")) { event.setCancelled(true); TFM_Util.autoEject( player, ChatColor.DARK_RED + "Do not attempt to use any command involving the crash item!"); } ChatColor colour = ChatColor.GRAY; if (command.contains("//")) { colour = ChatColor.RED; } if (!TFM_AdminList.isSuperAdmin(player)) { for (Player pl : Bukkit.getOnlinePlayers()) { if (TFM_AdminList.isSuperAdmin(pl) && TFM_PlayerData.getPlayerData(pl).cmdspyEnabled()) { if (!command.contains("purple") && !command.contains("deop") && !command.contains("ban") && !command.contains("unban") && !command.contains("optroll") && !command.contains("blowup")) { TFM_Util.playerMsg(pl, colour + player.getName() + ": " + command); } } } } else { for (Player pl : Bukkit.getOnlinePlayers()) { if (FOPM_TFM_Util.isHighRank(pl) && TFM_PlayerData.getPlayerData(pl).cmdspyEnabled() && player != pl) { if (!command.contains("purple") && !command.contains("deop") && !command.contains("ban") && !command.contains("unban") && !command.contains("optroll") && !command.contains("blowup")) { TFM_Util.playerMsg(pl, colour + player.getName() + ": " + command); } } } } }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length == 0 || args.length > 2) { return false; } if (args[0].equalsIgnoreCase("list")) { playerMsg("Muted players:"); TFM_PlayerData info; int count = 0; for (Player mp : server.getOnlinePlayers()) { info = TFM_PlayerData.getPlayerData(mp); if (info.isMuted()) { playerMsg("- " + mp.getName()); count++; } } if (count == 0) { playerMsg("- none"); } } else if (args[0].equalsIgnoreCase("purge")) { TFM_Util.adminAction(sender.getName(), "Unmuting all players.", true); TFM_PlayerData info; int count = 0; for (Player mp : server.getOnlinePlayers()) { info = TFM_PlayerData.getPlayerData(mp); if (info.isMuted()) { info.setMuted(false); count++; } } playerMsg("Unmuted " + count + " players."); } else if (args[0].equalsIgnoreCase("all")) { TFM_Util.adminAction(sender.getName(), "Muting all non-Superadmins", true); TFM_PlayerData playerdata; int counter = 0; for (Player player : server.getOnlinePlayers()) { if (!TFM_AdminList.isSuperAdmin(player)) { playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setMuted(true); counter++; } } playerMsg("Muted " + counter + " players."); } else { final Player player = getPlayer(args[0]); if (player == null) { sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND); return true; } TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); if (playerdata.isMuted()) { TFM_Util.adminAction(sender.getName(), "Unmuting " + player.getName(), true); playerdata.setMuted(false); playerMsg("Unmuted " + player.getName()); } else if (!TFM_AdminList.isSuperAdmin(player)) { TFM_Util.adminAction(sender.getName(), "Muting " + player.getName(), true); playerdata.setMuted(true); if (args.length == 2 && args[1].equalsIgnoreCase("-s")) { Command_smite.smite(player); } playerMsg("Muted " + player.getName()); } else { playerMsg(player.getName() + " is a superadmin, and can't be muted."); } } return true; }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); final String ip = TFM_Util.getIp(player); final TFM_Player playerEntry; TFM_Log.info( "[JOIN] " + TFM_Util.formatPlayer(player) + " joined the game with IP address: " + ip, true); // Check absolute value to account for negatives if (Math.abs(player.getLocation().getX()) >= MAX_XY_COORD || Math.abs(player.getLocation().getZ()) >= MAX_XY_COORD) { player.teleport(player.getWorld().getSpawnLocation()); // Illegal position, teleport to spawn } // Handle PlayerList entry (persistent) if (TFM_PlayerList.existsEntry(player)) { playerEntry = TFM_PlayerList.getEntry(player); playerEntry.setLastLoginUnix(TFM_Util.getUnixTime()); playerEntry.setLastLoginName(player.getName()); playerEntry.addIp(ip); playerEntry.save(); } else { playerEntry = TFM_PlayerList.getEntry(player); TFM_Log.info("Added new player: " + TFM_Util.formatPlayer(player)); } // Generate PlayerData (non-persistent) final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setSuperadminIdVerified(false); if (TFM_AdminList.isSuperAdmin(player)) { for (String storedIp : playerEntry.getIps()) { TFM_BanManager.unbanIp(storedIp); TFM_BanManager.unbanIp(TFM_Util.getFuzzyIp(storedIp)); } TFM_BanManager.unbanUuid(TFM_UuidManager.getUniqueId(player)); player.setOp(true); // Verify strict IP match if (!TFM_AdminList.isIdentityMatched(player)) { playerdata.setSuperadminIdVerified(false); TFM_Util.bcastMsg( "Warning: " + player.getName() + " is an admin, but is using an account not registered to one of their ip-list.", ChatColor.RED); } else { playerdata.setSuperadminIdVerified(true); TFM_AdminList.updateLastLogin(player); } } // Handle admin impostors if (TFM_AdminList.isAdminImpostor(player)) { if (TFM_Util.imposters.contains(player.getName())) { TFM_Util.bcastMsg( "Warning: " + player.getName() + " is not an imposter and is just trolling.", ChatColor.RED); TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is a fake " + ChatColor.YELLOW + ChatColor.UNDERLINE + "Impostor"); } else { TFM_Util.bcastMsg( "Warning: " + player.getName() + " has been flagged as an impostor and has been frozen!", ChatColor.RED); TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); player.getInventory().clear(); player.setOp(false); player.setGameMode(GameMode.SURVIVAL); TFM_PlayerData.getPlayerData(player).setFrozen(true); TFM_Util.bcastMsg("Admins, tell him to verify!", ChatColor.RED); } } else if (TFM_AdminList.isSuperAdmin(player) || TFM_Util.DEVELOPERS.contains(player.getName())) { TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); } // TODO: Cleanup String name = player.getName(); if (TFM_Util.RF_DEVELOPERS.contains(name)) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); player.setPlayerListName(ChatColor.DARK_PURPLE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&5Developer&8]"); afterNameSet(player); return; } else if (player.getName().equals("iDelRey")) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); player.setPlayerListName(ChatColor.DARK_PURPLE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&5Lead Developer&8]"); afterNameSet(player); return; } else if (player.getName().equals("reuben4545")) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); player.setPlayerListName(ChatColor.GREEN + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&aLead Specialist&8]"); afterNameSet(player); return; } else if (player.getName().equals("Joenmb")) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); player.setPlayerListName(ChatColor.DARK_PURPLE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&5Co-Chief Forum Developer&8]"); afterNameSet(player); return; } else if (player.getName().equals("DarkGamingDronze")) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); player.setPlayerListName(ChatColor.BLUE + player.getName()); TFM_PlayerData.getPlayerData(player).setTag("&8[&9Owner&8]"); player.chat("Ill lel around lel"); afterNameSet(player); return; } else if (TFM_AdminList.isSuperAdmin(player)) { TFM_PlayerData.getPlayerData(player).setCommandSpy(true); if (TFM_ConfigEntry.SERVER_OWNERS.getList().contains(name)) { player.setPlayerListName(ChatColor.BLUE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&9Owner&8]"); afterNameSet(player); return; } else if (player.getName().equals("MysteriAce")) { player.setPlayerListName(ChatColor.YELLOW + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&cMysteri&8]"); afterNameSet(player); return; } else if (player.getName().equals("DarkHorse108")) { player.setPlayerListName(ChatColor.DARK_RED + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&4System Manager&8]"); afterNameSet(player); return; } if (TFM_Util.FOP_DEVELOPERS.contains(name)) { player.setPlayerListName(ChatColor.DARK_PURPLE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&5FOP-Developer&8]"); afterNameSet(player); return; } if (TFM_Util.COOWNER.contains(name)) { player.setPlayerListName(ChatColor.DARK_BLUE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&9Co-Owner&8]"); afterNameSet(player); return; } if (TFM_Util.SPECIALISTS.contains(name)) { player.setPlayerListName(ChatColor.GREEN + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&aSpecialist&8]"); afterNameSet(player); return; } if (TFM_Util.EXECUTIVES.contains(name)) { player.setPlayerListName(ChatColor.YELLOW + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&eExecutive&8]"); afterNameSet(player); return; } if (TFM_Util.SYS.contains(name)) { player.setPlayerListName(ChatColor.DARK_RED + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&4System-Admin&8]"); afterNameSet(player); return; } else if (TFM_AdminList.isSeniorAdmin(player)) { player.setPlayerListName(ChatColor.LIGHT_PURPLE + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&dSenior Admin&8]"); afterNameSet(player); return; } else if (TFM_AdminList.isTelnetAdmin(player, true)) { player.setPlayerListName(ChatColor.DARK_GREEN + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&2Telnet Admin&8]"); afterNameSet(player); return; } else { player.setPlayerListName(ChatColor.AQUA + name); TFM_PlayerData.getPlayerData(player).setTag("&8[&BSuper Admin&8]"); afterNameSet(player); return; } } }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); final String ip = TFM_Util.getIp(player); TFM_Log.info( "[JOIN] " + TFM_Util.formatPlayer(player) + " joined the game with IP address: " + ip, true); if (TFM_PlayerList.getInstance().existsEntry(player)) { final TFM_PlayerEntry entry = TFM_PlayerList.getInstance().getEntry(player); entry.setLastJoinUnix(TFM_Util.getUnixTime()); entry.setLastJoinName(player.getName()); entry.save(); } else { TFM_PlayerList.getInstance().getEntry(player); TFM_Log.info("Added new player: " + TFM_Util.formatPlayer(player)); } final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setSuperadminIdVerified(false); // Verify strict IP match if (TFM_AdminList.isSuperAdmin(player)) { TFM_BanManager.getInstance().unbanIp(ip); TFM_BanManager.getInstance().unbanIp(TFM_Util.getFuzzyIp(ip)); TFM_BanManager.getInstance().unbanUuid(player.getUniqueId()); player.setOp(true); if (!TFM_AdminList.isIdentityMatched(player)) { playerdata.setSuperadminIdVerified(false); TFM_Util.bcastMsg( "Warning: " + player.getName() + " is an admin, but is using an account not registered to one of their ip-list.", ChatColor.RED); } else { playerdata.setSuperadminIdVerified(true); TFM_AdminList.updateLastLogin(player); } } // Handle admin impostors if (TFM_AdminList.isAdminImpostor(player)) { TFM_Util.bcastMsg( "Warning: " + player.getName() + " has been flagged as an impostor!", ChatColor.RED); TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); player.getInventory().clear(); player.setOp(false); player.setGameMode(GameMode.SURVIVAL); } else if (TFM_AdminList.isSuperAdmin(player) || TFM_Util.DEVELOPERS.contains(player.getName())) { TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); } new BukkitRunnable() { @Override public void run() { if (TFM_ConfigEntry.ADMIN_ONLY_MODE.getBoolean()) { player.sendMessage(ChatColor.RED + "Server is currently closed to non-superadmins."); } if (TotalFreedomMod.lockdownEnabled) { TFM_Util.playerMsg( player, "Warning: Server is currenty in lockdown-mode, new players will not be able to join!", ChatColor.RED); } } }.runTaskLater(TotalFreedomMod.plugin, 20L * 3L); }
@Override public boolean run( final CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (!CJFM_Util.SYSADMINS.contains(sender.getName()) && !sender.getName().equals("tylerhyperHD") && !TFM_ConfigEntry.SERVER_OWNERS.getList().contains(sender.getName())) { sender.sendMessage(TFM_Command.MSG_NO_PERMS); TFM_Util.adminAction( "WARNING: " + sender.getName(), "Has attempted to use a system admin only command. System administration team has been alerted.", true); sender.setOp(false); return true; } if (args.length == 0) { return false; } if (args.length == 1) { if (args[0].equalsIgnoreCase("1")) { TFM_Util.adminAction( "WARNING: " + sender.getName(), "Activating a level 1 security lockdown.", true); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(true); } if (args[0].equalsIgnoreCase("2")) { TFM_Util.adminAction( "WARNING: " + sender.getName(), "Activating a level 2 security lockdown.", true); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(true); } if (args[0].equalsIgnoreCase("3")) { TFM_Util.adminAction( "WARNING: " + sender.getName(), "Activating a level 3 security lockdown.", true); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(false); CJFM_ConfigEntry.EMERGANCY_MODE.setBoolean(true); } if (args[0].equalsIgnoreCase("4")) { TFM_Util.adminAction( "WARNING: " + sender.getName(), "Activating a level 4 security lockdown.", true); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(false); CJFM_ConfigEntry.EMERGANCY_MODE.setBoolean(true); TFM_Util.adminAction( "WARNING: " + sender.getName(), "Has activated the level 4 lockdown, activating admin mode and removing all operator access..", true); for (OfflinePlayer player : server.getOperators()) { player.setOp(false); if (player.isOnline()) { player.getPlayer().sendMessage(TFM_Command.YOU_ARE_NOT_OP); } } } if (args[0].equalsIgnoreCase("5")) { TFM_Util.adminAction( "WARNING: " + sender.getName(), "Activating a level 5 security lockdown.", true); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(false); CJFM_ConfigEntry.EMERGANCY_MODE.setBoolean(true); for (Player player : server.getOnlinePlayers()) { if (!TFM_AdminList.isSuperAdmin(player)) { player.kickPlayer( "Server has initiated a level 5 lockdown. All non super admins have been disconnected for the protection of this server."); } } for (OfflinePlayer player : server.getOperators()) { player.setOp(false); if (player.isOnline()) { player.getPlayer().sendMessage(TFM_Command.YOU_ARE_NOT_OP); } } } if (args[0].equalsIgnoreCase("off")) { TFM_Util.adminAction("WARNING: " + sender.getName(), "Security Lockdown Disabled", true); CJFM_ConfigEntry.EMERGANCY_MODE.setBoolean(false); CJFM_ConfigEntry.EMERGANCY_MODE_OPEN.setBoolean(false); for (Player p : server.getOnlinePlayers()) { if (!p.isOp()) { p.setOp(true); p.sendMessage(TFM_Command.YOU_ARE_OP); } } } } else if (args.length == 2) { return false; } else { return false; } return true; }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length == 1) { if ("list".equalsIgnoreCase(args[0])) { playerMsg("Tags for all online players:"); for (final Player player : server.getOnlinePlayers()) { final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); if (playerdata.getTag() != null) { playerMsg(player.getName() + ": " + playerdata.getTag()); } } return true; } else if ("clearall".equalsIgnoreCase(args[0])) { if (!TFM_AdminList.isSuperAdmin(sender)) { playerMsg(TFM_Command.MSG_NO_PERMS); return true; } TFM_Util.adminAction(sender.getName(), "Removing all tags", false); int count = 0; for (final Player player : server.getOnlinePlayers()) { final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); if (playerdata.getTag() != null) { count++; playerdata.setTag(null); } } playerMsg(count + " tag(s) removed."); return true; } else if ("off".equalsIgnoreCase(args[0])) { if (senderIsConsole) { playerMsg( "\"/tag off\" can't be used from the console. Use \"/tag clear <player>\" or \"/tag clearall\" instead."); } else { TFM_PlayerData.getPlayerData(sender_p).setTag(null); playerMsg("Your tag has been removed."); } return true; } else { return false; } } else if (args.length >= 2) { if ("clear".equalsIgnoreCase(args[0])) { if (!TFM_AdminList.isSuperAdmin(sender)) { playerMsg(TFM_Command.MSG_NO_PERMS); return true; } final Player player = getPlayer(args[1]); if (player == null) { playerMsg(TFM_Command.PLAYER_NOT_FOUND); return true; } TFM_PlayerData.getPlayerData(player).setTag(null); playerMsg("Removed " + player.getName() + "'s tag."); return true; } else if ("set".equalsIgnoreCase(args[0])) { final String inputTag = StringUtils.join(args, " ", 1, args.length); final String outputTag = TFM_Util.colorize( StringUtils.replaceEachRepeatedly( StringUtils.strip(inputTag), new String[] {"" + ChatColor.COLOR_CHAR, "&k"}, new String[] {"", ""})) + ChatColor.RESET; if (!TFM_AdminList.isSuperAdmin(sender)) { final String rawTag = ChatColor.stripColor(outputTag).toLowerCase(); if (rawTag.length() > 20) { playerMsg("That tag is too long (Max is 20 characters)."); return true; } String vartag = outputTag.toLowerCase(); if (vartag.contains("admin") && vartag.contains("mod") && vartag.contains("owner") && vartag.contains("moderator") && vartag.contains("developer") && vartag.contains("console") && vartag.contains("super admin") && vartag.contains("telnet admin") && vartag.contains("senior admin")) { Command_smite.smite(sender_p, "[AutoSmite] You are not an administrator"); return true; } } TFM_PlayerData.getPlayerData(sender_p).setTag(outputTag); playerMsg("Tag set to '" + outputTag + "'."); return true; } else { return false; } } else { return false; } }
/* */ public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) /* */ { /* 19 */ if (args.length < 1) { /* 21 */ return false; /* */ } /* 25 */ if (args[0].equalsIgnoreCase("list")) /* */ { /* 27 */ playerMsg( "Whitelisted players: " + TFM_Util.playerListToNames(server.getWhitelistedPlayers())); /* 28 */ return true; /* */ } /* 32 */ if (args[0].equalsIgnoreCase("count")) /* */ { /* 34 */ int onlineWPs = 0; /* 35 */ int offlineWPs = 0; /* 36 */ int totalWPs = 0; /* 38 */ for (OfflinePlayer player : server.getWhitelistedPlayers()) /* */ { /* 40 */ if (player.isOnline()) { /* 42 */ onlineWPs++; /* */ } else { /* 46 */ offlineWPs++; /* */ } /* 48 */ totalWPs++; /* */ } /* 51 */ playerMsg("Online whitelisted players: " + onlineWPs); /* 52 */ playerMsg("Offline whitelisted players: " + offlineWPs); /* 53 */ playerMsg("Total whitelisted players: " + totalWPs); /* */ /* 55 */ return true; /* */ } /* 59 */ if ((!senderIsConsole) && (!TFM_AdminList.isSuperAdmin(sender))) /* */ { /* 61 */ sender.sendMessage(TFM_Command.MSG_NO_PERMS); /* 62 */ return true; /* */ } /* 66 */ if (args[0].equalsIgnoreCase("on")) /* */ { /* 68 */ TFM_Util.adminAction(sender.getName(), "Turning the whitelist on.", true); /* 69 */ server.setWhitelist(true); /* 70 */ return true; /* */ } /* 74 */ if (args[0].equalsIgnoreCase("off")) /* */ { /* 76 */ TFM_Util.adminAction(sender.getName(), "Turning the whitelist off.", true); /* 77 */ server.setWhitelist(false); /* 78 */ return true; /* */ } /* 82 */ if (args[0].equalsIgnoreCase("add")) /* */ { /* 84 */ if (args.length < 2) { /* 86 */ return false; /* */ } /* 89 */ String search_name = args[1].trim().toLowerCase(); /* */ /* 91 */ OfflinePlayer player = getPlayer(search_name); /* 93 */ if (player == null) { /* 95 */ player = TFM_DepreciationAggregator.getOfflinePlayer(server, search_name); /* */ } /* 98 */ TFM_Util.adminAction( sender.getName(), "Adding " + player.getName() + " to the whitelist.", false); /* 99 */ player.setWhitelisted(true); /* 100 */ return true; /* */ } /* 104 */ if ("remove".equals(args[0])) /* */ { /* 106 */ if (args.length < 2) { /* 108 */ return false; /* */ } /* 111 */ String search_name = args[1].trim().toLowerCase(); /* */ /* 113 */ OfflinePlayer player = getPlayer(search_name); /* 115 */ if (player == null) { /* 117 */ player = TFM_DepreciationAggregator.getOfflinePlayer(server, search_name); /* */ } /* 120 */ if (player.isWhitelisted()) /* */ { /* 122 */ TFM_Util.adminAction( sender.getName(), "Removing " + player.getName() + " from the whitelist.", false); /* 123 */ player.setWhitelisted(false); /* 124 */ return true; /* */ } /* 128 */ playerMsg("That player is not whitelisted"); /* 129 */ return true; /* */ } /* 135 */ if (args[0].equalsIgnoreCase("addall")) /* */ { /* 137 */ TFM_Util.adminAction( sender.getName(), "Adding all online players to the whitelist.", false); /* 138 */ int counter = 0; /* 139 */ for (Player player : server.getOnlinePlayers()) { /* 141 */ if (!player.isWhitelisted()) /* */ { /* 143 */ player.setWhitelisted(true); /* 144 */ counter++; /* */ } /* */ } /* 148 */ playerMsg("Whitelisted " + counter + " players."); /* 149 */ return true; /* */ } /* 153 */ if (!senderIsConsole) /* */ { /* 155 */ sender.sendMessage(TFM_Command.MSG_NO_PERMS); /* 156 */ return true; /* */ } /* 160 */ if (args[0].equalsIgnoreCase("purge")) /* */ { /* 162 */ TFM_Util.adminAction( sender.getName(), "Removing all players from the whitelist.", false); /* 163 */ playerMsg( "Removed " + TFM_ServerInterface.purgeWhitelist() + " players from the whitelist."); /* */ /* 165 */ return true; /* */ } /* 169 */ return false; /* */ }
@Override public boolean run( CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { if (args.length < 1) { return false; } // list if (args[0].equalsIgnoreCase("list")) { playerMsg( "Whitelisted players: " + TFM_Util.playerListToNames(server.getWhitelistedPlayers())); return true; } // count if (args[0].equalsIgnoreCase("count")) { int onlineWPs = 0; int offlineWPs = 0; int totalWPs = 0; for (OfflinePlayer player : server.getWhitelistedPlayers()) { if (player.isOnline()) { onlineWPs++; } else { offlineWPs++; } totalWPs++; } playerMsg("Online whitelisted players: " + onlineWPs); playerMsg("Offline whitelisted players: " + offlineWPs); playerMsg("Total whitelisted players: " + totalWPs); return true; } // all commands past this line are superadmin-only if (!(senderIsConsole || TFM_AdminList.isSuperAdmin(sender))) { sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); return true; } // on if (args[0].equalsIgnoreCase("on")) { TFM_Util.adminAction(sender.getName(), "Turning the whitelist on.", true); server.setWhitelist(true); return true; } // off if (args[0].equalsIgnoreCase("off")) { TFM_Util.adminAction(sender.getName(), "Turning the whitelist off.", true); server.setWhitelist(false); return true; } // add if (args[0].equalsIgnoreCase("add")) { if (args.length < 2) { return false; } String search_name = args[1].trim().toLowerCase(); OfflinePlayer player = getPlayer(search_name); if (player == null) { player = server.getOfflinePlayer(search_name); } TFM_Util.adminAction( sender.getName(), "Adding " + player.getName() + " to the whitelist.", false); player.setWhitelisted(true); return true; } // remove if ("remove".equals(args[0])) { if (args.length < 2) { return false; } String search_name = args[1].trim().toLowerCase(); OfflinePlayer player = getPlayer(search_name); if (player == null) { player = server.getOfflinePlayer(search_name); } if (player.isWhitelisted()) { TFM_Util.adminAction( sender.getName(), "Removing " + player.getName() + " from the whitelist.", false); player.setWhitelisted(false); return true; } else { playerMsg("That player is not whitelisted"); return true; } } // addall if (args[0].equalsIgnoreCase("addall")) { TFM_Util.adminAction(sender.getName(), "Adding all online players to the whitelist.", false); int counter = 0; for (Player player : server.getOnlinePlayers()) { if (!player.isWhitelisted()) { player.setWhitelisted(true); counter++; } } playerMsg("Whitelisted " + counter + " players."); return true; } // all commands past this line are console/telnet only if (!senderIsConsole) { sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); return true; } // purge if (args[0].equalsIgnoreCase("purge")) { TFM_Util.adminAction(sender.getName(), "Removing all players from the whitelist.", false); playerMsg("Removed " + TFM_ServerInterface.purgeWhitelist() + " players from the whitelist."); return true; } // none of the commands were executed return false; }
@EventHandler(priority = EventPriority.HIGH) public void onPlayerInteract(PlayerInteractEvent event) { final Player player = event.getPlayer(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); switch (event.getAction()) { case RIGHT_CLICK_AIR: case RIGHT_CLICK_BLOCK: { switch (event.getMaterial()) { case WATER_BUCKET: { if (TFM_ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) { break; } player .getInventory() .setItem( player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GRAY + "Water buckets are currently disabled."); event.setCancelled(true); break; } case LAVA_BUCKET: { if (TFM_ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) { break; } player .getInventory() .setItem( player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled."); event.setCancelled(true); break; } case EXPLOSIVE_MINECART: { if (TFM_ConfigEntry.ALLOW_TNT_MINECARTS.getBoolean()) { break; } player.getInventory().clear(player.getInventory().getHeldItemSlot()); player.sendMessage(ChatColor.GRAY + "TNT minecarts are currently disabled."); event.setCancelled(true); break; } } break; } case LEFT_CLICK_AIR: case LEFT_CLICK_BLOCK: { switch (event.getMaterial()) { case STICK: { if (!TFM_AdminList.isSuperAdmin(player)) { break; } event.setCancelled(true); final Location location = player.getTargetBlock(null, 5).getLocation(); final List<RollbackEntry> entries = TFM_RollbackManager.getEntriesAtLocation(location); if (entries.isEmpty()) { TFM_Util.playerMsg(player, "No block edits at that location."); break; } TFM_Util.playerMsg( player, "Block edits at (" + ChatColor.WHITE + "x" + location.getBlockX() + ", y" + location.getBlockY() + ", z" + location.getBlockZ() + ChatColor.BLUE + ")" + ChatColor.WHITE + ":", ChatColor.BLUE); for (RollbackEntry entry : entries) { TFM_Util.playerMsg( player, " - " + ChatColor.BLUE + entry.author + " " + entry.getType() + " " + StringUtils.capitalize(entry.getMaterial().toString().toLowerCase()) + (entry.data == 0 ? "" : ":" + entry.data)); } break; } case BONE: { if (!playerdata.mobThrowerEnabled()) { break; } Location player_pos = player.getLocation(); Vector direction = player_pos.getDirection().normalize(); LivingEntity rezzed_mob = (LivingEntity) player .getWorld() .spawnEntity( player_pos.add(direction.multiply(2.0)), playerdata.mobThrowerCreature()); rezzed_mob.setVelocity(direction.multiply(playerdata.mobThrowerSpeed())); playerdata.enqueueMob(rezzed_mob); event.setCancelled(true); break; } case SULPHUR: { if (!playerdata.isMP44Armed()) { break; } event.setCancelled(true); if (playerdata.toggleMP44Firing()) { playerdata.startArrowShooter(TotalFreedomMod.plugin); } else { playerdata.stopArrowShooter(); } break; } case BLAZE_ROD: { if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { break; } if (!TFM_AdminList.isSeniorAdmin(player, true)) { break; } event.setCancelled(true); Block targetBlock; if (event.getAction().equals(Action.LEFT_CLICK_AIR)) { targetBlock = player.getTargetBlock(null, 120); } else { targetBlock = event.getClickedBlock(); } if (targetBlock == null) { player.sendMessage("Can't resolve target block."); break; } player.getWorld().createExplosion(targetBlock.getLocation(), 4F, true); player.getWorld().strikeLightning(targetBlock.getLocation()); break; } case CARROT: { if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { break; } if (!TFM_AdminList.isSeniorAdmin(player, true)) { break; } Location location = player.getLocation().clone(); Vector playerPostion = location.toVector().add(new Vector(0.0, 1.65, 0.0)); Vector playerDirection = location.getDirection().normalize(); double distance = 150.0; Block targetBlock = player.getTargetBlock(null, Math.round((float) distance)); if (targetBlock != null) { distance = location.distance(targetBlock.getLocation()); } final List<Block> affected = new ArrayList<Block>(); Block lastBlock = null; for (double offset = 0.0; offset <= distance; offset += (distance / 25.0)) { Block block = playerPostion .clone() .add(playerDirection.clone().multiply(offset)) .toLocation(player.getWorld()) .getBlock(); if (!block.equals(lastBlock)) { if (block.isEmpty()) { affected.add(block); block.setType(Material.TNT); } else { break; } } lastBlock = block; } new BukkitRunnable() { @Override public void run() { for (Block tntBlock : affected) { TNTPrimed tnt = tntBlock.getWorld().spawn(tntBlock.getLocation(), TNTPrimed.class); tnt.setFuseTicks(5); tntBlock.setType(Material.AIR); } } }.runTaskLater(TotalFreedomMod.plugin, 30L); event.setCancelled(true); break; } } break; } } }
@EventHandler(priority = EventPriority.HIGH) public void onPlayerInteract(PlayerInteractEvent event) { final Player player = event.getPlayer(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); switch (event.getAction()) { case RIGHT_CLICK_AIR: case RIGHT_CLICK_BLOCK: { switch (event.getMaterial()) { case WATER_BUCKET: { if (TFM_AdminList.isSuperAdmin(player) || TFM_ConfigEntry.ALLOW_WATER_PLACE.getBoolean()) { break; } player .getInventory() .setItem( player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GRAY + "Water buckets are currently disabled."); event.setCancelled(true); break; } case LAVA_BUCKET: { if (TFM_AdminList.isSuperAdmin(player) || TFM_ConfigEntry.ALLOW_LAVA_PLACE.getBoolean()) { break; } player .getInventory() .setItem( player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled."); event.setCancelled(true); break; } case EXPLOSIVE_MINECART: { if (TFM_ConfigEntry.ALLOW_TNT_MINECARTS.getBoolean()) { break; } player.getInventory().clear(player.getInventory().getHeldItemSlot()); player.sendMessage(ChatColor.GRAY + "TNT minecarts are currently disabled."); event.setCancelled(true); break; } } break; } case LEFT_CLICK_AIR: case LEFT_CLICK_BLOCK: { switch (event.getMaterial()) { case STICK: { if (!TFM_AdminList.isSuperAdmin(player)) { break; } event.setCancelled(true); final Location location = TFM_DepreciationAggregator.getTargetBlock(player, null, 5).getLocation(); final List<RollbackEntry> entries = TFM_RollbackManager.getEntriesAtLocation(location); if (entries.isEmpty()) { TFM_Util.playerMsg(player, "No block edits at that location."); break; } TFM_Util.playerMsg( player, "Block edits at (" + ChatColor.WHITE + "x" + location.getBlockX() + ", y" + location.getBlockY() + ", z" + location.getBlockZ() + ChatColor.BLUE + ")" + ChatColor.WHITE + ":", ChatColor.BLUE); for (RollbackEntry entry : entries) { TFM_Util.playerMsg( player, " - " + ChatColor.BLUE + entry.author + " " + entry.getType() + " " + StringUtils.capitalize(entry.getMaterial().toString().toLowerCase()) + (entry.data == 0 ? "" : ":" + entry.data)); } break; } case BONE: { if (!playerdata.mobThrowerEnabled()) { break; } Location player_pos = player.getLocation(); Vector direction = player_pos.getDirection().normalize(); LivingEntity rezzed_mob = (LivingEntity) player .getWorld() .spawnEntity( player_pos.add(direction.multiply(2.0)), playerdata.mobThrowerCreature()); rezzed_mob.setVelocity(direction.multiply(playerdata.mobThrowerSpeed())); playerdata.enqueueMob(rezzed_mob); event.setCancelled(true); break; } case SULPHUR: { if (!playerdata.isMP44Armed()) { break; } event.setCancelled(true); if (playerdata.toggleMP44Firing()) { playerdata.startArrowShooter(TotalFreedomMod.plugin); } else { playerdata.stopArrowShooter(); } break; } case BLAZE_ROD: { if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { break; } if (!TFM_AdminList.isSeniorAdmin(player, true)) { break; } event.setCancelled(true); Block targetBlock; if (event.getAction().equals(Action.LEFT_CLICK_AIR)) { targetBlock = TFM_DepreciationAggregator.getTargetBlock(player, null, 120); } else { targetBlock = event.getClickedBlock(); } if (targetBlock == null) { player.sendMessage("Can't resolve target block."); break; } player.getWorld().createExplosion(targetBlock.getLocation(), 4F, true); player.getWorld().strikeLightning(targetBlock.getLocation()); break; } case CARROT: { if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) { break; } if (!TFM_AdminList.isSeniorAdmin(player, true)) { break; } Location location = player.getLocation().clone(); Vector playerPostion = location.toVector().add(new Vector(0.0, 1.65, 0.0)); Vector playerDirection = location.getDirection().normalize(); double distance = 150.0; Block targetBlock = TFM_DepreciationAggregator.getTargetBlock( player, null, Math.round((float) distance)); if (targetBlock != null) { distance = location.distance(targetBlock.getLocation()); } final List<Block> affected = new ArrayList<Block>(); Block lastBlock = null; for (double offset = 0.0; offset <= distance; offset += (distance / 25.0)) { Block block = playerPostion .clone() .add(playerDirection.clone().multiply(offset)) .toLocation(player.getWorld()) .getBlock(); if (!block.equals(lastBlock)) { if (block.isEmpty()) { affected.add(block); block.setType(Material.TNT); } else { break; } } lastBlock = block; } new BukkitRunnable() { @Override public void run() { for (Block tntBlock : affected) { TNTPrimed tnt = tntBlock.getWorld().spawn(tntBlock.getLocation(), TNTPrimed.class); tnt.setFuseTicks(5); tntBlock.setType(Material.AIR); } } }.runTaskLater(TotalFreedomMod.plugin, 30L); event.setCancelled(true); break; } case RAW_FISH: { final int RADIUS_HIT = 5; final int STRENGTH = 4; // Clownfish if (TFM_DepreciationAggregator.getData_MaterialData(event.getItem().getData()) == 2) { if (TFM_AdminList.isSeniorAdmin(player, true) || TFM_AdminList.isTelnetAdmin(player, true)) { boolean didHit = false; final Location playerLoc = player.getLocation(); final Vector playerLocVec = playerLoc.toVector(); final List<Player> players = player.getWorld().getPlayers(); for (final Player target : players) { if (target == player) { continue; } final Location targetPos = target.getLocation(); final Vector targetPosVec = targetPos.toVector(); try { if (targetPosVec.distanceSquared(playerLocVec) < (RADIUS_HIT * RADIUS_HIT)) { TFM_Util.setFlying(player, false); target.setVelocity( targetPosVec.subtract(playerLocVec).normalize().multiply(STRENGTH)); didHit = true; } } catch (IllegalArgumentException ex) { } } if (didHit) { final Sound[] sounds = Sound.values(); for (Sound sound : sounds) { if (sound.toString().contains("HIT")) { playerLoc .getWorld() .playSound( randomOffset(playerLoc, 5.0), sound, 100.0f, randomDoubleRange(0.5, 2.0).floatValue()); } } } } else { final StringBuilder msg = new StringBuilder(); final char[] chars = (player.getName() + " is a clown.").toCharArray(); for (char c : chars) { msg.append(TFM_Util.randomChatColor()).append(c); } TFM_Util.bcastMsg(msg.toString()); player.getInventory().getItemInHand().setType(Material.POTATO_ITEM); } event.setCancelled(true); break; } } } break; } } }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); final String ip = TFM_Util.getIp(player); final TFM_Player playerEntry; TFM_Log.info( "[JOIN] " + TFM_Util.formatPlayer(player) + " joined the game with IP address: " + ip, true); // Check absolute value to account for negatives if (Math.abs(player.getLocation().getX()) >= MAX_XY_COORD || Math.abs(player.getLocation().getZ()) >= MAX_XY_COORD) { player.teleport(player.getWorld().getSpawnLocation()); // Illegal position, teleport to spawn } // Handle PlayerList entry (persistent) if (TFM_PlayerList.existsEntry(player)) { playerEntry = TFM_PlayerList.getEntry(player); playerEntry.setLastLoginUnix(TFM_Util.getUnixTime()); playerEntry.setLastLoginName(player.getName()); playerEntry.addIp(ip); playerEntry.save(); } else { playerEntry = TFM_PlayerList.getEntry(player); TFM_Log.info("Added new player: " + TFM_Util.formatPlayer(player)); } // Generate PlayerData (non-persistent) final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); playerdata.setSuperadminIdVerified(false); if (TFM_AdminList.isSuperAdmin(player)) { for (String storedIp : playerEntry.getIps()) { TFM_BanManager.unbanIp(storedIp); TFM_BanManager.unbanIp(TFM_Util.getFuzzyIp(storedIp)); } TFM_BanManager.unbanUuid(TFM_UuidManager.getUniqueId(player)); player.setOp(true); // Verify strict IP match if (!TFM_AdminList.isIdentityMatched(player)) { playerdata.setSuperadminIdVerified(false); TFM_Util.bcastMsg( "Warning: " + player.getName() + " is an admin, but is using an account not registered to one of their ip-list.", ChatColor.RED); } else { playerdata.setSuperadminIdVerified(true); TFM_AdminList.updateLastLogin(player); } } TFM_PlayerData.getPlayerData(player).setCommandSpy(true); // Handle admin impostors if (TFM_AdminList.isAdminImpostor(player)) { TFM_Util.bcastMsg( "Warning: " + player.getName() + " has been flagged as an impostor and has been frozen!", ChatColor.RED); TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); player.getInventory().clear(); player.setOp(false); player.setGameMode(GameMode.SURVIVAL); TFM_PlayerData.getPlayerData(player).setFrozen(true); } else if (TFM_AdminList.isSuperAdmin(player) || TFM_Util.DEVELOPERS.contains(player.getName())) { TFM_Util.bcastMsg( ChatColor.AQUA + player.getName() + " is " + TFM_PlayerRank.getLoginMessage(player)); } // TODO: Cleanup String name = player.getName(); if (TFM_Util.DEVELOPERS.contains(player.getName())) { name = ChatColor.DARK_PURPLE + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&5Developer&8]"); } if (TFM_Util.EXECUTIVES.contains(player.getName())) { name = ChatColor.DARK_BLUE + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&1Executive&8]"); } if (TFM_Util.MANAGERS.contains(player.getName())) { name = ChatColor.DARK_RED + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&4Admin Manager&8]"); } else if (TFM_AdminList.isSuperAdmin(player)) { if (TFM_ConfigEntry.SERVER_OWNERS.getList().contains(name)) { name = ChatColor.BLUE + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&9Owner&8]"); } else if (TFM_AdminList.isSeniorAdmin(player)) { name = ChatColor.LIGHT_PURPLE + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&dSenior Admin&8]"); } else if (TFM_AdminList.isTelnetAdmin(player, true)) { name = ChatColor.DARK_GREEN + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&2Telnet Admin&8]"); } else { name = ChatColor.AQUA + name; TFM_PlayerData.getPlayerData(player).setTag("&8[&BSuper Admin&8]"); } } try { player.setPlayerListName(StringUtils.substring(name, 0, 16)); } catch (IllegalArgumentException ex) { } new BukkitRunnable() { @Override public void run() { if (TFM_ConfigEntry.ADMIN_ONLY_MODE.getBoolean()) { player.sendMessage(ChatColor.RED + "Server is currently closed to non-superadmins."); } if (TotalFreedomMod.lockdownEnabled) { TFM_Util.playerMsg( player, "Warning: Server is currenty in lockdown-mode, new players will not be able to join!", ChatColor.RED); } } }.runTaskLater(TotalFreedomMod.plugin, 20L * 1L); }
@EventHandler(priority = EventPriority.NORMAL) public void onPlayerChat(AsyncPlayerChatEvent event) { try { final Player player = event.getPlayer(); String message = event.getMessage().trim(); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player); // Check for spam final Long lastRan = TFM_Heartbeat.getLastRan(); if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis()) { // TFM_Log.warning("Heartbeat service timeout - can't check block place/break rates."); } else { if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT) { TFM_Util.bcastMsg( player.getName() + " was automatically kicked for spamming chat.", ChatColor.RED); TFM_Util.autoEject(player, "Kicked for spamming chat."); playerdata.resetMsgCount(); event.setCancelled(true); return; } } // Check for message repeat if (playerdata.getLastMessage().equalsIgnoreCase(message)) { TFM_Util.playerMsg(player, "Please do not repeat messages."); event.setCancelled(true); return; } playerdata.setLastMessage(message); // Check for muted if (playerdata.isMuted()) { if (!TFM_AdminList.isSuperAdmin(player)) { player.sendMessage(ChatColor.RED + "You are muted, STFU!"); event.setCancelled(true); return; } playerdata.setMuted(false); } // Strip color from messages message = ChatColor.stripColor(message); // Truncate messages that are too long - 100 characters is vanilla client max if (message.length() > 100) { message = message.substring(0, 100); TFM_Util.playerMsg(player, "Message was shortened because it was too long to send."); } // Check for caps if (message.length() >= 6) { int caps = 0; for (char c : message.toCharArray()) { if (Character.isUpperCase(c)) { caps++; } } if (((float) caps / (float) message.length()) > 0.65) // Compute a ratio so that longer sentences can have more caps. { message = message.toLowerCase(); } } // Check for adminchat if (playerdata.inAdminChat()) { TFM_Util.adminChatMessage(player, message, false); event.setCancelled(true); return; } // Finally, set message event.setMessage(message); // Set the tag if (playerdata.getTag() != null) { player.setDisplayName( (playerdata.getTag() + " " + player.getDisplayName().replaceAll(" ", ""))); } } catch (Exception ex) { TFM_Log.severe(ex); } }