Merging changes from Spigot version.

This commit is contained in:
cnaude 2015-05-17 11:20:34 -07:00
parent 6042d1a162
commit 60dcc46328
10 changed files with 127 additions and 203 deletions

View File

@ -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();
}
}
}

View File

@ -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());

View File

@ -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)));
}
}
}
}
}

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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<String> botChannels;
public CaseInsensitiveMap<Collection<String>> channelNicks;
public CaseInsensitiveMap<Collection<String>> tabIgnoreNicks;
public CaseInsensitiveMap<Boolean> tabIgnoreDuplicates;
public CaseInsensitiveMap<Collection<String>> filters;
public CaseInsensitiveMap<String> channelPassword;
public CaseInsensitiveMap<String> 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<String> 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() {

View File

@ -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) {

View File

@ -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";

View File

@ -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)

View File

@ -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