diff --git a/TheButtonAutoFlair.jar b/TheButtonAutoFlair.jar index 53132ce..4e1ab4b 100644 Binary files a/TheButtonAutoFlair.jar and b/TheButtonAutoFlair.jar differ diff --git a/TheButtonAutoFlair/plugin.yml b/TheButtonAutoFlair/plugin.yml index d4e8b2f..4bcf6f7 100644 --- a/TheButtonAutoFlair/plugin.yml +++ b/TheButtonAutoFlair/plugin.yml @@ -18,8 +18,6 @@ commands: mwiki: description: Search the wiki. usage: "&vUsage: /mwiki [query]&r" - chat: - description: Chats from console. author: NorbiPeti depend: [Essentials, Towny, Minigames, Votifier, Factions] permissions: diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/ChatProcessing.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/ChatProcessing.java new file mode 100644 index 0000000..4ef08e1 --- /dev/null +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/ChatProcessing.java @@ -0,0 +1,467 @@ +package tk.sznp.thebuttonautoflair; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.regex.Pattern; + +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Objective; + +import ru.tehkode.permissions.bukkit.PermissionsEx; + +import com.earth2me.essentials.Essentials; +import com.palmergames.bukkit.towny.exceptions.NotRegisteredException; +import com.palmergames.bukkit.towny.object.Nation; +import com.palmergames.bukkit.towny.object.Resident; +import com.palmergames.bukkit.towny.object.Town; + +public class ChatProcessing { + // Returns e.setCancelled + public static boolean ProcessChat(CommandSender sender, String message) { + if (PlayerListener.essentials == null) + PlayerListener.essentials = (Essentials) (Bukkit.getPluginManager() + .getPlugin("Essentials")); + Player player = (sender instanceof Player ? (Player) sender : null); + if (player != null && message.equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + if (!mp.PressedF && PlayerListener.ActiveF) { + PlayerListener.FCount++; + mp.PressedF = true; + if (PlayerListener.FPlayer != null + && PlayerListener.FPlayer.FCount < Integer.MAX_VALUE - 1) + PlayerListener.FPlayer.FCount++; + } + } + + boolean greentext = message.startsWith(">"); + String msg = message.toLowerCase(); + if (player != null && msg.contains("lol")) { + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + Commands.Lastlolornot = true; + } else { + for (int i = 0; i < PlayerListener.LaughStrings.length; i++) { + if (msg.contains(PlayerListener.LaughStrings[i])) { + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + Commands.Lastlolornot = false; + break; + } + } + } + + MaybeOfflinePlayer mplayer = null; + if (player != null) { + mplayer = MaybeOfflinePlayer.AllPlayers.get(player.getUniqueId()); + } + Channel currentchannel = (mplayer == null ? PlayerListener.ConsoleChannel + : mplayer.CurrentChannel); + String formattedmessage = message; + formattedmessage = formattedmessage.replace("\\", "\\\\"); // It's + // really + // important + // to escape + // the + // slashes + // first + formattedmessage = formattedmessage.replace("\"", "\\\""); + formattedmessage = formattedmessage.replace("&", "§"); + formattedmessage = formattedmessage.replace("§r", "§" + + currentchannel.DisplayName.charAt(1)); + String suggestmsg = formattedmessage; + + // URLs + Rainbow text + String[] parts = formattedmessage.split("\\s+"); + boolean hadurls = false; + final String[] RainbowPresserColors = new String[] { "c", "6", "e", + "a", "9", "5" }; + int rpc = 0; + int currentindex = 0; + for (String item : parts) { + try { + URL url = new URL(item); + formattedmessage = formattedmessage + .replace( + item, + String.format( + "\",\"color\":\"%s\"},{\"text\":\"%s\",\"color\":\"%s\",\"underlined\":\"true\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open URL\",\"color\":\"blue\"}]}}},{\"text\":\"", + (greentext ? "green" + : currentchannel.Color), url, + (greentext ? "green" + : currentchannel.Color), url)); + hadurls = true; + } catch (MalformedURLException e) { + } + if (mplayer != null && mplayer.RainbowPresserColorMode) { // TODO: + // Rainbow + // mode + // for + // console + if (item.startsWith(RainbowPresserColors[rpc])) { // Prevent + // words + // being + // equal/starting + // with a + // color + // code + // letter to + // be messed + // up + if (rpc + 1 < RainbowPresserColors.length) + rpc++; + else + rpc = 0; + } + StringBuffer buf = new StringBuffer(formattedmessage); + buf.replace(currentindex, currentindex + item.length(), + String.format("§%s%s", RainbowPresserColors[rpc], item)); + formattedmessage = buf.toString(); + if (rpc + 1 < RainbowPresserColors.length) + rpc++; + else + rpc = 0; + } + currentindex += item.length() + 3; + } + if (mplayer != null && mplayer.OtherColorMode != 0xFF) { + formattedmessage = String.format("§%x%s", mplayer.OtherColorMode, + formattedmessage); + } + + if (!hadurls) { + for (Player p : PluginMain.GetPlayers()) { + String color = ""; + if (formattedmessage.matches("(?i).*" + + Pattern.quote(p.getName()) + ".*")) { + if (PlayerListener.NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, + 0.5f); + else + p.playSound(p.getLocation(), + PlayerListener.NotificationSound, 1.0f, + (float) PlayerListener.NotificationPitch); + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .AddPlayerIfNeeded(p.getUniqueId()); + color = String.format( + "§%x", + (mp.GetFlairColor() == 0x00 ? 0xb : mp + .GetFlairColor())); + } + + formattedmessage = formattedmessage.replaceAll( + "(?i)" + Pattern.quote(p.getName()), + color + + p.getName() + + (greentext ? "§a" + : currentchannel.DisplayName.substring( + 0, 2))); + } + for (String n : PlayerListener.nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (formattedmessage.matches("(?i).*" + + Pattern.quote(nwithoutformatting) + ".*")) { + p = Bukkit.getPlayer(PlayerListener.nicknames.get(n)); + if (PlayerListener.NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, + 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), + PlayerListener.NotificationSound, 1.0f, + (float) PlayerListener.NotificationPitch); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); + } + if (p != null) { + formattedmessage = formattedmessage.replaceAll( + "(?i)" + Pattern.quote(nwithoutformatting), + n + + (greentext ? "§a" + : currentchannel.DisplayName + .substring(0, 2))); + } + } + + if (formattedmessage.matches("(?i).*" + Pattern.quote("@console") + + ".*")) { + formattedmessage = formattedmessage.replaceAll( + "(?i)" + Pattern.quote("@console"), "§b@console§r"); + System.out.println("\007"); + } + } + + if (player != null + && PlayerListener.essentials.getUser(player).isMuted()) + return true; + + StringBuilder json = new StringBuilder(); + json.append("[\"\","); + json.append(String + .format("{\"text\":\"[%s]%s\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"Copy message\",\"color\":\"blue\"}},clickEvent:{\"action\":\"suggest_command\",\"value\":\"%s\"}},", + currentchannel.DisplayName, + (mplayer != null && !mplayer.RPMode ? "[OOC]" : ""), + suggestmsg)); + json.append("{\"text\":\" <\"},"); + json.append(String.format("{\"text\":\"%s%s\",", + (player != null ? player.getDisplayName() : sender.getName()), + (mplayer != null ? mplayer.GetFormattedFlair() : ""))); + json.append("\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["); + json.append(String.format("{\"text\":\"%s\n\",", + (player != null ? player.getName() : sender.getName()))); + json.append(String + .format("\"color\":\"aqua\"},{\"text\":\"World: %s\n\",\"color\":\"white\"},", + (player != null ? player.getWorld().getName() : "-"))); + json.append(String.format( + "{\"text\":\"Respect: %s%s%s\",\"color\":\"white\"}]}}},", + (mplayer != null ? (mplayer.FCount / (double) mplayer.FDeaths) + : "Infinite"), + (mplayer != null && mplayer.UserName != null + && !mplayer.UserName.isEmpty() ? "\nUserName: " + + mplayer.UserName : ""), + (mplayer != null + && mplayer.PlayerName.equals("\nAlpha_Bacca44") ? "\nDeaths: " + + PlayerListener.AlphaDeaths + : ""))); + json.append("{\"text\":\"> \",\"color\":\"white\"},"); + + int index = -1; + ArrayList list = new ArrayList(); + while ((index = message.indexOf("#", index + 1)) != -1) { + int index2 = message.indexOf(" ", index + 1); + if (index2 == -1) + index2 = message.length(); + int index3 = message.indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = message.substring(index + 1, index2); + list.add(original); + } + + if (!hadurls) { + for (String original : list) + // Hashtags + formattedmessage = formattedmessage + .replace( + "#" + original, + String.format( + "\",\"color\":\"%s\"},{\"text\":\"#%s\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}},{\"text\":\"", + (greentext ? "green" + : currentchannel.Color), + original, original)); + } + + json.append(String.format("{\"text\":\"%s\",\"color\":\"%s\"}]", + formattedmessage, (greentext ? "green" : currentchannel.Color))); + String jsonstr = json.toString(); + if (jsonstr.length() >= 32767) { + sender.sendMessage("§cError: Message too large. Try shortening it, or remove hashtags and other formatting."); + return true; + } + if (currentchannel.equals(Channel.TownChat) + || currentchannel.equals(Channel.NationChat)) { + if (player == null) { + sender.sendMessage("§cYou are not a player!"); + return true; + } + for (Player p : PluginMain.GetPlayers()) { + try { + Resident resident = PluginMain.Instance.TU.getResidentMap() + .get(p.getName().toLowerCase()); + if (!resident.getName().equals(player.getName()) + && resident.getModes().contains("spy")) + Bukkit.getPlayer(resident.getName()).sendMessage( + String.format("[SPY-%s] - %s: %s", + currentchannel.DisplayName, + player.getDisplayName(), message)); + } catch (Exception e) { + } + } + } + if (currentchannel.equals(Channel.TownChat)) { + try { + Town town = null; + try { + town = PluginMain.Instance.TU.getResidentMap() + .get(player.getName().toLowerCase()).getTown(); + } catch (NotRegisteredException e) { + } + if (town == null) { + player.sendMessage("§cYou aren't in a town or an error occured."); + return true; + } + index = PluginMain.Instance.Towns.indexOf(town); + if (index < 0) { + PluginMain.Instance.Towns.add(town); + index = PluginMain.Instance.Towns.size() - 1; + } + Objective obj = PluginMain.SB.getObjective("town"); + for (Player p : PluginMain.GetPlayers()) { + try { + if (PluginMain.Instance.TU.getResidentMap() + .get(p.getName().toLowerCase()).getTown() + .getName().equals(town.getName())) + obj.getScore(p.getName()).setScore(index); + else + obj.getScore(p.getName()).setScore(-1); + } catch (Exception e) { + } + } + PluginMain.Instance + .getServer() + .dispatchCommand( + PluginMain.Console, + String.format( + "tellraw @a[score_town=%d,score_town_min=%d] %s", + index, index, json.toString())); + } catch (IllegalStateException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalStateException)"); + return true; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalArgumentException)"); + return true; + } + } else if (currentchannel.equals(Channel.NationChat)) { + try { + Town town = null; + try { + town = PluginMain.Instance.TU.getResidentMap() + .get(player.getName().toLowerCase()).getTown(); + } catch (NotRegisteredException e) { + } + if (town == null) { + player.sendMessage("§cYou aren't in a town or an error occured."); + return true; + } + Nation nation = null; + try { + nation = town.getNation(); + } catch (NotRegisteredException e) { + } + if (nation == null) { + player.sendMessage("§cYour town isn't in a nation or an error occured."); + return true; + } + index = PluginMain.Instance.Nations.indexOf(nation); + if (index < 0) { + PluginMain.Instance.Nations.add(nation); + index = PluginMain.Instance.Nations.size() - 1; + } + Objective obj = PluginMain.SB.getObjective("nation"); + for (Player p : PluginMain.GetPlayers()) { + try { + if (PluginMain.Instance.TU.getResidentMap() + .get(p.getName().toLowerCase()).getTown() + .getNation().getName().equals(nation.getName())) + obj.getScore(p.getName()).setScore(index); + else + obj.getScore(p.getName()).setScore(-1); + } catch (Exception e) { + } + } + PluginMain.Instance + .getServer() + .dispatchCommand( + PluginMain.Console, + String.format( + "tellraw @a[score_nation=%d,score_nation_min=%d] %s", + index, index, json.toString())); + } catch (IllegalStateException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalStateException)"); + return true; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalArgumentException)"); + return true; + } + } else if (currentchannel.equals(Channel.AdminChat)) { + try { // TODO: Put message JSON into it's structure + if (player != null && !player.isOp()) { + player.sendMessage("§cYou need to be an OP to use this channel."); + return true; + } + Objective obj = PluginMain.SB.getObjective("admin"); + for (Player p : PluginMain.GetPlayers()) { + if (p.isOp()) + obj.getScore(p.getName()).setScore(1); + else + obj.getScore(p.getName()).setScore(0); + } + PluginMain.Instance + .getServer() + .dispatchCommand( + PluginMain.Console, + String.format( + "tellraw @a[score_admin=%d,score_admin_min=%d] %s", + 1, 1, json.toString())); + } catch (IllegalStateException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalStateException)"); + return true; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalArgumentException)"); + return true; + } + } else if (currentchannel.equals(Channel.ModChat)) { + try { + if (player != null + && !PermissionsEx.getUser(player).inGroup("mod")) { + player.sendMessage("§cYou need to be a mod to use this channel."); + return true; + } + Objective obj = PluginMain.SB.getObjective("mod"); + for (Player p : PluginMain.GetPlayers()) { + if (PermissionsEx.getUser(p).inGroup("mod")) + obj.getScore(p.getName()).setScore(1); + else + obj.getScore(p.getName()).setScore(0); + } + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + String.format( + "tellraw @a[score_mod=%d,score_mod_min=%d] %s", + 1, 1, json.toString())); + } catch (IllegalStateException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalStateException)"); + return true; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + player.sendMessage("§cAn error occured while sending the message. (IllegalArgumentException)"); + return true; + } + } else + PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console, + String.format("tellraw @a %s", json.toString())); + PluginMain.Instance + .getServer() + .getConsoleSender() + .sendMessage( + String.format("[%s] <%s%s> %s", + currentchannel.DisplayName, + (player != null ? player.getDisplayName() + : sender.getName()), + (mplayer != null ? mplayer.GetFormattedFlair() + : ""), message)); + return true; + } +} diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java index 2eeb228..7ff676a 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java @@ -233,6 +233,13 @@ public class Commands implements CommandExecutor { pl.sendMessage(player.getDisplayName() + (Lastlolornot ? " unlolled " : " unlaughed ") + p.getDisplayName()); + Bukkit.getServer() + .getConsoleSender() + .sendMessage( + player.getDisplayName() + + (Lastlolornot ? " unlolled " + : " unlaughed ") + + p.getDisplayName()); Lastlol = null; } return true; @@ -248,12 +255,6 @@ public class Commands implements CommandExecutor { DoMWiki(player, args); return true; } - case "chat": { - /*ConsolePlayer cp = new ConsolePlayer(); - cp.chat("Test!"); - System.out.println("Sent msg");*/ - return true; - } default: player.sendMessage("Unknown command: " + cmd.getName()); break; @@ -268,11 +269,39 @@ public class Commands implements CommandExecutor { else DoAnnounce(null, args, null); return true; + } else { + switch (cmd.getName()) { + case "unlaugh": + case "unlol": { + Player p = null; + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10 * 20, 5, false, + false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(Bukkit.getServer().getConsoleSender() + .getName() + + (Lastlolornot ? " unlolled " : " unlaughed ") + + p.getDisplayName()); + Bukkit.getServer() + .getConsoleSender() + .sendMessage( + Bukkit.getServer().getConsoleSender() + .getName() + + (Lastlolornot ? " unlolled " + : " unlaughed ") + + p.getDisplayName()); + Lastlol = null; + } + return true; + } + } } return false; } - private static void DoReload(Player player) { // 2015.07.20. + private static void DoReload(Player player) { try { PluginMain.Console .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java index 6aa9004..39f144f 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java @@ -2,20 +2,15 @@ package tk.sznp.thebuttonautoflair; import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; import java.util.HashMap; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import java.util.UUID; -import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.Sound; import org.bukkit.block.Block; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; @@ -33,15 +28,14 @@ import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.help.HelpTopic; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -import org.bukkit.scoreboard.Objective; import org.bukkit.util.Vector; -import ru.tehkode.permissions.bukkit.PermissionsEx; import au.com.mineauz.minigames.MinigamePlayer; import au.com.mineauz.minigames.Minigames; @@ -49,7 +43,6 @@ import com.earth2me.essentials.Essentials; import com.massivecraft.factions.entity.BoardColl; import com.massivecraft.massivecore.ps.PS; import com.palmergames.bukkit.towny.exceptions.NotRegisteredException; -import com.palmergames.bukkit.towny.object.Nation; import com.palmergames.bukkit.towny.object.Resident; import com.palmergames.bukkit.towny.object.Town; import com.palmergames.bukkit.towny.object.TownBlock; @@ -58,10 +51,10 @@ import com.palmergames.bukkit.towny.object.WorldCoord; import com.vexsoftware.votifier.model.Vote; import com.vexsoftware.votifier.model.VotifierEvent; -public class PlayerListener implements Listener { // 2015.07.16. +public class PlayerListener implements Listener { public static HashMap nicknames = new HashMap<>(); - public static boolean Enable = false; // 2015.08.29. + public static boolean Enable = false; @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { @@ -161,493 +154,16 @@ public class PlayerListener implements Listener { // 2015.07.16. public static boolean ShowRPTag = false; - private Essentials essentials = null; - private final String[] LaughStrings = new String[] { "xd", "lel", "lawl", + public static Essentials essentials = null; + final static String[] LaughStrings = new String[] { "xd", "lel", "lawl", "kek", "lmao", "hue", "hah" }; @EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { - if (essentials == null) - essentials = ((Essentials) Bukkit.getPluginManager().getPlugin( - "Essentials")); if (event.isCancelled()) // TODO: Change FactionChat to /tellraw return; - if (event.getMessage().equalsIgnoreCase("F")) { - MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(event - .getPlayer().getUniqueId()); - if (!mp.PressedF && ActiveF) { - FCount++; - mp.PressedF = true; - if (FPlayer != null && FPlayer.FCount < Integer.MAX_VALUE - 1) - FPlayer.FCount++; - } - } - - boolean greentext = event.getMessage().startsWith(">"); - String msg = event.getMessage().toLowerCase(); - if (msg.contains("lol")) { - Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(event - .getPlayer().getUniqueId()); - Commands.Lastlolornot = true; - } else { - for (int i = 0; i < LaughStrings.length; i++) { - if (msg.contains(LaughStrings[i])) { - Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(event - .getPlayer().getUniqueId()); - Commands.Lastlolornot = false; - break; - } - } - } - - MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event - .getPlayer().getUniqueId()); - String formattedmessage = event.getMessage(); - formattedmessage = formattedmessage.replace("\\", "\\\\"); // It's - // really - // important - // to escape - // the - // slashes - // first - formattedmessage = formattedmessage.replace("\"", "\\\""); - if (PluginMain.permission.has(event.getPlayer(), "tbmc.admin")) { - formattedmessage = formattedmessage.replace("&", "§"); - formattedmessage = formattedmessage.replace("§r", "§" - + player.CurrentChannel.DisplayName.charAt(1)); - } - String suggestmsg = formattedmessage; - - // URLs + Rainbow text - String[] parts = formattedmessage.split("\\s+"); - boolean hadurls = false; - final String[] RainbowPresserColors = new String[] { "c", "6", "e", - "a", "9", "5" }; - int rpc = 0; - int currentindex = 0; - for (String item : parts) { - try { - URL url = new URL(item); - formattedmessage = formattedmessage - .replace( - item, - String.format( - "\",\"color\":\"%s\"},{\"text\":\"%s\",\"color\":\"%s\",\"underlined\":\"true\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open URL\",\"color\":\"blue\"}]}}},{\"text\":\"", - (greentext ? "green" - : player.CurrentChannel.Color), - url, (greentext ? "green" - : player.CurrentChannel.Color), - url)); - hadurls = true; - // System.out.println("URL: " + url); - } catch (MalformedURLException e) { - } - if (player.RainbowPresserColorMode) { - if (item.startsWith(RainbowPresserColors[rpc])) { // Prevent - // words - // being - // equal/starting - // with a - // color - // code - // letter to - // be messed - // up - if (rpc + 1 < RainbowPresserColors.length) - rpc++; - else - rpc = 0; - } - /* - * System.out.println("item: " + item); // TO!DO: TMP - * System.out.println("currentindex: " + currentindex); - * System.out.println("format: " + String.format("§%s%s", - * RainbowPresserColors[rpc], item)); - * System.out.println("formattedmessage: " + formattedmessage); - */ - StringBuffer buf = new StringBuffer(formattedmessage); - buf.replace(currentindex, currentindex + item.length(), - String.format("§%s%s", RainbowPresserColors[rpc], item)); - formattedmessage = buf.toString(); - /* - * "§" + RainbowPresserColors[rpc] + item)); - */ - if (rpc + 1 < RainbowPresserColors.length) - rpc++; - else - rpc = 0; - } - currentindex += item.length() + 3; - } - if (player.OtherColorMode != 0xFF) { - formattedmessage = String.format("§%x%s", player.OtherColorMode, - formattedmessage); - } - - if (!hadurls) { - for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. - String color = ""; // 2015.08.17. - if (formattedmessage.matches("(?i).*" - + Pattern.quote(p.getName()) + ".*")) { - if (NotificationSound == null) - p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, - 0.5f); // 2015.08.12. - else - p.playSound(p.getLocation(), NotificationSound, 1.0f, - (float) NotificationPitch); // 2015.08.14. - MaybeOfflinePlayer mp = MaybeOfflinePlayer - .AddPlayerIfNeeded(p.getUniqueId()); - color = String.format( - "§%x", - (mp.GetFlairColor() == 0x00 ? 0xb : mp - .GetFlairColor())); - } - - formattedmessage = formattedmessage.replaceAll( - "(?i)" + Pattern.quote(p.getName()), - color - + p.getName() - + (greentext ? "§a" - : player.CurrentChannel.DisplayName - .substring(0, 2))); - } - for (String n : nicknames.keySet()) { - Player p = null; - String nwithoutformatting = new String(n); - int index; - while ((index = nwithoutformatting.indexOf("§k")) != -1) - nwithoutformatting = nwithoutformatting.replace("§k" - + nwithoutformatting.charAt(index + 2), ""); // Support - // for - // one - // random - // char - while ((index = nwithoutformatting.indexOf('§')) != -1) - nwithoutformatting = nwithoutformatting.replace("§" - + nwithoutformatting.charAt(index + 1), ""); - if (formattedmessage.matches("(?i).*" - + Pattern.quote(nwithoutformatting) + ".*")) { - p = Bukkit.getPlayer(nicknames.get(n)); - if (NotificationSound == null) - p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, - 0.5f); // 2015.08.12. - else - p.playSound(p.getLocation(), NotificationSound, 1.0f, - (float) NotificationPitch); // 2015.08.14. - MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. - } - if (p != null) { - formattedmessage = formattedmessage.replaceAll( - "(?i)" + Pattern.quote(nwithoutformatting), - n - + (greentext ? "§a" - : player.CurrentChannel.DisplayName - .substring(0, 2))); - } - } - - if (formattedmessage.matches("(?i).*" + Pattern.quote("@console") - + ".*")) { - formattedmessage = formattedmessage.replaceAll( - "(?i)" + Pattern.quote("@console"), "§b@console§r"); - System.out.println("\007"); - } - } - - /* - * event.setFormat(event .getFormat() .replace( "{rptag}", - * (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") : "§8[OOC]§r")) - * .replace("{buttonflair}", flair) .replace( "{isitwilds}", - * (event.getPlayer().getWorld().getName() .equalsIgnoreCase("wilds") ? - * "[PVP]" : ""))); // 2015.09.04. - */ - - event.setCancelled(true); - if (essentials.getUser(event.getPlayer()).isMuted()) - return; - - StringBuilder json = new StringBuilder(); - json.append("[\"\","); - json.append(String - .format("{\"text\":\"[%s]%s\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"Copy message\",\"color\":\"blue\"}},clickEvent:{\"action\":\"suggest_command\",\"value\":\"%s\"}},", - player.CurrentChannel.DisplayName, - (!player.RPMode ? "[OOC]" : ""), suggestmsg)); - json.append("{\"text\":\" <\"},"); - json.append(String.format("{\"text\":\"%s%s\",", event.getPlayer() - .getDisplayName(), player.GetFormattedFlair())); - json.append("\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["); - json.append(String.format("{\"text\":\"%s\n\",", event.getPlayer() - .getName())); - json.append(String - .format("\"color\":\"aqua\"},{\"text\":\"World: %s\n\",\"color\":\"white\"},", - event.getPlayer().getWorld().getName())); - json.append(String - .format("{\"text\":\"Respect: %s%s%s\",\"color\":\"white\"}]}}},", - player.FCount / (double) player.FDeaths, - (player.UserName != null && !player.UserName.isEmpty() ? "\nUserName: " - + player.UserName - : ""), (player.PlayerName - .equals("\nAlpha_Bacca44") ? "\nDeaths: " - + AlphaDeaths : ""))); - json.append("{\"text\":\"> \",\"color\":\"white\"},"); - - int index = -1; - ArrayList list = new ArrayList(); - while ((index = event.getMessage().indexOf("#", index + 1)) != -1) { - int index2 = event.getMessage().indexOf(" ", index + 1); - if (index2 == -1) - index2 = event.getMessage().length(); - int index3 = event.getMessage().indexOf("#", index + 1); - if (index3 != -1 && index3 < index2) // A # occurs before a - // space - index2 = index3; - String original = event.getMessage().substring(index + 1, index2); - list.add(original); - } - - if (!hadurls) { - for (String original : list) - // Hashtags - formattedmessage = formattedmessage - .replace( - "#" + original, - String.format( - "\",\"color\":\"%s\"},{\"text\":\"#%s\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}},{\"text\":\"", - (greentext ? "green" - : player.CurrentChannel.Color), - original, original)); - } - - json.append(String.format("{\"text\":\"%s\",\"color\":\"%s\"}]", - formattedmessage, (greentext ? "green" - : player.CurrentChannel.Color))); - // System.out.println(formattedmessage); // TO!DO: TMP - String jsonstr = json.toString(); - if (jsonstr.length() >= 32767) { - event.getPlayer() - .sendMessage( - "§cError: Message too large. Try shortening it, or remove hashtags and other formatting."); - return; - } - if (player.CurrentChannel.equals(Channel.TownChat) - || player.CurrentChannel.equals(Channel.NationChat)) - // for (Resident resident : - // PluginMain.Instance.TU.getResidentMap().values()) { - for (Player p : PluginMain.GetPlayers()) { - try { - Resident resident = PluginMain.Instance.TU.getResidentMap() - .get(p.getName().toLowerCase()); - if (!resident.getName().equals(event.getPlayer().getName()) - && resident.getModes().contains("spy")) - Bukkit.getPlayer(resident.getName()).sendMessage( - String.format("[SPY-%s] - %s: %s", - player.CurrentChannel.DisplayName, - event.getPlayer().getDisplayName(), - event.getMessage())); - } catch (Exception e) { - // e.printStackTrace(); - } - } - if (player.CurrentChannel.equals(Channel.TownChat)) { - try { - // System.out.println(PluginMain.Instance.TU.getResidentMap().keys().nextElement()); - Town town = null; - try { - town = PluginMain.Instance.TU.getResidentMap() - .get(event.getPlayer().getName().toLowerCase()) - .getTown(); - } catch (NotRegisteredException e) { - } - if (town == null) { - event.getPlayer().sendMessage( - "§cYou aren't in a town or an error occured."); - return; - } - index = PluginMain.Instance.Towns.indexOf(town); - if (index < 0) { - PluginMain.Instance.Towns.add(town); - index = PluginMain.Instance.Towns.size() - 1; - } - // PluginMain.SB.getObjective("town").getScore(event.getPlayer().getName()).setScore(index); - // System.out.println("index: " + index); - Objective obj = PluginMain.SB.getObjective("town"); - // System.out.println("obj: " + obj); - for (Player p : PluginMain.GetPlayers()) { - // System.out.println(town.getName()); //Mute fixed, - // re-enabled /minecraft:me except when muted, admin and mod - // channel added, links implemented - try { - if (PluginMain.Instance.TU.getResidentMap() - .get(p.getName().toLowerCase()).getTown() - .getName().equals(town.getName())) - obj.getScore(p.getName()).setScore(index); - else - obj.getScore(p.getName()).setScore(-1); - } catch (Exception e) { - } - } - PluginMain.Instance - .getServer() - .dispatchCommand( - PluginMain.Console, - String.format( - "tellraw @a[score_town=%d,score_town_min=%d] %s", - index, index, json.toString())); - } catch (IllegalStateException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalStateException)"); - return; - } catch (IllegalArgumentException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalArgumentException)"); - return; - } - } else if (player.CurrentChannel.equals(Channel.NationChat)) { - try { - Town town = null; - try { - town = PluginMain.Instance.TU.getResidentMap() - .get(event.getPlayer().getName().toLowerCase()) - .getTown(); - } catch (NotRegisteredException e) { - } - if (town == null) { - event.getPlayer().sendMessage( - "§cYou aren't in a town or an error occured."); - return; - } - Nation nation = null; - try { - nation = town.getNation(); - } catch (NotRegisteredException e) { - } - if (nation == null) { - event.getPlayer() - .sendMessage( - "§cYour town isn't in a nation or an error occured."); - return; - } - index = PluginMain.Instance.Nations.indexOf(nation); - if (index < 0) { - PluginMain.Instance.Nations.add(nation); - index = PluginMain.Instance.Nations.size() - 1; - } - // PluginMain.SB.getObjective("nation").getScore(event.getPlayer().getName()).setScore(index); - Objective obj = PluginMain.SB.getObjective("nation"); - for (Player p : PluginMain.GetPlayers()) { - try { - if (PluginMain.Instance.TU.getResidentMap() - .get(p.getName().toLowerCase()).getTown() - .getNation().getName().equals(nation.getName())) - obj.getScore(p.getName()).setScore(index); - else - obj.getScore(p.getName()).setScore(-1); - } catch (Exception e) { - } - } - PluginMain.Instance - .getServer() - .dispatchCommand( - PluginMain.Console, - String.format( - "tellraw @a[score_nation=%d,score_nation_min=%d] %s", - index, index, json.toString())); - } catch (IllegalStateException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalStateException)"); - return; - } catch (IllegalArgumentException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalArgumentException)"); - return; - } - } else if (player.CurrentChannel.equals(Channel.AdminChat)) { - try { // TODO: Put message JSON into it's structure - if (!event.getPlayer().isOp()) { - event.getPlayer().sendMessage( - "§cYou need to be an OP to use this channel."); - return; - } - Objective obj = PluginMain.SB.getObjective("admin"); - for (Player p : PluginMain.GetPlayers()) { - if (p.isOp()) - obj.getScore(p.getName()).setScore(1); - else - obj.getScore(p.getName()).setScore(0); - } - PluginMain.Instance - .getServer() - .dispatchCommand( - PluginMain.Console, - String.format( - "tellraw @a[score_admin=%d,score_admin_min=%d] %s", - 1, 1, json.toString())); - } catch (IllegalStateException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalStateException)"); - return; - } catch (IllegalArgumentException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalArgumentException)"); - return; - } - } else if (player.CurrentChannel.equals(Channel.ModChat)) { - try { - if (!PermissionsEx.getUser(event.getPlayer()).inGroup("mod")) { - event.getPlayer().sendMessage( - "§cYou need to be a mod to use this channel."); - return; - } - Objective obj = PluginMain.SB.getObjective("mod"); - for (Player p : PluginMain.GetPlayers()) { - if (PermissionsEx.getUser(p).inGroup("mod")) - obj.getScore(p.getName()).setScore(1); - else - obj.getScore(p.getName()).setScore(0); - } - PluginMain.Instance.getServer().dispatchCommand( - PluginMain.Console, - String.format( - "tellraw @a[score_mod=%d,score_mod_min=%d] %s", - 1, 1, json.toString())); - } catch (IllegalStateException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalStateException)"); - return; - } catch (IllegalArgumentException e) { - e.printStackTrace(); - event.getPlayer() - .sendMessage( - "§cAn error occured while sending the message. (IllegalArgumentException)"); - return; - } - } else - PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console, - String.format("tellraw @a %s", json.toString())); - // System.out.println("JSON: " + json); // TO!DO: TMP - PluginMain.Instance - .getServer() - .getConsoleSender() - .sendMessage( - String.format("[%s] <%s%s> %s", - player.CurrentChannel.DisplayName, event - .getPlayer().getDisplayName(), player - .GetFormattedFlair(), event - .getMessage())); + event.setCancelled(ChatProcessing.ProcessChat(event.getPlayer(), + event.getMessage())); } @EventHandler(priority = EventPriority.HIGHEST) @@ -874,6 +390,12 @@ public class PlayerListener implements Listener { // 2015.07.16. for (Player pl : PluginMain.GetPlayers()) pl.sendMessage(event.getPlayer().getDisplayName() + " un" + s + "'d " + target.getDisplayName()); + Bukkit.getServer() + .getConsoleSender() + .sendMessage( + event.getPlayer().getDisplayName() + " un" + + s + "'d " + + target.getDisplayName()); event.setCancelled(true); } } @@ -928,9 +450,9 @@ public class PlayerListener implements Listener { // 2015.07.16. } } - private boolean ActiveF = false; - private int FCount = 0; - private MaybeOfflinePlayer FPlayer = null; + static boolean ActiveF = false; + static int FCount = 0; + static MaybeOfflinePlayer FPlayer = null; private Timer Ftimer; public static int AlphaDeaths; @@ -1107,4 +629,114 @@ public class PlayerListener implements Listener { // 2015.07.16. } } } + + public static Channel ConsoleChannel = Channel.GlobalChat; + + @EventHandler(priority = EventPriority.HIGHEST) + public void onConsoleCommand(ServerCommandEvent event) { + if (event.getCommand().length() < 2) + return; + int index = event.getCommand().indexOf(" "); + String cmd = ""; + if (index == -1) { + cmd = event.getCommand(); + if (cmd.equalsIgnoreCase(Channel.GlobalChat.Command)) { + ConsoleChannel = Channel.GlobalChat; + event.getSender().sendMessage( + "§6You are now talking in: §b" + + ConsoleChannel.DisplayName); + event.setCancelled(true); + } else if (cmd.equalsIgnoreCase(Channel.AdminChat.Command)) { + if (ConsoleChannel.equals(Channel.AdminChat)) + ConsoleChannel = Channel.GlobalChat; + else + ConsoleChannel = Channel.AdminChat; + event.getSender().sendMessage( + "§6You are now talking in: §b" + + ConsoleChannel.DisplayName); + event.setCancelled(true); + } else if (cmd.equalsIgnoreCase(Channel.ModChat.Command)) { + if (ConsoleChannel.equals(Channel.ModChat)) + ConsoleChannel = Channel.GlobalChat; + else + ConsoleChannel = Channel.ModChat; + event.getSender().sendMessage( + "§6You are now talking in: §b" + + ConsoleChannel.DisplayName); + event.setCancelled(true); + } + } else { + cmd = event.getCommand().substring(0, index); + if (cmd.equalsIgnoreCase(Channel.GlobalChat.Command)) { + event.setCancelled(true); + Channel c = ConsoleChannel; + ConsoleChannel = Channel.GlobalChat; + ChatProcessing.ProcessChat(Bukkit.getServer() + .getConsoleSender(), + event.getCommand().substring(index + 1)); + ConsoleChannel = c; + } else if (cmd.equalsIgnoreCase(Channel.TownChat.Command)) { + event.setCancelled(true); + Channel c = ConsoleChannel; + ConsoleChannel = Channel.TownChat; + ChatProcessing.ProcessChat(Bukkit.getServer() + .getConsoleSender(), + event.getCommand().substring(index + 1)); + ConsoleChannel = c; + } else if (cmd.equalsIgnoreCase(Channel.NationChat.Command)) { + event.setCancelled(true); + Channel c = ConsoleChannel; + ConsoleChannel = Channel.NationChat; + ChatProcessing.ProcessChat(Bukkit.getServer() + .getConsoleSender(), + event.getCommand().substring(index + 1)); + ConsoleChannel = c; + } else if (cmd.equalsIgnoreCase(Channel.AdminChat.Command)) { + event.setCancelled(true); + Channel c = ConsoleChannel; + ConsoleChannel = Channel.AdminChat; + ChatProcessing.ProcessChat(Bukkit.getServer() + .getConsoleSender(), + event.getCommand().substring(index + 1)); + ConsoleChannel = c; + } else if (cmd.equalsIgnoreCase(Channel.ModChat.Command)) { + event.setCancelled(true); + Channel c = ConsoleChannel; + ConsoleChannel = Channel.ModChat; + ChatProcessing.ProcessChat(Bukkit.getServer() + .getConsoleSender(), + event.getCommand().substring(index + 1)); + ConsoleChannel = c; + } + } + if (cmd.toLowerCase().startsWith("un")) { + for (HelpTopic ht : PluginMain.Instance.getServer().getHelpMap() + .getHelpTopics()) { + // event.getSender().sendMessage("HT: " + ht.getName()); + if (ht.getName().equalsIgnoreCase("/" + cmd)) + return; + } + String s = cmd.substring(2); + Player target = null; + target = Bukkit.getPlayer(event.getCommand().substring(index + 1)); + if (target == null) { + event.getSender().sendMessage( + "§cError: Player not found. (/un" + s + " )"); + event.setCancelled(true); + } + if (target != null) { + target.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10 * 20, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(event.getSender().getName() + " un" + s + + "'d " + target.getDisplayName()); + Bukkit.getServer() + .getConsoleSender() + .sendMessage( + event.getSender().getName() + " un" + s + "'d " + + target.getDisplayName()); + event.setCancelled(true); + } + } + } } diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java index 43ca6ae..e799f0a 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java @@ -94,7 +94,6 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. this.getCommand("mwiki").setExecutor(comm); this.getCommand("mwiki").setUsage( this.getCommand("mwiki").getUsage().replace('&', '§')); - this.getCommand("chat").setExecutor(comm); Instance = this; // 2015.08.08. Console = this.getServer().getConsoleSender(); // 2015.08.12. LoadFiles(false); // 2015.08.09. diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/ChatProcessing.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/ChatProcessing.class new file mode 100644 index 0000000..8cafb21 Binary files /dev/null and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/ChatProcessing.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class index 3479102..9ce2e2a 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class index 5f287cc..e2ba29f 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$1.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$1.class index 3378195..e0b208c 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$1.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$1.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class index 676f396..6ed4f53 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$3.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$3.class index 32ab45d..8b70a75 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$3.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$3.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$4.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$4.class index f90877a..eda06e8 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$4.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$4.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class index 85f39ae..b72418b 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class index bd07ddb..85e6cef 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class index f35aa18..7640c00 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class index 7b5a06a..ccf160d 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class differ