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)); } /**