diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 8657162..3538991 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -294,6 +294,12 @@
1.7-SNAPSHOT
compile
+
+ com.cnaude.commandbook
+ CommandBook
+ 2.5-SNAPSHOT
+ compile
+
com.cnaude.dynmap
DynmapAPI
diff --git a/pom.xml b/pom.xml
index e146052..f058adb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -275,6 +275,13 @@
1.7-SNAPSHOT
+
+
+ com.cnaude.commandbook
+ CommandBook
+ 2.5-SNAPSHOT
+
+
com.cnaude.dynmap
diff --git a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java
index aa52e86..5ccd87f 100644
--- a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java
+++ b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java
@@ -56,7 +56,14 @@ public class CommandQueueWatcher {
if (ircCommand != null) {
try {
String cmd = ircCommand.getGameCommand().split(" ")[0];
- if (plugin.getServer().getVersion().contains("MC: 1.8") && plugin.getServer().getPluginCommand(cmd) == null) {
+ boolean isCommandBookCommand = false;
+ plugin.logDebug("CMD: " + cmd);
+ if (plugin.commandBookHook != null) {
+ isCommandBookCommand = plugin.commandBookHook.isCommandBookCommand(cmd);
+ plugin.logDebug("Is this is a CommandBook command? " + Boolean.toString(isCommandBookCommand));
+ }
+ if (plugin.getServer().getVersion().contains("MC: 1.8") && plugin.getServer().getPluginCommand(cmd) == null
+ && !isCommandBookCommand) {
plugin.logDebug("Dispatching command as ConsoleSender: " + ircCommand.getGameCommand());
plugin.getServer().dispatchCommand(ircCommand.getIRCConsoleCommandSender(), ircCommand.getGameCommand());
diff --git a/src/main/java/com/cnaude/purpleirc/Hooks/CommandBookHook.java b/src/main/java/com/cnaude/purpleirc/Hooks/CommandBookHook.java
new file mode 100644
index 0000000..8467f84
--- /dev/null
+++ b/src/main/java/com/cnaude/purpleirc/Hooks/CommandBookHook.java
@@ -0,0 +1,53 @@
+/*
+ * 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.Hooks;
+
+import com.cnaude.purpleirc.PurpleIRC;
+import com.sk89q.commandbook.CommandBook;
+import com.zachsthings.libcomponents.bukkit.BukkitComponent;
+
+
+/**
+ *
+ * @author cnaude
+ */
+public class CommandBookHook {
+
+ private final PurpleIRC plugin;
+ private final CommandBook commandBook;
+
+ /**
+ *
+ * @param plugin
+ */
+ public CommandBookHook(PurpleIRC plugin) {
+ this.plugin = plugin;
+ this.commandBook = (CommandBook) plugin.getServer().getPluginManager().getPlugin("CommandBook");
+ }
+
+ public boolean isCommandBookCommand(String command) {
+ for (BukkitComponent bc: commandBook.getComponentManager().getComponents()) {
+ for (String s : bc.getCommands().keySet()) {
+ if (s.equals(command)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
index 2318e9b..88f4704 100644
--- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
+++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
@@ -40,6 +40,7 @@ import com.cnaude.purpleirc.GameListeners.TitanChatListener;
import com.cnaude.purpleirc.GameListeners.TownyChatListener;
import com.cnaude.purpleirc.GameListeners.VanishNoPacketListener;
import com.cnaude.purpleirc.Hooks.AdminPrivateChatHook;
+import com.cnaude.purpleirc.Hooks.CommandBookHook;
import com.cnaude.purpleirc.Hooks.DynmapHook;
import com.cnaude.purpleirc.Hooks.FactionChatHook;
import com.cnaude.purpleirc.Hooks.JobsHook;
@@ -173,6 +174,7 @@ public class PurpleIRC extends JavaPlugin {
public AdminPrivateChatHook adminPrivateChatHook;
public ShortifyHook shortifyHook;
public ReportRTSHook reportRTSHook;
+ public CommandBookHook commandBookHook;
public NetPackets netPackets;
public CommandHandlers commandHandlers;
public PurpleTabCompleter ircTabCompleter;
@@ -321,6 +323,12 @@ public class PurpleIRC extends JavaPlugin {
} else {
logInfo("AdminPrivateChat not detected.");
}
+ if (isPluginEnabled("CommandBook")) {
+ logInfo("Enabling CommandBook support.");
+ commandBookHook = new CommandBookHook(this);
+ } else {
+ logInfo("CommandBook not detected.");
+ }
if (isPluginEnabled("Jobs")) {
String m = getServer().getPluginManager().getPlugin("Jobs").getDescription().getMain();
String jobsVersion = getServer().getPluginManager().getPlugin("Jobs").getDescription().getVersion();