diff --git a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java
index 2cf247a..02b2ffb 100644
--- a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java
+++ b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java
@@ -100,6 +100,7 @@ public class CommandHandlers implements CommandExecutor {
commands.put("voice", new Voice(plugin));
commands.put("whois", new Whois(plugin));
commands.put("help", new Help(plugin));
+ commands.put("znc", new Znc(plugin));
commands.put("test", new Test(plugin));
diff --git a/src/main/java/com/cnaude/purpleirc/Commands/Znc.java b/src/main/java/com/cnaude/purpleirc/Commands/Znc.java
new file mode 100644
index 0000000..9186f39
--- /dev/null
+++ b/src/main/java/com/cnaude/purpleirc/Commands/Znc.java
@@ -0,0 +1,89 @@
+/*
+ * 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.Commands;
+
+import com.cnaude.purpleirc.PurpleBot;
+import com.cnaude.purpleirc.PurpleIRC;
+import java.util.ArrayList;
+import org.bukkit.ChatColor;
+import org.bukkit.command.CommandSender;
+
+/**
+ *
+ * @author Chris Naude
+ */
+public class Znc implements IRCCommandInterface {
+
+ private final PurpleIRC plugin;
+ private final String usage = "([bot]) [command] ([arguments])";
+ private final String desc = "Send a private message to an IRC user.";
+ private final String name = "znc";
+ private final String fullUsage = ChatColor.WHITE + "Usage: " + ChatColor.GOLD + "/irc " + name + " " + usage;
+
+ /**
+ *
+ * @param plugin the PurpleIRC plugin
+ */
+ public Znc(PurpleIRC plugin) {
+ this.plugin = plugin;
+ }
+
+ /**
+ *
+ * @param sender
+ * @param args
+ */
+ @Override
+ public void dispatch(CommandSender sender, String[] args) {
+ if (args.length >= 2) {
+ plugin.logDebug("Dispatching msg command...");
+ int msgIdx = 1;
+ java.util.List myBots = new ArrayList<>();
+ if (plugin.ircBots.containsKey(args[1])) {
+ myBots.add(plugin.ircBots.get(args[1]));
+ msgIdx = 2;
+ } else {
+ myBots.addAll(plugin.ircBots.values());
+ }
+
+ for (PurpleBot ircBot : myBots) {
+ String msg = "";
+ for (int i = msgIdx; i < args.length; i++) {
+ msg = msg + " " + args[i];
+ }
+ ircBot.znc(sender, msg.substring(1));
+ }
+ } else {
+ sender.sendMessage(fullUsage);
+ }
+ }
+
+ @Override
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public String desc() {
+ return desc;
+ }
+
+ @Override
+ public String usage() {
+ return usage;
+ }
+}
diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java
index 0d17510..ceefbef 100644
--- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java
+++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java
@@ -200,6 +200,7 @@ public final class PurpleBot {
private final List tailerFiles;
private String tailerRecipient;
private boolean tailerCtcp;
+ private CommandSender zncSender;
/**
* Map of player names to IRC nicks.
*/
@@ -273,6 +274,7 @@ public final class PurpleBot {
this.ircPrivateMsgMap = new CaseInsensitiveMap<>();
this.tailers = new ArrayList<>();
this.tailerFiles = new ArrayList<>();
+ this.zncSender = plugin.getServer().getConsoleSender();
config = new YamlConfiguration();
goodBot = loadConfig();
if (goodBot) {
@@ -669,6 +671,24 @@ public final class PurpleBot {
});
}
+ public void znc(final CommandSender sender, final String message) {
+ zncSender = sender;
+ plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
+ @Override
+ public void run() {
+ bot.sendRaw().rawLineNow("znc " + message);
+ }
+ });
+ }
+
+ public void zncResponse(String message) {
+ if (zncSender != null) {
+ zncSender.sendMessage(message);
+ } else {
+ plugin.getServer().getConsoleSender().sendMessage(message);
+ }
+ }
+
public void asyncIdentify(final String password) {
if (!this.isConnected()) {
return;
@@ -906,7 +926,7 @@ public final class PurpleBot {
logIrcToHeroChat.put(channelName, config.getBoolean("channels." + enChannelName + ".log-irc-to-hero-chat", false));
plugin.logDebug(" LogIrcToHeroChat => " + logIrcToHeroChat.get(channelName));
-
+
logIrcToVentureChat.put(channelName, config.getBoolean("channels." + enChannelName + ".log-irc-to-venture-chat", false));
plugin.logDebug(" LogIrcToVentureChat => " + logIrcToVentureChat.get(channelName));
@@ -1222,7 +1242,7 @@ public final class PurpleBot {
} else {
plugin.logDebug("No Factions");
}
- if (plugin.ventureChatEnabled) {
+ if (plugin.ventureChatEnabled) {
plugin.getServer().getPluginManager().callEvent(new VentureChatEvent(event, this));
}
if (isMessageEnabled(channelName, TemplateName.GAME_CHAT)) {
@@ -1243,7 +1263,7 @@ public final class PurpleBot {
/**
* Called from HeroChat listener
- *
+ *
* @param chatter
* @param chatColor
* @param message
@@ -1397,7 +1417,7 @@ public final class PurpleBot {
}
}
- /**
+ /**
* Called from SimpleTicketEvent
*
* @param uuid
@@ -1405,8 +1425,8 @@ public final class PurpleBot {
* @param botNick
* @param messageType
*/
- public void simpleTicketNotify(UUID uuid,
- uk.co.joshuawoolley.simpleticketmanager.ticketsystem.Ticket ticket,
+ public void simpleTicketNotify(UUID uuid,
+ uk.co.joshuawoolley.simpleticketmanager.ticketsystem.Ticket ticket,
String botNick, String messageType) {
if (!this.isConnected()) {
return;
@@ -1419,7 +1439,7 @@ public final class PurpleBot {
}
}
}
-
+
/**
* Called from ReportRTS event
*