diff --git a/src/main/java/com/cnaude/purpleirc/BotWatcher.java b/src/main/java/com/cnaude/purpleirc/BotWatcher.java index f1b612f..d44bfe9 100644 --- a/src/main/java/com/cnaude/purpleirc/BotWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/BotWatcher.java @@ -22,13 +22,13 @@ import org.bukkit.scheduler.BukkitTask; * This thread checks each bot for connectivity and reconnects when appropriate. * * @author Chris Naude - * + * */ public class BotWatcher { - + private final PurpleIRC plugin; private final BukkitTask bt; - + /** * * @param plugin @@ -55,7 +55,7 @@ public class BotWatcher { } }, plugin.ircConnCheckInterval, plugin.ircConnCheckInterval); } - + /** * */ @@ -63,4 +63,4 @@ public class BotWatcher { bt.cancel(); } -} +} \ No newline at end of file diff --git a/src/main/java/com/cnaude/purpleirc/GameListeners/TownyChatListener.java b/src/main/java/com/cnaude/purpleirc/GameListeners/TownyChatListener.java index 8c1135d..1f8fa98 100644 --- a/src/main/java/com/cnaude/purpleirc/GameListeners/TownyChatListener.java +++ b/src/main/java/com/cnaude/purpleirc/GameListeners/TownyChatListener.java @@ -49,7 +49,7 @@ public class TownyChatListener implements Listener { Player player = event.getPlayer(); if (player.hasPermission("irc.message.gamechat")) { for (PurpleBot ircBot : plugin.ircBots.values()) { - ircBot.townyChat(player, townyChannel, event.getMessage()); + plugin.tcHook.sendToIrc(ircBot, player, townyChannel, event.getMessage()); } } event.getAsyncPlayerChatEvent().setMessage("[[townytag]]" + event.getMessage()); diff --git a/src/main/java/com/cnaude/purpleirc/Hooks/TownyChatHook.java b/src/main/java/com/cnaude/purpleirc/Hooks/TownyChatHook.java index f3293bc..09af227 100644 --- a/src/main/java/com/cnaude/purpleirc/Hooks/TownyChatHook.java +++ b/src/main/java/com/cnaude/purpleirc/Hooks/TownyChatHook.java @@ -16,8 +16,11 @@ */ package com.cnaude.purpleirc.Hooks; +import com.cnaude.purpleirc.PurpleBot; import com.cnaude.purpleirc.PurpleIRC; +import com.cnaude.purpleirc.TemplateName; import com.palmergames.bukkit.TownyChat.Chat; +import com.palmergames.bukkit.TownyChat.channels.Channel; import com.palmergames.bukkit.TownyChat.channels.channelTypes; import com.palmergames.bukkit.towny.exceptions.NotRegisteredException; import com.palmergames.bukkit.towny.object.Resident; @@ -118,4 +121,26 @@ public class TownyChatHook { } } } + + public void sendToIrc(PurpleBot ircBot, Player player, Channel townyChannel, String message) { + if (!ircBot.isConnected()) { + return; + } + if (plugin.tcHook != null) { + for (String channelName : ircBot.botChannels) { + if (!ircBot.isPlayerInValidWorld(player, channelName)) { + continue; + } + if (ircBot.isMessageEnabled(channelName, "towny-" + townyChannel.getName() + "-chat") + || ircBot.isMessageEnabled(channelName, "towny-" + townyChannel.getChannelTag() + "-chat") + || ircBot.isMessageEnabled(channelName, TemplateName.TOWNY_CHAT) + || ircBot.isMessageEnabled(channelName, TemplateName.TOWNY_CHANNEL_CHAT)) { + ircBot.asyncIRCMessage(channelName, plugin.tokenizer + .chatTownyChannelTokenizer(player, townyChannel, message, + plugin.getMsgTemplate(ircBot.botNick, TemplateName.TOWNY_CHANNEL_CHAT))); + } + } + } + } + } diff --git a/src/main/java/com/cnaude/purpleirc/IRCMessageHandler.java b/src/main/java/com/cnaude/purpleirc/IRCMessageHandler.java index a443cf8..4a7e6b0 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCMessageHandler.java +++ b/src/main/java/com/cnaude/purpleirc/IRCMessageHandler.java @@ -217,7 +217,7 @@ public class IRCMessageHandler { .replace("%CMDPREFIX%", ircBot.commandPrefix); if (!invalidIrcCommand.isEmpty()) { if (ircBot.invalidCommandCTCP.get(myChannel)) { - ircBot.blockingCTCPMessage(target, invalidIrcCommand); + ircBot.asyncCTCPCommand(target, invalidIrcCommand); } else { ircBot.asyncIRCMessage(target, invalidIrcCommand); } diff --git a/src/main/java/com/cnaude/purpleirc/IRCMessageQueueWatcher.java b/src/main/java/com/cnaude/purpleirc/IRCMessageQueueWatcher.java index 199af37..e6976a3 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCMessageQueueWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/IRCMessageQueueWatcher.java @@ -59,13 +59,32 @@ public class IRCMessageQueueWatcher { if (ircMessage != null) { plugin.logDebug("[" + queue.size() + "]: queueAndSend message detected"); if (ircMessage.ctcpResponse) { - ircBot.blockingCTCPMessage(ircMessage.target, ircMessage.message); + blockingCTCPMessage(ircMessage.target, ircMessage.message); } else { - ircBot.blockingIRCMessage(ircMessage.target, ircMessage.message); + blockingIRCMessage(ircMessage.target, ircMessage.message); } } } + private void blockingIRCMessage(final String target, final String message) { + if (!ircBot.isConnected()) { + return; + } + plugin.logDebug("[blockingIRCMessage] About to send IRC message to " + target + ": " + message); + ircBot.bot.sendIRC().message(target, message); + //ircBot.bot.sendRaw().rawLineNow("PRIVMSG " + target + " :" + message); + plugin.logDebug("[blockingIRCMessage] Message sent to " + target + ": " + message); + } + + private void blockingCTCPMessage(final String target, final String message) { + if (!ircBot.isConnected()) { + return; + } + plugin.logDebug("[blockingCTCPMessage] About to send IRC message to " + target + ": " + message); + ircBot.bot.sendIRC().ctcpResponse(target, message); + plugin.logDebug("[blockingCTCPMessage] Message sent to " + target + ": " + message); + } + public void cancel() { timer.cancel(); } diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index e0087e4..1e6332c 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -79,7 +79,7 @@ import org.pircbotx.hooks.ListenerAdapter; */ public final class PurpleBot { - private PircBotX bot; + protected PircBotX bot; protected boolean goodBot; public final PurpleIRC plugin; @@ -118,6 +118,7 @@ public final class PurpleBot { public ArrayList botChannels; public CaseInsensitiveMap> channelNicks; public CaseInsensitiveMap> tabIgnoreNicks; + public CaseInsensitiveMap tabIgnoreDuplicates; public CaseInsensitiveMap> filters; public CaseInsensitiveMap channelPassword; public CaseInsensitiveMap channelTopic; @@ -173,6 +174,7 @@ public final class PurpleBot { private int reconnectCount; private final ReadWriteLock rwl; private final Lock wl; + public String sslInfo = ""; /** * @@ -182,7 +184,7 @@ public final class PurpleBot { public PurpleBot(File file, PurpleIRC plugin) { this.rwl = new ReentrantReadWriteLock(); this.wl = rwl.writeLock(); - fileName = file.getName(); + this.fileName = file.getName(); this.altNicks = new ArrayList<>(); this.connected = false; this.botChannels = new ArrayList<>(); @@ -216,6 +218,7 @@ public final class PurpleBot { this.channelTopic = new CaseInsensitiveMap<>(); this.channelPassword = new CaseInsensitiveMap<>(); this.tabIgnoreNicks = new CaseInsensitiveMap<>(); + this.tabIgnoreDuplicates = new CaseInsensitiveMap<>(); this.filters = new CaseInsensitiveMap<>(); this.channelNicks = new CaseInsensitiveMap<>(); this.channelTopicChanserv = new CaseInsensitiveMap<>(); @@ -485,32 +488,6 @@ public final class PurpleBot { messageQueue.add(new IRCMessage(target, plugin.colorConverter.gameColorsToIrc(message), true)); } - public void blockingIRCMessage(final String target, final String message) { - if (!this.isConnected()) { - return; - } - plugin.logDebug("[blockingIRCMessage] About to send IRC message to " + target); - try { - bot.sendIRC().message(target, plugin.colorConverter.gameColorsToIrc(message)); - } catch (Exception ex) { - plugin.logError("Problem sending IRC message: " + ex.getMessage()); - } - plugin.logDebug("[blockingIRCMessage] Message sent to " + target); - } - - public void blockingCTCPMessage(final String target, final String message) { - if (!this.isConnected()) { - return; - } - plugin.logDebug("[blockingCTCPMessage] About to send IRC message to " + target); - try { - bot.sendIRC().ctcpResponse(target, plugin.colorConverter.gameColorsToIrc(message)); - } catch (Exception ex) { - plugin.logError("Problem sending IRC CTCP message: " + ex.getMessage()); - } - plugin.logDebug("[blockingCTCPMessage] Message sent to " + target); - } - public void asyncCTCPCommand(final String target, final String command) { if (!this.isConnected()) { return; @@ -832,6 +809,9 @@ public final class PurpleBot { channelPrefix.put(channelName, config.getString("channels." + enChannelName + ".prefix", "")); plugin.logDebug(" ChannelPrefix => " + channelPrefix.get(channelName)); + tabIgnoreDuplicates.put(channelName, config.getBoolean("channels." + enChannelName + ".custom-tab-ignore-duplicates", false)); + plugin.logDebug(" TabIgnoreDuplicates => " + tabIgnoreDuplicates.get(channelName)); + // build channel op list Collection cOps = new ArrayList<>(); for (String channelOper : config.getStringList("channels." + enChannelName + ".ops")) { @@ -907,7 +887,7 @@ public final class PurpleBot { } tabIgnoreNicks.put(channelName, t); if (tabIgnoreNicks.isEmpty()) { - plugin.logInfo("World list is empty!"); + plugin.logInfo("Tab ignore list is empty!"); } // build valid world list @@ -1000,17 +980,18 @@ public final class PurpleBot { + "Reload for the change to take effect."); } - private boolean isPlayerInValidWorld(Player player, String channelName) { + public boolean isPlayerInValidWorld(Player player, String channelName) { + boolean validWorld = false; + String worldName = player.getWorld().getName(); if (worldList.containsKey(channelName)) { - if (worldList.get(channelName).contains("*")) { - return true; + if (worldList.get(channelName).contains("*") + || worldList.get(channelName).contains(worldName)) { + validWorld = true; } - if (worldList.get(channelName).contains(player.getWorld().getName())) { - return true; } + plugin.logDebug("[isPlayerInValidWorld] [p: " + player.getName() + "] [w: " + worldName + "] [b: " + validWorld + "]"); + return validWorld; } - return false; - } /** * Called from normal game chat listener @@ -1027,9 +1008,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } + if (isPlayerInValidWorld(player, channelName)) { if (plugin.fcHook != null) { String playerChatMode; String playerFactionName; @@ -1063,16 +1042,12 @@ public final class PurpleBot { plugin.logDebug("No Factions"); } if (isMessageEnabled(channelName, TemplateName.GAME_CHAT)) { - plugin.logDebug("[" + TemplateName.GAME_CHAT + "] => " - + channelName + " => " + message); asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate(botNick, TemplateName.GAME_CHAT), message)); - } else { - plugin.logDebug("Ignoring message due to " - + TemplateName.GAME_CHAT + " not being listed."); } } } + } private void sendFloodWarning(Player player) { String message = plugin.getMsgTemplate( @@ -1100,9 +1075,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } + if (isPlayerInValidWorld(player, channelName)) { String hChannel = chatter.getActiveChannel().getName(); String hNick = chatter.getActiveChannel().getNick(); String hColor = chatColor.toString(); @@ -1118,6 +1091,7 @@ public final class PurpleBot { } } } + } public void mcMMOAdminChat(Player player, String message) { if (!this.isConnected()) { @@ -1128,9 +1102,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } + if (isPlayerInValidWorld(player, channelName)) { if (isMessageEnabled(channelName, TemplateName.MCMMO_ADMIN_CHAT)) { plugin.logDebug("Sending message because " + TemplateName.MCMMO_ADMIN_CHAT + " is enabled."); asyncIRCMessage(channelName, plugin.tokenizer @@ -1142,6 +1114,7 @@ public final class PurpleBot { } } } + } public void mcMMOPartyChat(Player player, String partyName, String message) { if (!this.isConnected()) { @@ -1152,9 +1125,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } + if (isPlayerInValidWorld(player, channelName)) { if (isMessageEnabled(channelName, TemplateName.MCMMO_PARTY_CHAT)) { plugin.logDebug("Sending message because " + TemplateName.MCMMO_PARTY_CHAT + " is enabled."); asyncIRCMessage(channelName, plugin.tokenizer @@ -1166,6 +1137,7 @@ public final class PurpleBot { } } } + } public void mcMMOChat(Player player, String message) { if (!this.isConnected()) { @@ -1176,9 +1148,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } + if (isPlayerInValidWorld(player, channelName)) { if (isMessageEnabled(channelName, TemplateName.MCMMO_CHAT)) { plugin.logDebug("Sending message because " + TemplateName.MCMMO_CHAT + " is enabled."); asyncIRCMessage(channelName, plugin.tokenizer @@ -1190,35 +1160,7 @@ public final class PurpleBot { } } } - - public void townyChat(Player player, com.palmergames.bukkit.TownyChat.channels.Channel townyChannel, String message) { - if (!this.isConnected()) { - return; } - if (floodChecker.isSpam(player)) { - sendFloodWarning(player); - return; - } - if (plugin.tcHook != null) { - for (String channelName : botChannels) { - if (!isPlayerInValidWorld(player, channelName)) { - continue; - } - plugin.logDebug("townyChat: Checking for towny-" - + townyChannel.getName() + "-chat" - + " or " + "towny-" + townyChannel.getChannelTag() + "-chat" - + " or towny-chat"); - if (isMessageEnabled(channelName, "towny-" + townyChannel.getName() + "-chat") - || isMessageEnabled(channelName, "towny-" + townyChannel.getChannelTag() + "-chat") - || isMessageEnabled(channelName, "towny-chat") - || isMessageEnabled(channelName, "towny-channel-chat")) { - asyncIRCMessage(channelName, plugin.tokenizer - .chatTownyChannelTokenizer(player, townyChannel, message, - plugin.getMsgTemplate(botNick, "towny-channel-chat"))); - } - } - } - } public void heroAction(Chatter chatter, ChatColor chatColor, String message) { if (!this.isConnected()) { @@ -1476,7 +1418,9 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { + plugin.logDebug("dynmapWebChat: " + channelName); if (isMessageEnabled(channelName, TemplateName.DYNMAP_WEB_CHAT)) { + plugin.logDebug("dynmapWebChat: sending message"); asyncIRCMessage(channelName, plugin.tokenizer .dynmapWebChatToIRCTokenizer(source, name, plugin.getMsgTemplate( botNick, TemplateName.DYNMAP_WEB_CHAT), @@ -1512,12 +1456,8 @@ public final class PurpleBot { } for (String channelName : botChannels) { if (isMessageEnabled(channelName, TemplateName.REDDIT_MESSAGES)) { - plugin.logDebug("Checking if " + TemplateName.REDDIT_MESSAGES + " is enabled... YES"); asyncIRCMessage(channelName, plugin.tokenizer.gameChatToIRCTokenizer(plugin.getMsgTemplate(botNick, TemplateName.REDDIT_MESSAGES), message)); - } else { - plugin.logDebug("Checking if " + TemplateName.REDDIT_MESSAGES + " is enabled... NOPE"); } - } } @@ -1531,23 +1471,16 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_JOIN)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } if (hideJoinWhenVanished.get(channelName)) { - plugin.logDebug("Checking if player " + player.getName() + " is vanished."); if (plugin.vanishHook.isVanished(player)) { - plugin.logDebug("Not sending join message to IRC for player " - + player.getName() + " due to being vanished."); continue; } } + if (isMessageEnabled(channelName, TemplateName.GAME_JOIN) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_JOIN), message)); - } else { - plugin.logDebug("Not sending join message due to " + TemplateName.GAME_JOIN + " being disabled"); } } } @@ -1562,19 +1495,13 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_QUIT)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } if (hideQuitWhenVanished.get(channelName)) { - plugin.logDebug("Checking if player " + player.getName() - + " is vanished."); if (plugin.vanishHook.isVanished(player)) { - plugin.logDebug("Not sending quit message to IRC for player " - + player.getName() + " due to being vanished."); continue; } } + if (isMessageEnabled(channelName, TemplateName.GAME_QUIT) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_QUIT), message)); @@ -1592,15 +1519,11 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.FAKE_JOIN)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.FAKE_JOIN) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.FAKE_JOIN), message)); - } else { - plugin.logDebug("Not sending join message due to " + TemplateName.FAKE_JOIN + " being disabled"); } } } @@ -1615,10 +1538,8 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.FAKE_QUIT)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.FAKE_QUIT) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.FAKE_QUIT), message)); @@ -1637,10 +1558,8 @@ public final class PurpleBot { } String message = achievement.toString(); for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_ACHIEVEMENT)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.GAME_ACHIEVEMENT) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_ACHIEVEMENT), message)); @@ -1659,10 +1578,8 @@ public final class PurpleBot { } String message = gameMode.toString(); for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_MODE)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.GAME_MODE) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_MODE), message)); @@ -1681,10 +1598,8 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_KICK)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.GAME_KICK) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameKickTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_KICK), message, reason)); @@ -1706,10 +1621,8 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_ACTION)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.GAME_ACTION) + && isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, TemplateName.GAME_ACTION), message)); @@ -1729,15 +1642,14 @@ public final class PurpleBot { } for (String channelName : botChannels) { if (isMessageEnabled(channelName, templateName)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isPlayerInValidWorld(player, channelName)) { asyncIRCMessage(channelName, plugin.tokenizer .gameChatToIRCTokenizer(player, plugin.getMsgTemplate( botNick, templateName), message)); } } } + } /** * @@ -1881,7 +1793,6 @@ public final class PurpleBot { + ChatColor.RESET + " is not in the voices list."); } saveConfig("channels." + encodeChannel(getConfigChannelName(channelName)) + ".voices", voicesList.get(channelName)); - } /** @@ -2439,9 +2350,7 @@ public final class PurpleBot { Send messages to TownyChat if enabled */ if (plugin.tcHook != null) { - plugin.logDebug("Checking if " + TemplateName.IRC_TOWNY_CHAT + " is enabled ..."); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_TOWNY_CHAT)) { - plugin.logDebug("Yes, " + TemplateName.IRC_TOWNY_CHAT + " is enabled..."); + if (isMessageEnabled(myChannel, TemplateName.IRC_TOWNY_CHAT)) { if (townyChannel.containsKey(myChannel)) { String tChannel = townyChannel.get(myChannel); if (!tChannel.isEmpty()) { @@ -2453,17 +2362,13 @@ public final class PurpleBot { messageSent = true; } } - } else { - plugin.logDebug("Nope, " + TemplateName.IRC_TOWNY_CHAT + " is NOT enabled..."); } } /* Send messages to players if enabled */ - plugin.logDebug("Checking if " + TemplateName.IRC_CHAT + " is enabled before broadcasting chat from IRC"); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_CHAT) || override) { - plugin.logDebug("Yup we can broadcast due to " + TemplateName.IRC_CHAT + " enabled"); + if (isMessageEnabled(myChannel, TemplateName.IRC_CHAT) || override) { String newMessage = filterMessage( plugin.tokenizer.ircChatToGameTokenizer(this, user, channel, plugin.getMsgTemplate( botNick, TemplateName.IRC_CHAT), message), myChannel); @@ -2471,14 +2376,12 @@ public final class PurpleBot { plugin.broadcastToGame(newMessage, "irc.message.chat"); messageSent = true; } - } else { - plugin.logDebug("NOPE we can't broadcast due to " + TemplateName.IRC_CHAT + " disabled"); } /* Send messages to console if enabled */ - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_CONSOLE_CHAT)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_CONSOLE_CHAT)) { String tmpl = plugin.getMsgTemplate(botNick, TemplateName.IRC_CONSOLE_CHAT); plugin.logDebug("broadcastChat [Console]: " + tmpl); plugin.getServer().getConsoleSender().sendMessage(plugin.tokenizer.ircChatToGameTokenizer( @@ -2489,8 +2392,7 @@ public final class PurpleBot { /* Send messages to Herochat if enabled */ - plugin.logDebug("Checking if " + TemplateName.IRC_HERO_CHAT + " is enabled before broadcasting chat from IRC to HeroChat"); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_HERO_CHAT)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_HERO_CHAT)) { String hChannel = heroChannel.get(myChannel); String tmpl = plugin.getIRCHeroChatChannelTemplate(botNick, hChannel); plugin.logDebug("broadcastChat [HC]: " + hChannel + ": " + tmpl); @@ -2505,17 +2407,13 @@ public final class PurpleBot { } } } - } else { - plugin.logDebug("NOPE we can't broadcast to HeroChat due to " + TemplateName.IRC_HERO_CHAT + " disabled"); } /* Send messages to Essentials if enabled */ if (plugin.isPluginEnabled("Essentials")) { - plugin.logDebug("Checking if " + TemplateName.IRC_ESS_HELPOP + " is enabled before broadcasting chat from IRC"); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_ESS_HELPOP) || override) { - plugin.logDebug("Yup we can broadcast due to " + TemplateName.IRC_ESS_HELPOP + " enabled"); + if (isMessageEnabled(myChannel, TemplateName.IRC_ESS_HELPOP) || override) { String newMessage = filterMessage( plugin.tokenizer.ircChatToGameTokenizer(this, user, channel, plugin.getMsgTemplate( botNick, TemplateName.IRC_ESS_HELPOP), message), myChannel); @@ -2523,9 +2421,6 @@ public final class PurpleBot { plugin.broadcastToGame(newMessage, "essentials.helpop.receive"); messageSent = true; } - } else { - plugin.logDebug("NOPE we can't broadcast due to " + TemplateName.IRC_ESS_HELPOP - + " disabled"); } } @@ -2533,9 +2428,7 @@ public final class PurpleBot { Send messages to AdminPrivateChat if enabled */ if (plugin.adminPrivateChatHook != null) { - plugin.logDebug("Checking if " + TemplateName.IRC_A_CHAT + " is enabled before broadcasting chat from IRC"); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_A_CHAT) || override) { - plugin.logDebug("Yup we can broadcast due to " + TemplateName.IRC_A_CHAT + " enabled"); + if (isMessageEnabled(myChannel, TemplateName.IRC_A_CHAT) || override) { String newMessage = filterMessage( plugin.tokenizer.ircChatToGameTokenizer(this, user, channel, plugin.getMsgTemplate( botNick, TemplateName.IRC_A_CHAT), message), myChannel); @@ -2543,15 +2436,13 @@ public final class PurpleBot { plugin.adminPrivateChatHook.sendMessage(newMessage, user.getNick()); messageSent = true; } - } else { - plugin.logDebug("NOPE we can't broadcast due to " + TemplateName.IRC_A_CHAT + " disabled"); } } /* Notify IRC user that message was sent. */ - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_CHAT_RESPONSE) && messageSent && target != null) { + if (isMessageEnabled(myChannel, TemplateName.IRC_CHAT_RESPONSE) && messageSent && target != null) { // Let the sender know the message was sent String responseTemplate = plugin.getMsgTemplate(botNick, TemplateName.IRC_CHAT_RESPONSE); if (!responseTemplate.isEmpty()) { @@ -2585,7 +2476,6 @@ public final class PurpleBot { String msg; hChannel = message.split(" ", 2)[0]; msg = message.split(" ", 2)[1]; - plugin.logDebug("Check if " + TemplateName.IRC_HERO_CHAT + " is enabled before broadcasting chat from IRC"); if (enabledMessages.get(ircChannel).contains(TemplateName.IRC_HERO_CHAT)) { plugin.logDebug("Checking if " + hChannel + " is a valid hero channel..."); if (Herochat.getChannelManager().hasChannel(hChannel)) { @@ -2608,9 +2498,6 @@ public final class PurpleBot { } else { asyncIRCMessage(target, "Hero channel \"" + hChannel + "\" does not exist!"); } - } else { - plugin.logDebug("NOPE we can't broadcast due to " - + TemplateName.IRC_HERO_CHAT + " disabled"); } } else { asyncIRCMessage(target, "No message specified."); @@ -2637,10 +2524,7 @@ public final class PurpleBot { String msg; pName = message.split(" ", 2)[0]; msg = message.split(" ", 2)[1]; - plugin.logDebug("Check if " + TemplateName.IRC_PCHAT + " is enabled before broadcasting chat from IRC"); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_PCHAT)) { - plugin.logDebug("Yup we can broadcast due to " + TemplateName.IRC_PCHAT - + " enabled... Checking if " + pName + " is a valid player..."); + if (isMessageEnabled(myChannel, TemplateName.IRC_PCHAT)) { Player player = plugin.getServer().getPlayer(pName); if (player != null) { if (player.isOnline()) { @@ -2662,8 +2546,6 @@ public final class PurpleBot { } else { asyncIRCMessage(target, "Player not found (possibly offline): " + pName); } - } else { - plugin.logDebug("NOPE we can't broadcast due to irc-pchat disabled"); } } else { asyncIRCMessage(target, "No message specified."); @@ -2679,7 +2561,7 @@ public final class PurpleBot { */ public void broadcastAction(User user, org.pircbotx.Channel channel, String message) { String myChannel = channel.getName(); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_ACTION)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_ACTION)) { plugin.broadcastToGame(plugin.tokenizer.ircChatToGameTokenizer( this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_ACTION), message), "irc.message.action"); @@ -2688,7 +2570,7 @@ public final class PurpleBot { + TemplateName.IRC_ACTION + " is false"); } - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_HERO_ACTION)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_HERO_ACTION)) { String hChannel = heroChannel.get(myChannel); String tmpl = plugin.getIRCHeroActionChannelTemplate(botNick, hChannel); plugin.logDebug("broadcastChat [HA]: " + hChannel + ": " + tmpl); @@ -2705,17 +2587,11 @@ public final class PurpleBot { } if (plugin.dynmapHook != null) { - plugin.logDebug("xChecking if " + TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT + " is enabled ..."); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT)) { - plugin.logDebug("Yes, " + TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT + " is enabled..."); + if (isMessageEnabled(myChannel, TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT)) { String template = plugin.getMsgTemplate(botNick, TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT); String rawDWMessage = filterMessage( plugin.tokenizer.ircChatToGameTokenizer(this, user, channel, template, message), myChannel); - String nickTmpl = plugin.getMsgTemplate(botNick, TemplateName.IRC_DYNMAP_ACTION_NICK); - String rawNick = nickTmpl.replace("%NICK%", user.getNick()); - plugin.dynmapHook.sendMessage(rawNick, rawDWMessage); - } else { - plugin.logDebug("Nope, " + TemplateName.IRC_ACTION_DYNMAP_WEB_CHAT + " is NOT enabled..."); + plugin.dynmapHook.sendMessage(user.getNick(), rawDWMessage); } } } @@ -2729,14 +2605,14 @@ public final class PurpleBot { */ public void broadcastIRCKick(User recipient, User kicker, String reason, org.pircbotx.Channel channel) { String myChannel = channel.getName(); - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_KICK)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_KICK)) { plugin.broadcastToGame(plugin.tokenizer.ircKickTokenizer( this, recipient, kicker, reason, channel, plugin.getMsgTemplate( botNick, TemplateName.IRC_KICK)), "irc.message.kick"); } - if (enabledMessages.get(myChannel).contains(TemplateName.IRC_HERO_KICK)) { + if (isMessageEnabled(myChannel, TemplateName.IRC_HERO_KICK)) { Herochat.getChannelManager().getChannel(heroChannel.get(myChannel)) .sendRawMessage(plugin.tokenizer .ircKickToHeroChatTokenizer(this, @@ -2885,7 +2761,9 @@ public final class PurpleBot { * @return */ public boolean isMessageEnabled(String channelName, String templateName) { - return enabledMessages.get(channelName).contains(templateName); + boolean isEnabled = enabledMessages.get(channelName).contains(templateName); + plugin.logDebug("[isMessageEnabled] " + channelName + ":" + templateName + ":" + isEnabled); + return isEnabled; } /** @@ -2951,10 +2829,7 @@ public final class PurpleBot { return; } for (String channelName : botChannels) { - if (isMessageEnabled(channelName, TemplateName.GAME_AFK)) { - if (!isPlayerInValidWorld(player, channelName)) { - return; - } + if (isMessageEnabled(channelName, TemplateName.GAME_AFK) && isPlayerInValidWorld(player, channelName)) { String template; if (afk) { template = plugin.getMsgTemplate(botNick, TemplateName.ESS_PLAYER_AFK); @@ -3021,13 +2896,15 @@ public final class PurpleBot { } public boolean isValidChannel(String channelName) { + boolean valid = false; for (String s : botChannels) { if (channelName.equalsIgnoreCase(s)) { - return true; + valid = true; + break; } } - plugin.logDebug("Channel " + channelName + " is not valid."); - return false; + plugin.logDebug("[isValidChannel] [c: " + channelName + "] [b: " + valid + "]"); + return valid; } public PircBotX getBot() { diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java index e848f30..b232c99 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java @@ -385,7 +385,7 @@ public class PurpleIRC extends JavaPlugin { if (messageTmpl.get(MAINCONFIG).containsKey(tmpl)) { return messageTmpl.get(MAINCONFIG).get(tmpl); } - return "INVALID TEMPLATE"; + return "INVALID TEMPLATE: " + botName + ":" + tmpl; } public String getMsgTemplate(String tmpl) { diff --git a/src/main/java/com/cnaude/purpleirc/TemplateName.java b/src/main/java/com/cnaude/purpleirc/TemplateName.java index 3da570b..9fa24ec 100644 --- a/src/main/java/com/cnaude/purpleirc/TemplateName.java +++ b/src/main/java/com/cnaude/purpleirc/TemplateName.java @@ -68,6 +68,7 @@ public class TemplateName { public final static String IRC_TITAN_CHAT = "irc-titan-chat"; public final static String TOWNY_CHAT = "towny-chat"; + public final static String TOWNY_CHANNEL_CHAT = "towny-channel-chat"; public final static String IRC_TOWNY_CHAT = "irc-towny-chat"; public final static String FACTION_PUBLIC_CHAT = "faction-public-chat"; diff --git a/src/main/resources/SampleBot.yml b/src/main/resources/SampleBot.yml index 91bd4bd..041c005 100644 --- a/src/main/resources/SampleBot.yml +++ b/src/main/resources/SampleBot.yml @@ -227,6 +227,8 @@ channels: # ignore list for custom tab list custom-tab-ignore-list: - AwesomeBot + # Don't add IRC users to tab list when a matching player is online. + custom-tab-ignore-duplicates: false # Hide join message when player is invisible (VanishNoPacket) hide-join-when-vanished: true # Hide quit message when player is invisible (VanishNoPacket) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5f44cd0..39d6c83 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -168,7 +168,7 @@ message-format: # Dynmap Web Chat to IRC dynmap-web-chat: '[Dynmap] <%NAME%> %MESSAGE%' # IRC to Dynmap Chat - irc-dynmap-web-chat: '%MESSAGE%' + irc-dynmap-web-chat: '[IRC] %MESSAGE%' # IRC acion to Dynmap Chat (/me) irc-action-dynmap-web-chat: '[IRC] ***%NAME% %MESSAGE%' # IRC to dynmap nick template