diff --git a/TODO b/TODO index 7f6defcea..a5c68005b 100644 --- a/TODO +++ b/TODO @@ -1,20 +1,14 @@ Vminecraft b8 Todo: + ^r for rainbow color code + Finish work on the flat file system - + Antigriefs Working on this, waiting for hMod to fix player health + + Antigriefs Working on this + Allow players to nickname themselves or others - + vminecraft Help - * Specialized help message for vminecraft - ? /vhelp? + Time manipulation Working on this * Have time changes not be instant but move the sky faster to get to the time entered * Loop through specific times of the day and then rewind ex: Sunrise to sunset, mid-morning to noon + Aliasing Commands (Global Aliases and Personal Aliases) - + Recode Messaging - * Reply Feature - * Personal Muting + Different types of /slay * /slay fire to burn them to death * /slay drown to drown them @@ -26,7 +20,7 @@ Vminecraft b8 Todo: We should definitely add suffixes to /modify at least DONE - + Fixed death messages and ezModo + + Fixed death messages and ezModo + Quick recode of /me to use the new getName function + /a to toggle admin chat + Code was organized @@ -43,5 +37,11 @@ DONE * Now we can have color on multiple lines without crashing the client * Also does not cut words in half + + vminecraft Help + * Specialized help message for vminecraft + ? /vhelp? + + Recode Messaging + * Reply Feature + * Personal Muting Notes: Let's try to to finish as much of this list as possible tomorrow and push for a b8 release soon :P diff --git a/vMinecraftChat.java b/vMinecraftChat.java index 6a0efbaef..67a029c99 100644 --- a/vMinecraftChat.java +++ b/vMinecraftChat.java @@ -20,7 +20,15 @@ public class vMinecraftChat { public static void gmsg(Player sender, String msg){ for (Player receiver : etc.getServer().getPlayerList()) { if (receiver != null) { - sendMessage(sender, receiver, msg); + if(vMinecraftUsers.players.findProfile(receiver) == null) + return; + //Check if the person has the sender ignored + if(!vMinecraftUsers.players.findProfile(receiver).isIgnored(sender)) + { + String[] message = applyColors(wordWrap(msg)); + for(String out : message) + receiver.sendMessage(out); + } } } } @@ -32,9 +40,18 @@ public class vMinecraftChat { //Use: Outputs a message to everybody //===================================================================== public static void sendMessage(Player sender, Player receiver, String msg){ - String[] message = applyColors(wordWrap(msg)); - for(String out : message) - receiver.sendMessage(out + " "); + //Check if the receiver has the sender ignored + if(vMinecraftUsers.players.findProfile(receiver) == null) + return; + if(!vMinecraftUsers.players.findProfile(receiver).isIgnored(sender)) + { + String[] message = applyColors(wordWrap(msg)); + for(String out : message) + receiver.sendMessage(out); + //Tell them if they are + } else + sendMessage(sender, sender, Colors.Rose + receiver.getName() + " has you " + + "on their ignore list."); } //===================================================================== diff --git a/vMinecraftCommands.java b/vMinecraftCommands.java index d5994b2aa..d1c128c77 100644 --- a/vMinecraftCommands.java +++ b/vMinecraftCommands.java @@ -37,7 +37,6 @@ public class vMinecraftCommands{ //String(Optional): The help menu description cl.register("/tp", "teleport"); cl.register("/vminecraft", "vminecrafthelp"); - cl.registerAlias("/vhelp", "/vminecraft"); cl.register("/colors", "colors"); cl.register("/masstp", "masstp", "Teleports those with lower permissions to you"); cl.register("/reload", "reload"); @@ -56,6 +55,8 @@ public class vMinecraftCommands{ cl.register("/me", "me"); cl.register("/msg", "message", "Send a message to a player /msg [Player] [Message]"); cl.register("/reply", "reply", "Reply to a player /reply [Message], Alias: /r"); + cl.register("/ignore", "addIgnored", "Adds a user to your ignore list"); + cl.register("/unignore", "removeIgnored", "Removes a user from your ignore list"); //registerAlias //String: The command that this will be called by @@ -68,6 +69,7 @@ public class vMinecraftCommands{ // The %0 will be replaced with wood for this instance // and Player will be given 100 wood. cl.registerAlias("/playerlist", "/who"); + cl.registerAlias("/vhelp", "/vminecraft"); cl.registerAlias("/r", "/reply"); cl.registerAlias("/w", "/msg"); cl.registerAlias("/wrists", "/suicide"); @@ -127,7 +129,22 @@ public class vMinecraftCommands{ //Use: Displays a list of all colors and color codes //===================================================================== public static int colors(Player player, String[] args){ - vMinecraftChat.sendMessage(player, player, Colors.Black + "0" + Colors.Navy + "1" + Colors.Green+ "2" + Colors.Blue + "3" + Colors.Red + "4" + Colors.Purple + "5" + Colors.Gold + "6" + Colors.LightGray + "7" + Colors.Gray + "8" + Colors.DarkPurple + "9" + Colors.LightGreen + "a" + Colors.LightBlue + "b" + Colors.Rose + "c" + Colors.LightPurple + "d" + Colors.White + "f"); + vMinecraftChat.sendMessage(player, player, + Colors.Black + "0" + + Colors.Navy + "1" + + Colors.Green + "2" + + Colors.Blue + "3" + + Colors.Red + "4" + + Colors.Purple + "5" + + Colors.Gold + "6" + + Colors.LightGray + "7" + + Colors.Gray + "8" + + Colors.DarkPurple + "9" + + Colors.LightGreen + "a" + + Colors.LightBlue + "b" + + Colors.Rose + "c" + + Colors.LightPurple + "d" + + Colors.White + "f"); return EXIT_SUCCESS; } @@ -223,9 +240,81 @@ public class vMinecraftCommands{ } return EXIT_SUCCESS; } - + + //===================================================================== + //Function: addIgnored (/ignore) + //Input: Player player: The player using the command + // String[] args: The name of the player to ignore + //Output: int: Exit Code + //Use: Adds a player to the ignore list + //===================================================================== public static int addIgnored(Player player, String[] args) { + //Make sure the player gave you a user to ignore + if(args.length > 0) + { + //Find the player and make sure they exist + Player ignore = etc.getServer().matchPlayer(args[0]); + if(ignore != null) + { + //Don't let the player ignore themselves + if(!ignore.getName().equalsIgnoreCase(player.getName())) + { + //Attempt to ignore the player and report accordingly + if(vMinecraftUsers.players.findProfile(player).addIgnore(ignore)) + vMinecraftChat.sendMessage(player, player, + Colors.Rose + ignore.getName()+ " has been successfuly " + + "ignored."); + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "You are already ignoring " + ignore.getName()); + } else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "You cannot ignore yourself"); + } + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "The person you tried to ignore is not logged in."); + + } + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "Usage: /ignore [Player]"); + return EXIT_SUCCESS; + } + + //===================================================================== + //Function: removeIgnored (/unignore) + //Input: Player player: The player using the command + // String[] args: The name of the player to stop ignoring + //Output: int: Exit Code + //Use: Removes a player from the ignore list + //===================================================================== + public static int removeIgnored(Player player, String[] args) + { + //Make sure the player gave you a user to ignore + if(args.length > 0) + { + //Find the player and make sure they exist + Player ignore = etc.getServer().matchPlayer(args[0]); + if(ignore != null) + { + //Attempt to ignore the player and report accordingly + if(vMinecraftUsers.players.findProfile(player).removeIgnore(ignore)) + vMinecraftChat.sendMessage(player, player, + Colors.Rose + ignore.getName()+ " has been successfuly " + + "unignored."); + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "You are not currently ignoring " + ignore.getName()); + } + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "The person you tried to unignore is not logged in."); + } + else + vMinecraftChat.sendMessage(player, player, + Colors.Rose + "Usage: /unignore [Player]"); return EXIT_SUCCESS; } diff --git a/vMinecraftUsers.java b/vMinecraftUsers.java index 59d7e85a5..459a1cab9 100644 --- a/vMinecraftUsers.java +++ b/vMinecraftUsers.java @@ -149,7 +149,7 @@ class PlayerList nickName, tag, suffix; - private ArrayList ignoreList; + private ArrayList ignoreList; private commandList aliasList; static final int EXIT_FAIL = 0, @@ -170,7 +170,7 @@ class PlayerList nickName = new String(); tag = new String(); suffix = new String(); - ignoreList = new ArrayList(); + ignoreList = new ArrayList(); aliasList = new commandList(); String location = "vminecraftusers.txt"; @@ -188,20 +188,21 @@ class PlayerList if (split.length > 0 && split[0].equalsIgnoreCase(player.getName())) { //Get the tag from the 1st split - nickName = (split[1].split(",").toString()); + if (split.length >= 2) + nickName = split[1]; //Get the tag from the 2nd split - suffix = split[2]; + if (split.length >= 3) + suffix = split[2]; //Get the tag from the 3rd split - if (split.length >= 4) { + if (split.length >= 4) tag = (split[3]); - } //Add all the ignored people to the player's ignore list if (split.length >= 5) { for(String name : split[4].split(",")) - ignoreList.add(etc.getServer().getPlayer(name)); + ignoreList.add(name); } //Get the alias list, from the 5th split @@ -226,6 +227,7 @@ class PlayerList log.log(Level.SEVERE, "Exception while reading " + location + " (Are you sure you formatted it correctly?)", e); } + save(); } //===================================================================== @@ -249,7 +251,11 @@ class PlayerList if (!split[0].equalsIgnoreCase(playerName)) { continue; } - bw.write(playerName + ":" + nickName + ":" + suffix + ":" + tag + ":" + ignoreList + ":" + aliasList); + String output =playerName + ":" + nickName + ":" + suffix + ":" + tag + ":"; + for(String player : ignoreList) + output += player + ","; + output += ":"; + bw.write(output); } scanner.close(); } catch (Exception e) { @@ -275,30 +281,44 @@ class PlayerList //Output: boolean: If they're ignored //Use: Finds if the specified player is in the ignore list //===================================================================== - public boolean isIgnored(Player player){return ignoreList.contains(player);} + public boolean isIgnored(Player player){ + log.log(Level.INFO, String.valueOf(ignoreList.contains(player.getName()))); + for(String pl : ignoreList) + log.log(Level.INFO, pl); + return ignoreList.contains(player.getName());} //===================================================================== //Function: addIgnore //Input: Player name: The player to ignore - //Output: None + //Output: boolean: If the player was successfully ignored //Use: Ignores a player. //===================================================================== - public void addIgnore(Player name) + public boolean addIgnore(Player name) { if(!ignoreList.contains(name)) - ignoreList.add(name); + { + ignoreList.add(name.getName()); + save(); + return true; + } + return false; } //===================================================================== //Function: removeIgnore - //Input: Player name: The player to ignore - //Output: None - //Use: Ignores a player. + //Input: Player name: The player to unignore + //Output: boolean: If the player was successfully unignored + //Use: Stops ignoring a player. //===================================================================== - public void removeIgnore(Player name) + public boolean removeIgnore(Player name) { - if(ignoreList.contains(name)) - ignoreList.remove(name); + if(ignoreList.contains(name.getName())) + { + ignoreList.remove(name.getName()); + save(); + return true; + } + return false; } //===================================================================== @@ -311,6 +331,7 @@ class PlayerList public void addAlias(String name, String callCommand) { aliasList.registerAlias(name, callCommand); + save(); } //=====================================================================