diff --git a/.gitignore b/.gitignore index 743a233..0826fd3 100644 --- a/.gitignore +++ b/.gitignore @@ -215,3 +215,8 @@ pip-log.txt #Mr Developer .mr.developer.cfg .metadata/* +TheButtonAutoFlair/out/artifacts/Autoflair/Autoflair.jar +*.iml +*.name +.idea/compiler.xml +*.xml diff --git a/TheButtonAutoFlair/bin/de/inventivegames/TellRawAutoMessage/Reflection.class b/TheButtonAutoFlair/bin/de/inventivegames/TellRawAutoMessage/Reflection.class index 07671d3..0f454bd 100644 Binary files a/TheButtonAutoFlair/bin/de/inventivegames/TellRawAutoMessage/Reflection.class and b/TheButtonAutoFlair/bin/de/inventivegames/TellRawAutoMessage/Reflection.class differ diff --git a/TheButtonAutoFlair/bin/org/json/CDL.class b/TheButtonAutoFlair/bin/org/json/CDL.class index ceeef9a..a766932 100644 Binary files a/TheButtonAutoFlair/bin/org/json/CDL.class and b/TheButtonAutoFlair/bin/org/json/CDL.class differ diff --git a/TheButtonAutoFlair/bin/org/json/Cookie.class b/TheButtonAutoFlair/bin/org/json/Cookie.class index 7799866..f109dcf 100644 Binary files a/TheButtonAutoFlair/bin/org/json/Cookie.class and b/TheButtonAutoFlair/bin/org/json/Cookie.class differ diff --git a/TheButtonAutoFlair/bin/org/json/CookieList.class b/TheButtonAutoFlair/bin/org/json/CookieList.class index 80c3d23..7150bcf 100644 Binary files a/TheButtonAutoFlair/bin/org/json/CookieList.class and b/TheButtonAutoFlair/bin/org/json/CookieList.class differ diff --git a/TheButtonAutoFlair/bin/org/json/HTTP.class b/TheButtonAutoFlair/bin/org/json/HTTP.class index adc60a9..600f62e 100644 Binary files a/TheButtonAutoFlair/bin/org/json/HTTP.class and b/TheButtonAutoFlair/bin/org/json/HTTP.class differ diff --git a/TheButtonAutoFlair/bin/org/json/HTTPTokener.class b/TheButtonAutoFlair/bin/org/json/HTTPTokener.class index f9e5bcd..c16f018 100644 Binary files a/TheButtonAutoFlair/bin/org/json/HTTPTokener.class and b/TheButtonAutoFlair/bin/org/json/HTTPTokener.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONArray.class b/TheButtonAutoFlair/bin/org/json/JSONArray.class index db0e324..9f7c7a0 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONArray.class and b/TheButtonAutoFlair/bin/org/json/JSONArray.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONException.class b/TheButtonAutoFlair/bin/org/json/JSONException.class index bc646c9..db36831 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONException.class and b/TheButtonAutoFlair/bin/org/json/JSONException.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONML.class b/TheButtonAutoFlair/bin/org/json/JSONML.class index 990c552..a05eae7 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONML.class and b/TheButtonAutoFlair/bin/org/json/JSONML.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONObject$Null.class b/TheButtonAutoFlair/bin/org/json/JSONObject$Null.class index 0e5a505..8b7cc7b 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONObject$Null.class and b/TheButtonAutoFlair/bin/org/json/JSONObject$Null.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONObject.class b/TheButtonAutoFlair/bin/org/json/JSONObject.class index d35d404..eb86131 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONObject.class and b/TheButtonAutoFlair/bin/org/json/JSONObject.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONString.class b/TheButtonAutoFlair/bin/org/json/JSONString.class index f891964..df7818f 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONString.class and b/TheButtonAutoFlair/bin/org/json/JSONString.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONStringer.class b/TheButtonAutoFlair/bin/org/json/JSONStringer.class index 5a1fefa..2e6ad18 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONStringer.class and b/TheButtonAutoFlair/bin/org/json/JSONStringer.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONTokener.class b/TheButtonAutoFlair/bin/org/json/JSONTokener.class index 964ef46..181d3cb 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONTokener.class and b/TheButtonAutoFlair/bin/org/json/JSONTokener.class differ diff --git a/TheButtonAutoFlair/bin/org/json/JSONWriter.class b/TheButtonAutoFlair/bin/org/json/JSONWriter.class index 70d8c6f..e41f8a0 100644 Binary files a/TheButtonAutoFlair/bin/org/json/JSONWriter.class and b/TheButtonAutoFlair/bin/org/json/JSONWriter.class differ diff --git a/TheButtonAutoFlair/bin/org/json/Property.class b/TheButtonAutoFlair/bin/org/json/Property.class index 2202081..ad1f6da 100644 Binary files a/TheButtonAutoFlair/bin/org/json/Property.class and b/TheButtonAutoFlair/bin/org/json/Property.class differ diff --git a/TheButtonAutoFlair/bin/org/json/XML.class b/TheButtonAutoFlair/bin/org/json/XML.class index 2141cde..8fde813 100644 Binary files a/TheButtonAutoFlair/bin/org/json/XML.class and b/TheButtonAutoFlair/bin/org/json/XML.class differ diff --git a/TheButtonAutoFlair/bin/org/json/XMLTokener.class b/TheButtonAutoFlair/bin/org/json/XMLTokener.class index e173cd0..89470fd 100644 Binary files a/TheButtonAutoFlair/bin/org/json/XMLTokener.class and b/TheButtonAutoFlair/bin/org/json/XMLTokener.class differ diff --git a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/Commands.class b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/Commands.class index 4c2d9a7..8c3045d 100644 Binary files a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/Commands.class and b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/Commands.class differ diff --git a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class index 4290712..9508131 100644 Binary files a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class and b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class differ diff --git a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PlayerListener.class b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PlayerListener.class index c335796..6b28fa8 100644 Binary files a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PlayerListener.class and b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PlayerListener.class differ diff --git a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain$1.class b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain$1.class index 9b7351b..a137917 100644 Binary files a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain$1.class and b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain$1.class differ diff --git a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain.class b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain.class index 8b7608b..8227d05 100644 Binary files a/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain.class and b/TheButtonAutoFlair/bin/tk/sznp/thebuttonautoflair/PluginMain.class differ diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java index 7884299..018c2b1 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java @@ -1,5 +1,11 @@ package tk.sznp.thebuttonautoflair; +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; @@ -7,295 +13,260 @@ import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; -import org.apache.commons.io.FileUtils; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - public class Commands implements CommandExecutor { // This method is called, when somebody uses our command - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - if(args.length<1) - return false; - MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. - //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) - if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) - { - player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); - return true; - } - if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) - { //2015.08.10. - player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); - return true; - } - switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. - { - case "accept": - { - if(p.IgnoredFlair) - p.IgnoredFlair=false; //2015.08.08. - if(!p.AcceptedFlair) - { - String flair=p.Flair; //2015.08.08. - //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. - p.AcceptedFlair=true; //2015.08.08. - PluginMain.AppendPlayerDisplayFlair(p, player); - player.sendMessage("§bYour flair has been set:§r "+flair); - } - else - player.sendMessage("§cYou already have this user's flair.§r"); - break; - } - case "ignore": - { - if(p.AcceptedFlair) - p.AcceptedFlair=false; //2015.08.08. - if(!p.IgnoredFlair) - { - p.IgnoredFlair=true; - //String flair=p.Flair; //2015.08.08. - //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. - player.sendMessage("§bYou have ignored this request. You can still use /u accept though.§r"); - } - else - player.sendMessage("§cYou already ignored this request.§r"); - break; - } - /*case "reload": //2015.07.20. + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if (!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch (args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": { + if (p.IgnoredFlair) + p.IgnoredFlair = false; //2015.08.08. + if (!p.AcceptedFlair) { + String flair = p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair = true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§bYour flair has been set:§r " + flair); + } else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": { + if (p.AcceptedFlair) + p.AcceptedFlair = false; //2015.08.08. + if (!p.IgnoredFlair) { + p.IgnoredFlair = true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§bYou have ignored this request. You can still use /u accept though.§r"); + } else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. DoReload(player); break;*/ - case "admin": //2015.08.09. - DoAdmin(player, args); - break; - case "nonpresser": //2015.08.09. - if(!p.AcceptedFlair) - { - player.sendMessage("§cYou need to accept the flair first.§r"); - break; - } - if(p.FlairDecided) - { - player.sendMessage("§cYou have already set the flair type.§r"); - break; - } - SetPlayerFlair(player, p, "§7(--s)§r"); - break; - case "cantpress": //2015.08.09. - if(!p.AcceptedFlair) - { - player.sendMessage("§cYou need to accept the flair first.§r"); - break; - } - if(p.FlairDecided) - { - player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); - break; - } - SetPlayerFlair(player, p, "§r(??s)§r"); - break; - case "opme": //2015.08.10. - player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too - break; - default: - return false; - } - return true; - } + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if (!p.AcceptedFlair) { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if (p.FlairDecided) { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if (!p.AcceptedFlair) { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if (p.FlairDecided) { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } /*if(args[0].toLowerCase()=="reload") DoReload(null); //2015.07.20.*/ - else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. - { - DoAdmin(null, args); //2015.08.09. - return true; //2015.08.09. - } - return false; - } - private static void DoReload(Player player) - { //2015.07.20. - //if(player==null || player.isOp() || player.getName()=="NorbiPeti") - //{ - try - { - PluginMain.Console.sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); - PluginMain.LoadFiles(true); //2015.08.09. - for(Player p : PluginMain.GetPlayers()) - { - MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); - //if(mp.Flair!=null) - if(mp.CommentedOnReddit) - { - PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. - } - String msg="§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. - p.sendMessage(msg); //2015.08.09. - } - PluginMain.Console.sendMessage("§6-- Reloading done!§r"); - } - catch(Exception e) - { - System.out.println("Error!\n"+e); - if(player!=null) - player.sendMessage("§cAn error occured. See console for details.§r"); - PluginMain.LastException=e; //2015.08.09. - } - //} - //else - //player.sendMessage("§cYou need to be OP to use this command.§r"); - } - private static Player ReloadPlayer; //2015.08.09. - private static void DoAdmin(Player player, String[] args) - { //2015.08.09. - if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) - { - //System.out.println("Args length: " + args.length); - if(args.length==1) - { - String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; - SendMessage(player, message); - return; - } - //args[0] is "admin" - switch(args[1].toLowerCase()) - { - case "reload": - ReloadPlayer=player; //2015.08.09. - SendMessage(player, "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); - break; - case "playerinfo": - DoPlayerInfo(player, args); - break; - case "getlasterror": - DoGetLastError(player, args); - break; //<-- 2015.08.10. - case "confirm": - if(ReloadPlayer==player) - DoReload(player); //2015.08.09. - else - SendMessage(player, "§cYou need to do /u admin reload first.§r"); - break; - case "save": - PluginMain.SaveFiles(); //2015.08.09. - SendMessage(player, "§bSaved files. Now you can edit them and reload if you want.§r"); - break; - case "setflair": - DoSetFlair(player, args); - break; - case "updateplugin": //2015.08.10. - DoUpdatePlugin(player); - break; - default: - String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; - SendMessage(player, message); - return; - } - } - else - player.sendMessage("§cYou need to be OP to use this command.§r"); - } - private static void DoPlayerInfo(Player player, String[] args) - { //2015.08.09. - //args[0] is "admin" - args[1] is "playerinfo" - if(args.length==2) - { - String message="§cUsage: /u admin playerinfo §r"; - SendMessage(player, message); - return; - } - if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) - { - String message="§cPlayer not found: "+args[2]+"§r"; - SendMessage(player, message); - return; - } - MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); - SendMessage(player, "Player name: "+p.PlayerName); - SendMessage(player, "User flair: "+p.Flair); - SendMessage(player, "Username: "+p.UserName); - SendMessage(player, "Flair accepted: "+p.AcceptedFlair); - SendMessage(player, "Flair ignored: "+p.IgnoredFlair); - SendMessage(player, "Flair decided: "+p.FlairDecided); - SendMessage(player, "Flair recognised: "+p.FlairRecognised); - SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); - } - private static void SendMessage(Player player, String message) - { //2015.08.09. - if(player==null) - //System.out.println(message); - PluginMain.Console.sendMessage(message); //2015.08.12. - else - player.sendMessage(message); - } - private static void DoGetLastError(Player player, String[] args) - { //2015.08.09. - //args[0] is "admin" - args[1] is "getlasterror" - if(PluginMain.LastException!=null) - { - SendMessage(player, "Last error:"); - SendMessage(player, PluginMain.LastException.toString()); - PluginMain.LastException=null; - } - else - SendMessage(player, "There were no exceptions."); - } - private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) - { //2015.08.09. - flair=flair.replace('&', '§'); - targetplayer.Flair=flair; - targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way - if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) - { - SendMessage(player, "§cError removing previous custom flair!§r"); - return; - } - File file=new File("customflairs.txt"); - try { - BufferedWriter bw; - bw = new BufferedWriter(new FileWriter(file, true)); - bw.write(targetplayer.PlayerName+" "+targetplayer.Flair+"\n"); - bw.close(); - } catch (IOException e) { - System.out.println("Error!\n"+e); - PluginMain.LastException=e; //2015.08.09. - } - SendMessage(player, "§bThe flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + else if (args.length > 0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; } - private static void DoSetFlair(Player player, String[] args) - { - //args[0] is "admin" - args[1] is "setflair" - if(args.length<4) - { - SendMessage(player, "§cUsage: /u admin setflair "); - return; - } - if(args[3].charAt(0)!='&') - { - SendMessage(player, "§cYou need to start the flair with a color code: &6(19s)&r"); - return; - } - SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + + private static void DoReload(Player player) { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try { + PluginMain.Console.sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if (mp.CommentedOnReddit) { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); } - private static void DoUpdatePlugin(Player player) - { //2015.08.10. - SendMessage(player, "Updating Auto-Flair plugin..."); - System.out.println("Forced updating of Auto-Flair plugin."); - URL url; - try { - url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); - FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); - SendMessage(player, "Updating done!"); - } - catch (MalformedURLException e) { - System.out.println("Error!\n"+e); - PluginMain.LastException=e; //2015.08.09. - } - catch (IOException e) { - System.out.println("Error!\n"+e); - PluginMain.LastException=e; //2015.08.09. - } + + private static Player ReloadPlayer; //2015.08.09. + + private static void DoAdmin(Player player, String[] args) { //2015.08.09. + if (player == null || player.isOp() || player.getName().equals("NorbiPeti")) { + //System.out.println("Args length: " + args.length); + if (args.length == 1) { + String message = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; //2015.08.09. + SendMessage(player, "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.Flair); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair accepted: " + p.AcceptedFlair); + SendMessage(player, "Flair ignored: " + p.IgnoredFlair); + SendMessage(player, "Flair decided: " + p.FlairDecided); + SendMessage(player, "Flair recognised: " + p.FlairRecognised); + SendMessage(player, "Commented on Reddit: " + p.CommentedOnReddit); + } + + private static void SendMessage(Player player, String message) { //2015.08.09. + if (player == null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) { //2015.08.09. + flair = flair.replace('&', '§'); + targetplayer.Flair = flair; + targetplayer.CommentedOnReddit = true; //Or at least has a flair in some way + if (!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file = new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName + " " + targetplayer.Flair + "\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; //2015.08.09. + } + SendMessage(player, "§bThe flair has been set. Player: " + targetplayer.PlayerName + " Flair: " + flair + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + //args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + if (args[3].charAt(0) != '&') { + SendMessage(player, "§cYou need to start the flair with a color code: &6(19s)&r"); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + + private static void DoUpdatePlugin(Player player) { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; //2015.08.09. + } } } diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java index 9f10d95..4122cb4 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java @@ -1,78 +1,135 @@ package tk.sznp.thebuttonautoflair; +import de.inventivegames.TellRawAutoMessage.Reflection; +import org.bukkit.Bukkit; import org.bukkit.Sound; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -import de.inventivegames.TellRawAutoMessage.Reflection; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; -public class PlayerListener implements Listener -{ //2015.07.16. - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) - { - Player p=event.getPlayer(); - MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. - MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. - if(mp.CommentedOnReddit) - PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. - else - { //2015.07.20. - String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; - sendRawMessage(p, json); - } - } - - @EventHandler - public void onPlayerLeave(PlayerQuitEvent event) - { - } +public class PlayerListener implements Listener { //2015.07.16. + public static HashMap nicknames = new HashMap<>(); + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if (mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else { //2015.07.20. + String json = "[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } - public static String NotificationSound; //2015.08.14. - public static float NotificationPitch; //2015.08.14. - @EventHandler - public void onPlayerChat(AsyncPlayerChatEvent event) - { - MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); - String flair=player.Flair; //2015.08.08. - if(player.IgnoredFlair) - flair=""; - String message=event.getMessage(); //2015.08.08. - for(Player p : PluginMain.GetPlayers()) - { //2015.08.12. - String color=""; //2015.08.17. - if(message.contains(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, NotificationPitch); //2015.08.14. - MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.17. - color=mp.Flair.substring(0, 2); - } - message = message.replaceAll(p.getName(), color+p.getName()+"§r"); - } - event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. - } - private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); - private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); - public static void sendRawMessage(Player player, String message) - { - try { - Object handle = Reflection.getHandle(player); - Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); - Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); - Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); - Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); - } catch (Exception e) { - e.printStackTrace(); - PluginMain.LastException=e; //2015.08.09. - } - } + /* NICKNAME LOGIC */ + UUID id = p.getUniqueId(); + + File f =new File("plugins/essentials/userdata/"+id+".yml"); + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + nicknames.put(nickname, id); + + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + } + + public static String NotificationSound; //2015.08.14. + public static float NotificationPitch; //2015.08.14. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair = player.Flair; //2015.08.08. + if (player.IgnoredFlair) + flair = ""; + String message = event.getMessage(); //2015.08.08. + for (Player p : PluginMain.GetPlayers()) { //2015.08.12. + String color = ""; //2015.08.17. + if (message.contains(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, NotificationPitch); //2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.17. + color = mp.Flair.substring(0, 2); + } + + + message = message.replaceAll(p.getName(), color + p.getName() + "§r"); + } + for (String n : nicknames.keySet()) + { + String color = ""; //2015.08.17. + Player p = null; + if (message.contains(n)) { + 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, NotificationPitch); //2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.17. + color = mp.Flair.substring(0, 2); + } + if (p != null) + message = message.replaceAll(p.getName(), color + p.getName() + "§r"); + } + + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">")) + flair + "> " + message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + + public static void sendRawMessage(Player player, String message) { + try { + Object handle = Reflection.getHandle(player); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException = e; //2015.08.09. + } + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) + { + String name = e.getLastToken(); + for(String nickname : nicknames.keySet()) + { + if(nickname.startsWith(name)) + e.getTabCompletions().add(nickname); + } + + } } diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java index 9635df7..3b54a72 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java @@ -1,19 +1,7 @@ package tk.sznp.thebuttonautoflair; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; import org.apache.commons.io.IOUtils; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; @@ -21,211 +9,209 @@ import org.bukkit.plugin.java.JavaPlugin; import org.json.JSONArray; import org.json.JSONObject; -import com.palmergames.bukkit.towny.object.Town; -import com.palmergames.bukkit.towny.object.WorldCoord; +import java.io.*; +import java.lang.String; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +public class PluginMain extends JavaPlugin { //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + public static ConsoleCommandSender Console; //2015.08.12. -public class PluginMain extends JavaPlugin -{ //Translated to Java: 2015.07.15. - //A user, which flair isn't obtainable: - //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ - private static PluginMain Instance; - public static ConsoleCommandSender Console; //2015.08.12. // Fired when plugin is first enabled @Override - public void onEnable() - { - System.out.println("The Button Minecraft server plugin by NorbiPeti"); - getServer().getPluginManager().registerEvents(new PlayerListener(), this); - this.getCommand("u").setExecutor(new Commands()); - this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); - Instance=this; //2015.08.08. - Console=this.getServer().getConsoleSender(); //2015.08.12. - LoadFiles(false); //2015.08.09. - Runnable r=new Runnable(){public void run(){ThreadMethod();}}; - Thread t=new Thread(r); - t.start(); - } - Boolean stop=false; - // Fired when plugin is disabled - @Override - public void onDisable() - { - SaveFiles(); //2015.08.09. - stop=true; - } - - public void ThreadMethod() //<-- 2015.07.16. - { - while(!stop) - { - try - { - String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); - JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); - for(Object obj : json) - { - JSONObject item = (JSONObject)obj; - String author=item.getJSONObject("data").getString("author"); - String ign=item.getJSONObject("data").getString("body"); - int start = ign.indexOf("IGN:") + "IGN:".length(); - //System.out.println("Start: "+start); - if(start==-1+"IGN:".length()) //+length: 2015.08.10. - continue; //2015.08.09. - int end = ign.indexOf(' ', start); - if (end == -1 || end == start) - end=ign.indexOf('\n', start); //2015.07.15. - //System.out.println("End: "+end); - if (end == -1 || end == start) - ign = ign.substring(start); - else - ign = ign.substring(start, end); - //System.out.println("IGN: "+ign); - ign = ign.trim(); - //System.out.println("Trimmed IGN: "+ign); - if(HasIGFlair(ign)) - continue; - try { - Thread.sleep(10); - } catch(InterruptedException ex) { - Thread.currentThread().interrupt(); - } - String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); - String flair; - if(flairdata.length > 1) //2015.07.15. - flair = flairdata[1]; - else - flair=""; - if (flair != "-1") - flair = flair + "s"; - /*else - flair = "non-presser";*/ - String flairclass; - if(flairdata.length>2) - flairclass = flairdata[2]; - else - flairclass="unknown"; - SetFlair(ign, flair, flairclass, author); - } - Thread.sleep(10000); - } - catch(Exception e) - { - System.out.println("Error!\n"+e); - LastException=e; //2015.08.09. - } - } - } - - public static Exception LastException; //2015.08.09. - - public String DownloadString(String urlstr) throws MalformedURLException, IOException - { - URL url = new URL(urlstr); - URLConnection con = url.openConnection(); - con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); - InputStream in = con.getInputStream(); - String encoding = con.getContentEncoding(); - encoding = encoding == null ? "UTF-8" : encoding; - String body = IOUtils.toString(in, encoding); - in.close(); - return body; + public void onEnable() { + System.out.println("The Button Minecraft server plugin by NorbiPeti"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance = this; //2015.08.08. + Console = this.getServer().getConsoleSender(); //2015.08.12. + LoadFiles(false); //2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); } - public static Map TownColors=new HashMap(); //2015.07.20. - public Boolean HasIGFlair(String playername) - { - MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. - //return p.Flair!=null; //2015.08.08. - return p.CommentedOnReddit; //2015.08.10. + Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); //2015.08.09. + stop = true; } - - public void SetFlair(String playername, String text, String flairclass, String username) + + public void ThreadMethod() //<-- 2015.07.16. { - MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. - String finalflair; - p.FlairDecided=true; - p.FlairRecognised=true; - switch(flairclass) - { - case "press-1": - finalflair="§c("+text+")§r"; - break; - case "press-2": - finalflair="§6("+text+")§r"; - break; - case "press-3": - finalflair="§e("+text+")§r"; - break; - case "press-4": - finalflair="§a("+text+")§r"; - break; - case "press-5": - finalflair="§9("+text+")§r"; - break; - case "press-6": - finalflair="§5("+text+")§r"; - break; - case "no-press": - finalflair="§7(--s)§r"; - break; - case "cheater": - finalflair="§5("+text+")§r"; - break; - case "cant-press": //2015.08.08. - finalflair="§r(??s)§r"; - break; - case "unknown": - if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair - p.FlairDecided=false; - else - p.FlairRecognised=false; - finalflair=""; - break; - default: - //finalflair=""; - //break; - return; - } + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString("author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if (start == -1 + "IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if (HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair = ""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } catch (Exception e) { + System.out.println("Error!\n" + e); + LastException = e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors = new HashMap(); //2015.07.20. + + public Boolean HasIGFlair(String playername) { + MaybeOfflinePlayer p = MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) { + MaybeOfflinePlayer p = MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided = true; + p.FlairRecognised = true; + switch (flairclass) { + case "press-1": + finalflair = "§c(" + text + ")§r"; + break; + case "press-2": + finalflair = "§6(" + text + ")§r"; + break; + case "press-3": + finalflair = "§e(" + text + ")§r"; + break; + case "press-4": + finalflair = "§a(" + text + ")§r"; + break; + case "press-5": + finalflair = "§9(" + text + ")§r"; + break; + case "press-6": + finalflair = "§5(" + text + ")§r"; + break; + case "no-press": + finalflair = "§7(--s)§r"; + break; + case "cheater": + finalflair = "§5(" + text + ")§r"; + break; + case "cant-press": //2015.08.08. + finalflair = "§r(??s)§r"; + break; + case "unknown": + if (text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided = false; + else + p.FlairRecognised = false; + finalflair = ""; + break; + default: + //finalflair=""; + //break; + return; + } /*if(finalflair.length()==0) //<-- 2015.07.20. return;*/ - p.Flair=finalflair; //2015.08.08. - p.CommentedOnReddit=true; //2015.08.10. - p.UserName=username; //2015.08.08. + p.Flair = finalflair; //2015.08.08. + p.CommentedOnReddit = true; //2015.08.10. + p.UserName = username; //2015.08.08. /*if(finalflair.length()==0) //Just for the message finalflair="undecided";*/ - //System.out.println("Added new flair to "+playername+": "+finalflair); - for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. - { - if(player.getName().equals(playername)) - { - //AppendPlayerDisplayFlair(player, username, finalflair); - AppendPlayerDisplayFlair(p, player); - break; - } - } + //System.out.println("Added new flair to "+playername+": "+finalflair); + for (Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if (player.getName().equals(playername)) { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } } - - public static String GetFlair(Player player) - { //2015.07.16. - String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. - //return flair==null ? "" : flair; - return flair; //2015.08.10. + + public static String GetFlair(Player player) { //2015.07.16. + String flair = MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. } //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. { - - if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) - return; - if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) - { - //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. - if(!player.FlairDecided) - p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. - } - else - p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + + if (MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if (MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if (!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } else + p.sendMessage("§9Are you Reddit user " + player.UserName + "?§r §6Type /u accept or /u ignore§r"); } /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) @@ -273,189 +259,172 @@ public class PluginMain extends JavaPlugin } }* }*/ - - public static String GetColorForTown(String townname) - { //2015.07.20. - if(TownColors.containsKey(townname)) - return TownColors.get(townname); - return ""; + + public static String GetColorForTown(String townname) { //2015.07.20. + if (TownColors.containsKey(townname)) + return TownColors.get(townname); + return ""; } - - public static String GetPlayerTown(Player player) - { //2015.07.20. - try { - Town town = WorldCoord.parseWorldCoord(player).getTownBlock().getTown(); //TODO - return town.getName(); - } catch (Exception e) { - return ""; - } + + public static String GetPlayerTown(Player player) { //2015.07.20. + try { + Town town = WorldCoord.parseWorldCoord(player).getTownBlock().getTown(); //TODO + return town.getName(); + } catch (Exception e) { + return ""; + } } /*public static void RemovePlayerDisplayFlairFinal(Player player, String flair) { //2015.07.20. MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair=null; //2015.08.08. }*/ - - public static Collection GetPlayers() - { - return Instance.getServer().getOnlinePlayers(); + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); } - + public static void LoadFiles(boolean reload) //<-- 2015.08.09. { - if(reload) - { //2015.08.09. - System.out.println("The Button Minecraft plugin cleanup for reloading..."); - MaybeOfflinePlayer.AllPlayers.clear(); - TownColors.clear(); - } - System.out.println("Loading files for The Button Minecraft plugin..."); //2015.08.09. - try { - File file=new File("flairsaccepted.txt"); - if(file.exists()) - { - BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); - String line; - while ((line = br.readLine()) != null) - { - String name=line.replace("\n", ""); - //System.out.println("Name: " + name); - MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. - } - br.close(); - } - file=new File("flairsignored.txt"); - if(file.exists()) - { - BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); - String line; - while ((line = br.readLine()) != null) - { - String name=line.replace("\n", ""); - MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. - } - br.close(); - } - file=new File("autoflairconfig.txt"); - if(file.exists()) - { - BufferedReader br=new BufferedReader(new FileReader(file)); - String line; - while((line=br.readLine())!=null) - { - String[] s=line.split(" "); - if(s.length>=2) //<-- 2015.08.10. - TownColors.put(s[0], s[1]); - } - br.close(); - } - file=new File("customflairs.txt"); //2015.08.09. - if(file.exists()) - { - BufferedReader br=new BufferedReader(new FileReader(file)); - String line; - while((line=br.readLine())!=null) - { - String[] s=line.split(" "); - if(s.length>=2) //2015.08.10. - { - MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); - p.Flair=s[1]; //2015.08.09. - p.CommentedOnReddit=true; //Kind of - } - } - br.close(); - } - file=new File("notificationsound.txt"); //2015.08.09. - if(file.exists()) - { - BufferedReader br=new BufferedReader(new FileReader(file)); - String line=br.readLine(); - String[] split=line.split(" "); - PlayerListener.NotificationSound=split[0]; - PlayerListener.NotificationPitch=Float.parseFloat(split[1]); - br.close(); - } - //throw new IOException("Test"); //2015.08.09. - System.out.println("The Button Minecraft plugin loaded files!"); - } catch (IOException e) { - System.out.println("Error!\n"+e); - LastException=e; //2015.08.09. - } + if (reload) { //2015.08.09. + System.out.println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); //2015.08.09. + try { + File file = new File("flairsaccepted.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) { + String name = line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair = true; //2015.08.08. + } + br.close(); + } + file = new File("flairsignored.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) { + String name = line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair = true; //2015.08.08. + } + br.close(); + } + file = new File("autoflairconfig.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + while ((line = br.readLine()) != null) { + String[] s = line.split(" "); + if (s.length >= 2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file = new File("customflairs.txt"); //2015.08.09. + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + while ((line = br.readLine()) != null) { + String[] s = line.split(" "); + if (s.length >= 2) //2015.08.10. + { + MaybeOfflinePlayer p = MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair = s[1]; //2015.08.09. + p.CommentedOnReddit = true; //Kind of + } + } + br.close(); + } + file = new File("notificationsound.txt"); //2015.08.09. + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line = br.readLine(); + String[] split = line.split(" "); + PlayerListener.NotificationSound = split[0]; + PlayerListener.NotificationPitch = Float.parseFloat(split[1]); + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; //2015.08.09. + } } + public static void SaveFiles() //<-- 2015.08.09. { - try - { - FileWriter fw; - fw = new FileWriter("flairsaccepted.txt"); - fw.close(); - fw = new FileWriter("flairsignored.txt"); - fw.close(); - } - catch(Exception e) - { - System.out.println("Error!\n"+e); - LastException=e; //2015.08.09. - } - try { - File file=new File("flairsaccepted.txt"); - BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); - for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. - { - if(!player.AcceptedFlair) - continue; //2015.08.08. - bw.write(player.PlayerName+"\n"); - } - bw.close(); - file=new File("flairsignored.txt"); - bw = new BufferedWriter(new FileWriter(file, true)); - for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. - { - if(!player.IgnoredFlair) - continue; //2015.08.08. - bw.write(player.PlayerName+"\n"); - } - bw.close(); - } catch (IOException e) { - System.out.println("Error!\n"+e); - LastException=e; //2015.08.09. - } + try { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } catch (Exception e) { + System.out.println("Error!\n" + e); + LastException = e; //2015.08.09. + } + try { + File file = new File("flairsaccepted.txt"); + BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); + for (MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if (!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName + "\n"); + } + bw.close(); + file = new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for (MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if (!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName + "\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; //2015.08.09. + } } - public static boolean RemoveLineFromFile(String file, String line) - { //2015.08.09. - File inputFile = new File(file); - File tempFile = new File("_temp.txt"); - - if(!inputFile.exists()) - return true; //2015.08.10. - - try { - BufferedReader reader = new BufferedReader(new FileReader(inputFile)); - BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); - - String lineToRemove = line; - String currentLine; - - while((currentLine = reader.readLine()) != null) { - // trim newline when comparing with lineToRemove - String trimmedLine = currentLine.trim(); - if(trimmedLine.split(" ")[0].equals(lineToRemove)) continue; //2015.08.17. - writer.write(currentLine + System.getProperty("line.separator")); - } - writer.close(); - reader.close(); - if(!tempFile.renameTo(inputFile)) - { - inputFile.delete(); - return tempFile.renameTo(inputFile); - } - else - return true; - } catch (IOException e) { - System.out.println("Error!\n"+e); - LastException=e; //2015.08.09. - } - return false; + + public static boolean RemoveLineFromFile(String file, String line) { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if (!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while ((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + if (trimmedLine.split(" ")[0].equals(lineToRemove)) continue; //2015.08.17. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if (!tempFile.renameTo(inputFile)) { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } else + return true; + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; //2015.08.09. + } + return false; } }