public static boolean run(CommandSender sender, String[] args, Warner warner) { SLAPI slapi = warner.getSLAPI(); PermissionUser user = PermissionsEx.getUser(args[0]); String target; Player targetOnline = (Bukkit.getServer().getPlayer(args[0])); if (targetOnline == null) { OfflinePlayer targetOffline = (Bukkit.getServer().getOfflinePlayer(args[0])); target = targetOffline.getName(); } else { String targetOnlineStr = (Bukkit.getServer().getPlayer(args[0]).getName()); target = targetOnlineStr; } YamlConfiguration config = warner.getConfig(); if (!sender.hasPermission("warner.warn.give")) { sender.sendMessage(ChatColor.DARK_RED + "You have insufficient permissions to do this."); return false; } if (target != null) { if (user.has("warner.admin.warn.exempt")) { sender.sendMessage(ChatColor.RED + "You can't warn this person!"); return false; } if (args.length > 1) { reason = createString(args, 1); } } else { sender.sendMessage(ChatColor.RED + args[0] + " was not found!"); return false; } // Load existing warnings of player warnings_player = slapi.loadPlayerWarnings(target, sender); if (warnings_player != null) { Long time_difference = 20L; if (warnings_player.size() > 0) { time_difference = (System.currentTimeMillis() - Long.parseLong(warnings_player.get(warnings_player.size() - 1)[3])) / 1000; } if (time_difference >= 20) { String[] warning = { sender.getName(), reason, getTimeNow(), System.currentTimeMillis() + "" }; warnings_player.add(warning); } else { sender.sendMessage( ChatColor.RED + "You have to wait " + ChatColor.GOLD + (20 - time_difference) + ChatColor.RED + " seconds until you can warn " + ChatColor.GOLD + target + ChatColor.RED + " again."); return false; } // save warnings to file if (!slapi.savePlayerWarnings(warnings_player, target)) { sender.sendMessage(ChatColor.RED + "Error writing Playerfile!"); return false; } } else { sender.sendMessage(ChatColor.RED + "Error reading Playerfile!"); return false; } if (targetOnline != null) { targetOnline.sendMessage( ChatColor.GOLD + sender.getName() + ChatColor.BLUE + " has warned you for:\n" + ChatColor.GOLD + reason + ChatColor.BLUE + "." + ChatColor.GOLD + " [" + warnings_player.size() + "]"); } Player[] playerList = Bukkit.getServer().getOnlinePlayers(); for (Player player : playerList) { if (player.hasPermission("warner.other.notify")) { player.sendMessage( ChatColor.GOLD + target + ChatColor.BLUE + " has been warned by " + ChatColor.GOLD + sender.getName() + ChatColor.BLUE + " for:\n" + ChatColor.GOLD + reason + ChatColor.BLUE + "." + ChatColor.GOLD + " [" + warnings_player.size() + "]"); } } Punisher.punish(target, warnings_player.size(), reason, sender, config); return true; }