package net.diamonddominion.esaych.global; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.diamonddominion.esaych.util.SQL; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.block.Sign; import org.bukkit.entity.Player; public class ChatUtils { static Chat chatPlugin = null; public ChatUtils(Chat chat) { World sv = Bukkit.getWorld("Survival"); if (sv != null) { SQL.singleQuery("TRUNCATE TABLE `dd-owners`;"); for (int a = 0; a <= 8; a++) { Sign sign = (Sign) sv.getBlockAt(60+a, 71, 159).getState(); String data = sign.getLine(1); data = data.replaceAll(" Owner", "").toLowerCase(); String name = sign.getLine(2).replaceAll("�4", "").replaceAll("�2", "").replaceAll("�o", ""); SQL.singleQuery("INSERT INTO `dd-owners` (`server`, `owner`) VALUES ('"+data+"', '"+name+"');"); } } Connection con = SQL.getConnection(); try { Statement st = (Statement) con.createStatement(); ResultSet result = st.executeQuery("SELECT * FROM `dd-owners`;"); while (result.next()) { String server = result.getString("server"); String owner = result.getString("owner"); owners.put(server, owner); } } catch (SQLException e) { e.printStackTrace(); } ChatUtils.chatPlugin = chat; } public Map<String, String> owners = new HashMap<String, String>(); @SuppressWarnings("static-access") public String getNamePrefix(Player player) { List<String> groups = Arrays.asList(chatPlugin.perms.getPlayerGroups(player)); String prefix = ChatColor.GRAY + ""; if (groups.contains("Respected")) prefix = ChatColor.AQUA + ""; if (groups.contains("Assistant")) prefix = ChatColor.GREEN + "" + ChatColor.ITALIC; if (groups.contains("YouTuber")) prefix = ChatColor.LIGHT_PURPLE + ""; if (groups.contains("VIP") || groups.contains("Premium") || groups.contains("Elite") || groups.contains("Exclusive") || groups.contains("Ultimate")) prefix = ChatColor.YELLOW + ""; if (groups.contains("DemiGod") || groups.contains("DGMod")) prefix = ChatColor.BLUE + ""; if (groups.contains("Mod") || groups.contains("VIMod") || groups.contains("PMod") || groups.contains("EMod") || groups.contains("ExMod") || groups.contains("UMod")) prefix = ChatColor.DARK_GREEN + ""; if (groups.contains("HeadMod")) prefix = ChatColor.DARK_GREEN + "" + ChatColor.ITALIC; if (groups.contains("Admin")) { prefix = ChatColor.DARK_RED + ""; String owner = owners.get(chatPlugin.plugin.detectedServer()); if (player.getName().equals(owner)) { prefix = ChatColor.DARK_PURPLE + ""; } } if (groups.contains("HeadAdmin")) prefix = ChatColor.DARK_RED + "" + ChatColor.ITALIC; if (groups.contains("Owner")) prefix = ChatColor.DARK_PURPLE + "" + ChatColor.ITALIC; return prefix; } public String getDonorPrefix(Player player) { @SuppressWarnings("static-access") List<String> groups = Arrays.asList(chatPlugin.perms.getPlayerGroups(player)); String prefix = ""; if (groups.contains("YouTuber")) prefix = ChatColor.BLACK + "[" + ChatColor.DARK_RED + "You" + ChatColor.WHITE + "Tuber" + ChatColor.BLACK + "] "; if (groups.contains("VIP") || groups.contains("VIMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "V" + ChatColor.BLUE + ") "; if (groups.contains("Premium") || groups.contains("PMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "P" + ChatColor.BLUE + ") "; if (groups.contains("Elite") || groups.contains("EMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "E" + ChatColor.BLUE + ") "; if (groups.contains("Exclusive") || groups.contains("ExMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "X" + ChatColor.BLUE + ") "; if (groups.contains("Ultimate") || groups.contains("UMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "U" + ChatColor.BLUE + ") "; if (groups.contains("DGMod")) prefix = ChatColor.BLUE + "(" + ChatColor.DARK_RED + "" + ChatColor.BOLD + "DG" + ChatColor.BLUE + ") "; return prefix; } public String getWorld(Player player) { String world = player.getWorld().getName(); String wt = "?"; if (world.equals("Survival")) wt = "SV"; if (world.equals("TownWorld")) wt = "TW"; if (world.equals("EventWorld")) { double x = player.getLocation().getX(); double z = player.getLocation().getZ(); if (x > 5000 && z > 5000) { wt = "SG"; } else { wt = "EW"; } } if (world.equals("Build")) { double x = player.getLocation().getX(); double z = player.getLocation().getZ(); if (x > 50000 && z < -50000) { wt = "PX"; } else if (x < -50000 && z < -50000) { wt = "FB"; } else if (x > 50000 && z > 50000) { wt = "RS"; } else { wt = "B"; } } if (world.equals("Nether")) wt = "N"; if (world.equals("End")) wt = "E"; if (world.equals("Destruction")) wt = "DS"; if (world.equals("SkyBlock")) wt = "SB"; return ChatColor.DARK_AQUA + "<" + wt + getChannel(player) + ">"; } @SuppressWarnings("static-access") public String getFaction(Player player, Player rec) { if (chatPlugin.f_t != null) { return chatPlugin.f_t.getFactionColorsName(player, rec); } return ""; } @SuppressWarnings("static-access") public String getTown(Player player) { if (chatPlugin.f_t != null) { return chatPlugin.f_t.getTown(player); } return ""; } @SuppressWarnings("static-access") public String getChannel(Player player) { String channel = chatPlugin.sql.getChannel(player.getName()); if (channel == null) { channel = "g"; } return getChannelPrefix(player) + "" + ChatColor.ITALIC + channel.toUpperCase() + ChatColor.DARK_AQUA; } @SuppressWarnings("static-access") public String getChannelPrefix(Player player) { String channel = chatPlugin.sql.getChannel(player.getName()); if (channel == null) { channel = "g"; } if (channel.equals("g")) return ChatColor.WHITE + ""; if (channel.equals("w")) return ChatColor.AQUA + ""; if (channel.equals("l")) return ChatColor.YELLOW + ""; if (channel.equals("f")) return ChatColor.GREEN + ""; if (channel.equals("t")) return ChatColor.GOLD + ""; if (channel.equals("n")) return ChatColor.translateAlternateColorCodes('&', "&6&o"); if (channel.equals("s")) return ChatColor.RED + ""; return ChatColor.GRAY + ""; } @SuppressWarnings("static-access") public String removeCussWords(String msg, boolean checkCussed, Player player, boolean change, String color) { String secondMsg = ""; for (String word : msg.split(" ")) { for (String in : chatPlugin.cusses.keySet()) { if (removeColorCodes(word).toLowerCase().contains(in)) { if (change) { // String let = cusses.get(in).substring(cusses.get(in).indexOf(">") + 1, cusses.get(in).length()); word = removeColorCodes(word).toLowerCase().replaceAll( in, chatPlugin.cusses.get(in) .replaceAll("<", ChatColor.MAGIC + "") .replaceAll(">", ChatColor.RESET + color)); // word = word.substring(0, word.length() - let.length()); } if (checkCussed) { chatPlugin.addToCussNum(player); } } } secondMsg += (word + " "); } msg = secondMsg.substring(0, secondMsg.length() - 1); for (String in : chatPlugin.cusses.keySet()) { if (removeColorCodes(msg).toLowerCase().contains(in)) { if (change) { // String let = cusses.get(in).substring(cusses.get(in).indexOf(">") + 1, cusses.get(in).length()); msg = removeMostColorCodes(msg).toLowerCase() .replaceAll(in, chatPlugin.cusses.get(in) .replaceAll("<", ChatColor.MAGIC + "") .replaceAll(">", ChatColor.RESET + color)); } if (checkCussed) { chatPlugin.addToCussNum(player); } } } if (msg.endsWith(" ass")) { if (change) msg = msg.substring(0, msg.length() - 3) + "a" + ChatColor.MAGIC + "ss"; if (checkCussed) { chatPlugin.addToCussNum(player); } } if (msg.startsWith("ass ") || msg.equals("ass")) { if (change) msg = "a" + ChatColor.MAGIC + "ss" + ChatColor.RESET + "" + color + msg.substring(3, msg.length()); if (checkCussed) { chatPlugin.addToCussNum(player); } } String pattern = "\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?"; Pattern compiledPattern = Pattern.compile(pattern); Matcher matcher = compiledPattern.matcher(msg); String ip = ""; while (matcher.find()) { ip = matcher.group(); msg = msg.replace(ip, "*.*.*.*"); } final String name = player.getName(); if (!ip.equals("")) chatPlugin.plugin.getServer().getScheduler().scheduleSyncDelayedTask(chatPlugin.plugin, new Runnable() { @Override public void run() { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute " + name); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "kick " + name + " Trying to advertise another server."); } }, 1); return msg; } public String changeCussColors(String msg) { String finalMsg = ""; for (int charNum = 0; charNum < msg.length(); charNum++) { String c = msg.substring(charNum, charNum + 1); if (c.equals("&")) { try { if (msg.substring(charNum - 2, charNum).equals(ChatColor.RESET + "")) { c = ChatColor.translateAlternateColorCodes('&', msg.substring(charNum, charNum + 2)); charNum++; } } catch (Exception e) {} } finalMsg = finalMsg + c; } return finalMsg; } public String removeCAPS(String msg) { String newMsg = ""; for (String word : msg.split(" ")) { int caps = 0; for (int i = 0; i < word.length(); i++){ String c = word.substring(i, i+1); if (c.toUpperCase().equals(c)) caps++; } if (caps > 3) word = word.toLowerCase(); newMsg += word + " "; } return newMsg; } public String removeColorCodes(String s) { return s.replaceAll(ChatColor.DARK_BLUE + "", "") .replaceAll(ChatColor.DARK_GREEN + "", "") .replaceAll(ChatColor.DARK_AQUA + "", "") .replaceAll(ChatColor.DARK_RED + "", "") .replaceAll(ChatColor.GOLD + "", "") .replaceAll(ChatColor.DARK_PURPLE + "", "") .replaceAll(ChatColor.GRAY + "", "") .replaceAll(ChatColor.DARK_GRAY + "", "") .replaceAll(ChatColor.BLACK + "", "") .replaceAll(ChatColor.GREEN + "", "") .replaceAll(ChatColor.AQUA + "", "") .replaceAll(ChatColor.RED + "", "") .replaceAll(ChatColor.LIGHT_PURPLE + "", "") .replaceAll(ChatColor.YELLOW + "", "") .replaceAll(ChatColor.WHITE + "", "") .replaceAll(ChatColor.ITALIC + "", "") .replaceAll(ChatColor.BOLD + "", "") .replaceAll(ChatColor.UNDERLINE + "", "") .replaceAll(ChatColor.MAGIC + "", "") .replaceAll(ChatColor.RESET + "", ""); } public String removeMostColorCodes(String s) { //except magic and underline return s.replaceAll(ChatColor.DARK_BLUE + "", "") .replaceAll(ChatColor.DARK_GREEN + "", "") .replaceAll(ChatColor.DARK_AQUA + "", "") .replaceAll(ChatColor.DARK_RED + "", "") .replaceAll(ChatColor.GOLD + "", "") .replaceAll(ChatColor.DARK_PURPLE + "", "") .replaceAll(ChatColor.GRAY + "", "") .replaceAll(ChatColor.DARK_GRAY + "", "") .replaceAll(ChatColor.BLACK + "", "") .replaceAll(ChatColor.GREEN + "", "") .replaceAll(ChatColor.AQUA + "", "") .replaceAll(ChatColor.RED + "", "") .replaceAll(ChatColor.LIGHT_PURPLE + "", "") .replaceAll(ChatColor.YELLOW + "", "") .replaceAll(ChatColor.WHITE + "", "") .replaceAll(ChatColor.ITALIC + "", "") .replaceAll(ChatColor.BOLD + "", "") .replaceAll(ChatColor.UNDERLINE + "", ""); } public String getPlayerListName(Player player) { String pre = getNamePrefix(player); String[] fix = pre.split(" "); String name; if (fix.length > 1) { name = fix[fix.length-1] + player.getName(); } else { name = getNamePrefix(player) + player.getName(); } if (name.length() > 16) name = name.substring(0, 16); return name; } public String getDName(Player player) { return getNamePrefix(player) + player.getName(); } @SuppressWarnings("static-access") public String getDate(Player p) { String date = chatPlugin.sql.getDatingPartner(p.getName()); if (date == null) return ""; return ChatColor.LIGHT_PURPLE + "\u2764" + date.substring(0, 4) + "\u2764 "; } @SuppressWarnings("static-access") public String getName(Player player) { String prefix = chatPlugin.sql.getPrefix(player.getName()); if (prefix != null) { return ChatColor.translateAlternateColorCodes('&', prefix).replaceAll("%name%", getDName(player)).replaceAll(player.getName(), getDName(player)); } else { return player.getName(); } } }