From 67cfbe2f2b7e16de06df2a3bf9bd09783722e219 Mon Sep 17 00:00:00 2001 From: cnaude Date: Fri, 6 Feb 2015 21:15:53 -0700 Subject: [PATCH] Latest commit. --- dependency-reduced-pom.xml | 6 + pom.xml | 6 + .../cnaude/purpleirc/CommandQueueWatcher.java | 7 +- .../java/com/cnaude/purpleirc/IRCCommand.java | 17 +- .../purpleirc/IRCConsoleCommandSender.java | 155 ++++++++++++++++++ .../java/com/cnaude/purpleirc/PurpleBot.java | 5 +- .../Utilities/IRCMessageHandler.java | 6 +- 7 files changed, 194 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 1264ed7..3ae7b4b 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -137,6 +137,12 @@ 1.8 provided + + com.cnaude.purpleirc + PurpleIRC-API + 1.0-SNAPSHOT + compile + com.google.guava guava diff --git a/pom.xml b/pom.xml index d665e66..23179b4 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,12 @@ jar provided + + + com.cnaude.purpleirc + PurpleIRC-API + 1.0-SNAPSHOT + diff --git a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java index a285330..b22b576 100644 --- a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java @@ -56,9 +56,10 @@ public class CommandQueueWatcher { try { String cmd = ircCommand.getGameCommand().split(" ")[0]; if (plugin.getServer().getVersion().contains("MC: 1.8") && plugin.getServer().getPluginCommand(cmd) == null) { - plugin.logDebug("Dispatching command as ConsoleSender: " + ircCommand.getGameCommand()); - plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), ircCommand.getGameCommand()); - ircCommand.getIRCCommandSender().sendMessage("Command sent: " + ircCommand.getGameCommand()); + plugin.logDebug("Dispatching command as ConsoleSender: " + ircCommand.getGameCommand()); + + plugin.getServer().dispatchCommand(ircCommand.getIRCConsoleCommandSender(), ircCommand.getGameCommand()); + ircCommand.getIRCConsoleCommandSender().sendMessage("Command sent: " + ircCommand.getGameCommand()); } else { plugin.logDebug("Dispatching command as IRCCommandSender: " + ircCommand.getGameCommand()); plugin.getServer().dispatchCommand(ircCommand.getIRCCommandSender(), ircCommand.getGameCommand()); diff --git a/src/main/java/com/cnaude/purpleirc/IRCCommand.java b/src/main/java/com/cnaude/purpleirc/IRCCommand.java index f063093..a8e1cdc 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCCommand.java +++ b/src/main/java/com/cnaude/purpleirc/IRCCommand.java @@ -21,16 +21,19 @@ package com.cnaude.purpleirc; * @author cnaude */ public class IRCCommand { - final private IRCCommandSender sender; - final private String command; + private final IRCCommandSender sender; + private final IRCConsoleCommandSender consoleSender; + private final String command; /** * * @param sender + * @param consoleSender * @param command */ - public IRCCommand(IRCCommandSender sender, String command) { + public IRCCommand(IRCCommandSender sender, IRCConsoleCommandSender consoleSender, String command) { this.sender = sender; + this.consoleSender = consoleSender; this.command = command; } @@ -42,6 +45,14 @@ public class IRCCommand { return sender; } + /** + * + * @return + */ + public IRCConsoleCommandSender getIRCConsoleCommandSender() { + return consoleSender; + } + /** * * @return diff --git a/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java b/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java new file mode 100644 index 0000000..629e0ea --- /dev/null +++ b/src/main/java/com/cnaude/purpleirc/IRCConsoleCommandSender.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2014 cnaude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.cnaude.purpleirc; + +import java.util.Set; +import org.bukkit.Bukkit; +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_8_R1.command.CraftConsoleCommandSender; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachmentInfo; + +/** + * + * @author Chris Naude We have to implement our own CommandSender so that we can + * receive output from the command dispatcher. + */ +public class IRCConsoleCommandSender extends CraftConsoleCommandSender { + + private final PurpleBot ircBot; + private final String target; + private final PurpleIRC plugin; + private final boolean ctcpResponse; + private final String name; + + /** + * + * @param message + */ + @Override + public void sendMessage(String message) { + plugin.logDebug("sendMessage: " + message); + addMessageToQueue(message); + } + + /** + * + * @param messages + */ + @Override + public void sendMessage(String[] messages) { + for (String message : messages) { + plugin.logDebug("sendMessage[]: " + message); + addMessageToQueue(message); + } + } + + private void addMessageToQueue(String message) { + ircBot.messageQueue.add(new IRCMessage(target, + plugin.colorConverter.gameColorsToIrc(message), ctcpResponse)); + } + + /** + * + * @param ircBot + * @param target + * @param plugin + * @param ctcpResponse + * @param name + */ + public IRCConsoleCommandSender(PurpleBot ircBot, String target, PurpleIRC plugin, boolean ctcpResponse, String name) { + super(); + this.target = target; + this.ircBot = ircBot; + this.plugin = plugin; + this.ctcpResponse = ctcpResponse; + this.name = name; + } + + /** + * + * @return + */ + @Override + public Server getServer() { + return Bukkit.getServer(); + } + + /** + * + * @return + */ + @Override + public String getName() { + return name; + } + + /** + * + * @return + */ + @Override + public Set getEffectivePermissions() { + return null; + } + + /** + * + * @param perm + * @return + */ + @Override + public boolean hasPermission(final String perm) { + return true; + } + + /** + * + * @param arg0 + * @return + */ + @Override + public boolean hasPermission(final Permission arg0) { + return true; + } + + /** + * + * @param arg0 + * @return + */ + @Override + public boolean isPermissionSet(final String arg0) { + return true; + } + + /** + * + * @param arg0 + * @return + */ + @Override + public boolean isPermissionSet(final Permission arg0) { + return true; + } + + @Override + public void sendRawMessage(String string) { + plugin.logDebug("sendRawMessage: " + string); + } + +} diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index 6df30c8..b0057a8 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -2949,7 +2949,10 @@ public final class PurpleBot { } String myMessage = ChatColor.translateAlternateColorCodes('&', plugin.colorConverter.gameColorsToIrc(joinNoticeMessage.replace("%NAME%", user.getNick()))); if (joinNoticeMessage.startsWith("/")) { - plugin.commandQueue.add(new IRCCommand(new IRCCommandSender(this, target, plugin, joinNoticeCtcp, "CONSOLE"), myMessage.trim().substring(1))); + plugin.commandQueue.add(new IRCCommand( + new IRCCommandSender(this, target, plugin, joinNoticeCtcp, "CONSOLE"), + new IRCConsoleCommandSender(this, target, plugin, joinNoticeCtcp, "CONSOLE"), + myMessage.trim().substring(1))); } else { if (joinNoticeCtcp) { asyncCTCPMessage(target, myMessage); diff --git a/src/main/java/com/cnaude/purpleirc/Utilities/IRCMessageHandler.java b/src/main/java/com/cnaude/purpleirc/Utilities/IRCMessageHandler.java index 20b60e5..fef1bda 100644 --- a/src/main/java/com/cnaude/purpleirc/Utilities/IRCMessageHandler.java +++ b/src/main/java/com/cnaude/purpleirc/Utilities/IRCMessageHandler.java @@ -18,6 +18,7 @@ package com.cnaude.purpleirc.Utilities; import com.cnaude.purpleirc.IRCCommand; import com.cnaude.purpleirc.IRCCommandSender; +import com.cnaude.purpleirc.IRCConsoleCommandSender; import com.cnaude.purpleirc.PurpleBot; import com.cnaude.purpleirc.PurpleIRC; import com.cnaude.purpleirc.TemplateName; @@ -180,7 +181,10 @@ public class IRCMessageHandler { } plugin.logDebug("GM: \"" + gameCommand.trim() + "\""); try { - plugin.commandQueue.add(new IRCCommand(new IRCCommandSender(ircBot, target, plugin, ctcpResponse, senderName), gameCommand.trim())); + plugin.commandQueue.add(new IRCCommand( + new IRCCommandSender(ircBot, target, plugin, ctcpResponse, senderName), + new IRCConsoleCommandSender(ircBot, target, plugin, ctcpResponse, senderName), + gameCommand.trim())); } catch (Exception ex) { plugin.logError(ex.getMessage()); }