diff --git a/src/main/java/com/cnaude/purpleirc/Events/IRCMessageEvent.java b/src/main/java/com/cnaude/purpleirc/Events/IRCMessageEvent.java
index 3db7156..002172a 100644
--- a/src/main/java/com/cnaude/purpleirc/Events/IRCMessageEvent.java
+++ b/src/main/java/com/cnaude/purpleirc/Events/IRCMessageEvent.java
@@ -16,19 +16,22 @@
*/
package com.cnaude.purpleirc.Events;
+import com.cnaude.purpleirc.PurpleIRC;
+import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
*
- * @author Chris Naude Event listener for plugins that want to catch irc message events
- * from PurpleIRC
+ * @author Chris Naude Event listener for plugins that want to catch irc message
+ * events from PurpleIRC
*/
public class IRCMessageEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList();
private String message;
private final String permission;
+ private final Player player;
/**
*
@@ -38,6 +41,27 @@ public class IRCMessageEvent extends Event {
public IRCMessageEvent(String message, String permission) {
this.message = message;
this.permission = permission;
+ this.player = null;
+ }
+
+ /**
+ *
+ * @param message
+ * @param permission
+ * @param player
+ */
+ public IRCMessageEvent(String message, String permission, Player player) {
+ this.message = message;
+ this.permission = permission;
+ this.player = player;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Player getPlayer() {
+ return this.player;
}
/**
@@ -47,7 +71,7 @@ public class IRCMessageEvent extends Event {
public String getMessage() {
return this.message;
}
-
+
/**
*
* @return
@@ -72,7 +96,7 @@ public class IRCMessageEvent extends Event {
public static HandlerList getHandlerList() {
return HANDLERS;
}
-
+
/**
* Change the IRC message being sent to the game
*
diff --git a/src/main/java/com/cnaude/purpleirc/GameListeners/IRCMessageListener.java b/src/main/java/com/cnaude/purpleirc/GameListeners/IRCMessageListener.java
new file mode 100644
index 0000000..dc91512
--- /dev/null
+++ b/src/main/java/com/cnaude/purpleirc/GameListeners/IRCMessageListener.java
@@ -0,0 +1,74 @@
+/*
+ * 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.GameListeners;
+
+import com.cnaude.purpleirc.Events.IRCMessageEvent;
+import com.cnaude.purpleirc.Message;
+import com.cnaude.purpleirc.PurpleIRC;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+
+/**
+ *
+ * @author Chris Naude
+ */
+public class IRCMessageListener implements Listener {
+
+ private final PurpleIRC plugin;
+
+ /**
+ *
+ * @param plugin the PurpleIRC plugin
+ */
+ public IRCMessageListener(PurpleIRC plugin) {
+ this.plugin = plugin;
+ }
+
+ /**
+ *
+ * @param event
+ */
+ @EventHandler
+ public void onIRCMessageEvent(IRCMessageEvent event) {
+ String permission = event.getPermission();
+ String message = event.getMessage();
+ Player player = event.getPlayer();
+ String fixedMessage = message.replace("\u200B", "");
+
+ if (player != null) {
+ if (player.hasPermission(permission)) {
+ plugin.logDebug("Broadcast player [" + player.getName() + "] [" + permission + "]: " + fixedMessage);
+ player.sendMessage(fixedMessage);
+ }
+ return;
+ }
+
+ if (plugin.broadcastChatToConsole) {
+ plugin.logDebug("Broadcast All [" + permission + "]: " + fixedMessage);
+ plugin.messageQueue.add(new Message(fixedMessage, permission));
+ } else {
+ plugin.logDebug("Broadcast Players [" + permission + "]: " + fixedMessage);
+ for (Player p : plugin.getServer().getOnlinePlayers()) {
+ if (p.hasPermission(permission)) {
+ p.sendMessage(fixedMessage);
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
index ff99a65..da02af1 100644
--- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
+++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java
@@ -20,7 +20,6 @@ import com.cnaude.purpleirc.Events.IRCMessageEvent;
import com.cnaude.purpleirc.GameListeners.AdminChatListener;
import com.cnaude.purpleirc.GameListeners.CleverNotchListener;
import com.cnaude.purpleirc.GameListeners.DeathMessagesListener;
-import com.cnaude.purpleirc.GameListeners.DiscordListener;
import com.cnaude.purpleirc.GameListeners.DynmapListener;
import com.cnaude.purpleirc.GameListeners.EssentialsListener;
import com.cnaude.purpleirc.GameListeners.GamePlayerChatListener;
@@ -33,6 +32,7 @@ import com.cnaude.purpleirc.GameListeners.GamePlayerPlayerAchievementAwardedList
import com.cnaude.purpleirc.GameListeners.GamePlayerQuitListener;
import com.cnaude.purpleirc.GameListeners.GameServerCommandListener;
import com.cnaude.purpleirc.GameListeners.HeroChatListener;
+import com.cnaude.purpleirc.GameListeners.IRCMessageListener;
import com.cnaude.purpleirc.GameListeners.McMMOChatListener;
import com.cnaude.purpleirc.GameListeners.VentureChatListener;
import com.cnaude.purpleirc.GameListeners.NTheEndAgainListener;
@@ -70,7 +70,6 @@ import com.cnaude.purpleirc.Utilities.UpdateChecker;
import com.google.common.base.Joiner;
import com.onarandombox.MultiverseCore.api.MVPlugin;
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
-import com.scarsz.discordsrv.api.DiscordSRVAPI;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
@@ -176,7 +175,7 @@ public class PurpleIRC extends JavaPlugin {
private boolean stripIRCColors;
private boolean stripIRCBackgroundColors;
protected boolean stripGameColorsFromIrc;
- private boolean broadcastChatToConsole;
+ public boolean broadcastChatToConsole;
public boolean customTabList;
public String customTabGamemode;
private boolean listSortByName;
@@ -258,7 +257,6 @@ public class PurpleIRC extends JavaPlugin {
public String smsgAlias = "/m";
public String smsgReplyAlias = "/r";
public CaseInsensitiveMap privateMsgReply;
-
public PurpleIRC() {
this.MAINCONFIG = "MAIN-CONFIG";
@@ -309,6 +307,7 @@ public class PurpleIRC extends JavaPlugin {
logError(ex.getMessage());
}
}
+ getServer().getPluginManager().registerEvents(new IRCMessageListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerPlayerAchievementAwardedListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerGameModeChangeListener(this), this);
getServer().getPluginManager().registerEvents(new GamePlayerChatListener(this), this);
@@ -355,7 +354,7 @@ public class PurpleIRC extends JavaPlugin {
* Called when plugin is told to stop.
*/
@Override
- public void onDisable() {
+ public void onDisable() {
if (discHook != null) {
logDebug("Disabling discHook ...");
discHook.removeListener();
@@ -1004,7 +1003,7 @@ public class PurpleIRC extends JavaPlugin {
m = "Players on " + host + "("
+ players.length
+ "): " + Joiner.on(", ")
- .join(players);
+ .join(players);
}
return m;
} else {
@@ -1755,14 +1754,13 @@ public class PurpleIRC extends JavaPlugin {
} else {
hookList.add(hookFormat(PL_PLACEHOLDERAPI, false));
}
-
+
if (isPluginEnabled(PL_DISCORDSRV)) {
discHook = new DiscordSRVHook(this);
} else {
hookList.add(hookFormat(PL_DISCORDSRV, false));
}
-
-
+
}
public void getPurpleHooks(CommandSender sender, boolean colors) {
@@ -1791,26 +1789,10 @@ public class PurpleIRC extends JavaPlugin {
public void broadcastToGame(final String message, final String permission) {
getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission));
- String fixedMessage = message.replace("\u200B", "");
- if (broadcastChatToConsole) {
- logDebug("Broadcast All [" + permission + "]: " + fixedMessage);
- messageQueue.add(new Message(fixedMessage, permission));
- } else {
- logDebug("Broadcast Players [" + permission + "]: " + fixedMessage);
- for (Player player : getServer().getOnlinePlayers()) {
- if (player.hasPermission(permission)) {
- player.sendMessage(fixedMessage);
- }
- }
- }
}
public void broadcastToPlayer(final Player player, final String message, final String permission) {
- getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission));
- String fixedMessage = message.replace("\u200B", "");
- if (player.hasPermission(permission)) {
- player.sendMessage(fixedMessage);
- }
+ getServer().getPluginManager().callEvent(new IRCMessageEvent(message, permission, player));
}
/**