From 19aacbf84747f667a557d5fc7cd75d949adb1ca1 Mon Sep 17 00:00:00 2001 From: cnaude Date: Sat, 20 Jun 2015 15:10:00 -0700 Subject: [PATCH] Add /r for quick replying to private messages. --- .../com/cnaude/purpleirc/CommandHandlers.java | 23 ++++++++++++++++++- .../com/cnaude/purpleirc/Commands/SMsg.java | 3 ++- .../IRCListeners/NoticeListener.java | 1 - .../java/com/cnaude/purpleirc/PurpleBot.java | 1 + .../java/com/cnaude/purpleirc/PurpleIRC.java | 3 +++ src/main/resources/plugin.yml | 5 +++- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java index 0a47ec5..4523b9e 100644 --- a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java +++ b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import net.md_5.bungee.api.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -141,7 +142,27 @@ public class CommandHandlers implements CommandExecutor { return true; } } else if (commandLabel.equalsIgnoreCase("r")) { - + plugin.logDebug("Command: r"); + if (plugin.privateMsgReply.containsKey(sender.getName())) { + plugin.logDebug("Command: r2"); + if (args.length >= 1) { + plugin.logDebug("Command: r3"); + if (!sender.hasPermission("irc.smsg")) { + sender.sendMessage(plugin.noPermission); + return true; + } + plugin.logDebug("Command: r4"); + ArrayList list = new ArrayList<>(); + list.add("smsg"); + list.add(plugin.privateMsgReply.get(sender.getName())); + list.addAll(Arrays.asList(args)); + plugin.logDebug("R: " + list); + commands.get("smsg").dispatch(sender, list.toArray(new String[list.size()])); + return true; + } + } else { + sender.sendMessage(ChatColor.RED + "No messages received."); + } } commands.get("help").dispatch(sender, args); return true; diff --git a/src/main/java/com/cnaude/purpleirc/Commands/SMsg.java b/src/main/java/com/cnaude/purpleirc/Commands/SMsg.java index ef3f6ce..cc83361 100644 --- a/src/main/java/com/cnaude/purpleirc/Commands/SMsg.java +++ b/src/main/java/com/cnaude/purpleirc/Commands/SMsg.java @@ -86,7 +86,8 @@ public class SMsg implements IRCCommandInterface { sender.sendMessage(responseMsg); } plugin.logDebug("Tokenized message: " + targetMsg); - player.sendMessage(targetMsg); + player.sendMessage(targetMsg); + plugin.privateMsgReply.put(player.getName(), sender.getName()); return; } diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/NoticeListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/NoticeListener.java index aeb1702..947f936 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/NoticeListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/NoticeListener.java @@ -20,7 +20,6 @@ import com.cnaude.purpleirc.PurpleBot; import com.cnaude.purpleirc.PurpleIRC; import com.cnaude.purpleirc.Utilities.CaseInsensitiveMap; import java.util.ArrayList; -import java.util.Arrays; import org.apache.commons.codec.binary.Base64; import org.pircbotx.Channel; import org.pircbotx.User; diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index 84bc802..34aee6c 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -2693,6 +2693,7 @@ public final class PurpleBot { String template = plugin.getMsgTemplate(botNick, "", TemplateName.CROSS_CHAT); String m = template.replace("%MESSAGE%", msg).replace("%SERVER%", user.getNick()); player.sendMessage(plugin.colorConverter.ircColorsToGame(m)); + plugin.privateMsgReply.put(pName, from); } else { //no such player online } diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java index 2cbd02e..340f8d6 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java @@ -219,6 +219,7 @@ public class PurpleIRC extends JavaPlugin { public static final String TOWNYTAG = "VG93bnlDaGF0Cg=="; public static final String LINK_CMD = "PurpleIRC-Link:"; public boolean overrideMsgCmd = false; + public CaseInsensitiveMap privateMsgReply; public PurpleIRC() { this.MAINCONFIG = "MAIN-CONFIG"; @@ -237,6 +238,7 @@ public class PurpleIRC extends JavaPlugin { this.cacheFile = new File("plugins/PurpleIRC/displayName.cache"); this.uuidCacheFile = new File("plugins/PurpleIRC/uuid.cache"); this.reconnectSuppression = 0; + this.privateMsgReply = new CaseInsensitiveMap<>(); } /** @@ -288,6 +290,7 @@ public class PurpleIRC extends JavaPlugin { getCommand("irc").setTabCompleter(ircTabCompleter); if (overrideMsgCmd) { getCommand("msg").setExecutor(commandHandlers); + getCommand("r").setExecutor(commandHandlers); } regexGlobber = new RegexGlobber(); tokenizer = new ChatTokenizer(this); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index de192f9..01412e3 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -27,8 +27,11 @@ commands: description: Various irc commands usage: / help - List all irc commands available. msg: - description: Shortcut for /irc smsg + description: Shortcut for /irc smsg. usage: / [player] message + r: + description: Shortut for replying to private messages. + usage: / message permissions: 'irc.reloadconfig': description: Gives player access to the /irc reloadconfig.