From 99de38f2e8f2d8cb01c7065e53da8f391d6a15f8 Mon Sep 17 00:00:00 2001 From: cnaude Date: Fri, 16 May 2014 23:40:50 -0700 Subject: [PATCH] Catch nick prefix null pointer exception. (Fixes irc-part and irc-quit) --- .../java/com/cnaude/purpleirc/BotWatcher.java | 2 +- .../cnaude/purpleirc/CommandQueueWatcher.java | 3 - .../com/cnaude/purpleirc/Commands/AddOp.java | 4 - .../java/com/cnaude/purpleirc/IRCCommand.java | 4 - .../purpleirc/IRCListeners/QuitListener.java | 4 - .../IRCListeners/ServerResponseListener.java | 4 - .../IRCListeners/VersionListener.java | 4 - .../purpleirc/IRCListeners/WhoisListener.java | 4 - .../java/com/cnaude/purpleirc/PurpleBot.java | 83 +++++++++++-------- .../java/com/cnaude/purpleirc/PurpleIRC.java | 4 +- 10 files changed, 50 insertions(+), 66 deletions(-) diff --git a/src/main/java/com/cnaude/purpleirc/BotWatcher.java b/src/main/java/com/cnaude/purpleirc/BotWatcher.java index fd64f8f..50fee47 100644 --- a/src/main/java/com/cnaude/purpleirc/BotWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/BotWatcher.java @@ -22,7 +22,7 @@ public BotWatcher(final PurpleIRC plugin) { bt = this.plugin.getServer().getScheduler().runTaskTimerAsynchronously(this.plugin, new Runnable() { @Override public void run() { - plugin.logDebug("Checking connection status of IRC bots."); + //plugin.logDebug("Checking connection status of IRC bots."); for (PurpleBot ircBot : plugin.ircBots.values()) { if (ircBot.isConnectedBlocking()) { plugin.logDebug("[" + ircBot.botNick + "] CONNECTED"); diff --git a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java index 124713c..fe25614 100644 --- a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java @@ -41,9 +41,6 @@ private void queueAndSend() { } } - /** - * - */ public void cancel() { this.plugin.getServer().getScheduler().cancelTask(bt); } diff --git a/src/main/java/com/cnaude/purpleirc/Commands/AddOp.java b/src/main/java/com/cnaude/purpleirc/Commands/AddOp.java index e746688..e68786e 100644 --- a/src/main/java/com/cnaude/purpleirc/Commands/AddOp.java +++ b/src/main/java/com/cnaude/purpleirc/Commands/AddOp.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.Commands; import com.cnaude.purpleirc.PurpleIRC; diff --git a/src/main/java/com/cnaude/purpleirc/IRCCommand.java b/src/main/java/com/cnaude/purpleirc/IRCCommand.java index a16db0b..5129b16 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCCommand.java +++ b/src/main/java/com/cnaude/purpleirc/IRCCommand.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc; /** diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/QuitListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/QuitListener.java index f667a8f..5676127 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/QuitListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/QuitListener.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.IRCListeners; import com.cnaude.purpleirc.PurpleBot; diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/ServerResponseListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/ServerResponseListener.java index 3ca2f74..ccb642e 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/ServerResponseListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/ServerResponseListener.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.IRCListeners; import com.cnaude.purpleirc.PurpleBot; diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/VersionListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/VersionListener.java index bae9c6b..816501c 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/VersionListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/VersionListener.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.IRCListeners; import com.cnaude.purpleirc.PurpleIRC; diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/WhoisListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/WhoisListener.java index b24620b..ac3ba68 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/WhoisListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/WhoisListener.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.IRCListeners; import com.cnaude.purpleirc.PurpleBot; diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index f275b1f..ea82087 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -655,7 +655,7 @@ private void loadConfig() { if (opsList.isEmpty()) { plugin.logInfo("No channel ops defined."); } - + // build channel voice list Collection cVoices = new ArrayList(); for (String channelVoice : config.getStringList("channels." + enChannelName + ".voices")) { @@ -1443,7 +1443,7 @@ public void addOp(String channelName, String userMask, CommandSender sender) { config.set("channels." + encodeChannel(getConfigChannelName(channelName)) + ".ops", opsList.get(channelName)); saveConfig(); } - + /** * * @param channelName @@ -1481,7 +1481,7 @@ public void removeOp(String channelName, String userMask, CommandSender sender) config.set("channels." + encodeChannel(getConfigChannelName(channelName)) + ".ops", opsList.get(channelName)); saveConfig(); } - + /** * * @param channelName @@ -1518,7 +1518,7 @@ public void op(String channelName, String nick) { } } } - + /** * * @param channelName @@ -1554,7 +1554,7 @@ public void deOp(String channelName, String nick) { } } } - + /** * * @param channelName @@ -1785,17 +1785,23 @@ public void sendUserList(CommandSender sender, Channel channel) { } } - public String getNickPrefix(User user, Channel channel) { - if (user.isIrcop()) { - return plugin.ircNickPrefixIrcOp; - } else if (user.getChannelsSuperOpIn().contains(channel)) { - return plugin.ircNickPrefixSuperOp; - } else if (user.getChannelsOpIn().contains(channel)) { - return plugin.ircNickPrefixOp; - } else if (user.getChannelsHalfOpIn().contains(channel)) { - return plugin.ircNickPrefixHalfOp; - } else if (user.getChannelsVoiceIn().contains(channel)) { - return plugin.ircNickPrefixVoice; + public String getNickPrefix(User user, Channel channel) { + try { + if (user.getChannels() != null) { + if (user.isIrcop()) { + return plugin.ircNickPrefixIrcOp; + } else if (user.getChannelsSuperOpIn().contains(channel)) { + return plugin.ircNickPrefixSuperOp; + } else if (user.getChannelsOpIn().contains(channel)) { + return plugin.ircNickPrefixOp; + } else if (user.getChannelsHalfOpIn().contains(channel)) { + return plugin.ircNickPrefixHalfOp; + } else if (user.getChannelsVoiceIn().contains(channel)) { + return plugin.ircNickPrefixVoice; + } + } + } catch (Exception ex) { + plugin.logError(ex.getMessage()); } return ""; } @@ -1862,7 +1868,7 @@ public void opFriends(String channelName) { } } } - + /** * * @param channel @@ -1926,7 +1932,7 @@ public void opFriends(Channel channel, User user) { } } } - + /** * * @param channel @@ -2199,8 +2205,8 @@ public void broadcastAction(User user, org.pircbotx.Channel channel, String mess if (enabledMessages.get(myChannel).contains(TemplateName.IRC_HERO_ACTION)) { Herochat.getChannelManager().getChannel(heroChannel.get(myChannel)) .sendRawMessage(plugin.tokenizer.ircChatToHeroChatTokenizer( - this, user,channel, plugin.getMsgTemplate( - botNick, TemplateName.IRC_HERO_ACTION), message, + this, user, channel, plugin.getMsgTemplate( + botNick, TemplateName.IRC_HERO_ACTION), message, Herochat.getChannelManager(), heroChannel.get(myChannel) ) @@ -2293,7 +2299,7 @@ public void broadcastIRCJoin(User user, org.pircbotx.Channel channel) { if (enabledMessages.get(channel.getName()).contains(TemplateName.IRC_HERO_JOIN)) { Herochat.getChannelManager().getChannel(heroChannel.get(channel.getName())) .sendRawMessage(plugin.tokenizer.ircChatToHeroChatTokenizer( - this, user, channel, plugin.getMsgTemplate(botNick, + this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_HERO_JOIN), Herochat.getChannelManager(), heroChannel.get(channel.getName()))); @@ -2301,21 +2307,28 @@ public void broadcastIRCJoin(User user, org.pircbotx.Channel channel) { } public void broadcastIRCPart(User user, org.pircbotx.Channel channel) { + plugin.logDebug("[broadcastIRCPart] A"); if (enabledMessages.get(channel.getName()).contains(TemplateName.IRC_PART)) { + plugin.logDebug("[broadcastIRCPart] B"); + String message = plugin.tokenizer.chatIRCTokenizer( + this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_PART)); + plugin.logDebug("[broadcastIRCPart] C"); plugin.logDebug("[broadcastIRCPart] Broadcasting part message because " - + TemplateName.IRC_PART + " is true."); - plugin.getServer().broadcast(plugin.tokenizer.chatIRCTokenizer( - this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_PART)), "irc.message.part"); + + TemplateName.IRC_PART + " is true: " + message); + plugin.logDebug("[broadcastIRCPart] D"); + plugin.getServer().broadcast(message, "irc.message.part"); + plugin.logDebug("[broadcastIRCPart] E"); } else { plugin.logDebug("[broadcastIRCPart] NOT broadcasting part message because " + TemplateName.IRC_PART + " is false."); } + plugin.logDebug("[broadcastIRCPart] F"); if (enabledMessages.get(channel.getName()).contains(TemplateName.IRC_HERO_PART)) { Herochat.getChannelManager().getChannel(heroChannel.get(channel.getName())) .sendRawMessage(plugin.tokenizer.ircChatToHeroChatTokenizer( - this, user, channel, plugin.getMsgTemplate( - botNick, TemplateName.IRC_HERO_PART), + this, user, channel, plugin.getMsgTemplate( + botNick, TemplateName.IRC_HERO_PART), Herochat.getChannelManager(), heroChannel.get(channel.getName()))); } @@ -2328,9 +2341,7 @@ public void broadcastIRCQuit(User user, org.pircbotx.Channel channel, String rea + TemplateName.IRC_QUIT + " is true."); plugin.getServer().broadcast(plugin.tokenizer.chatIRCTokenizer( this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_QUIT)) - .replace("%NAME%", user.getNick()) - .replace("%REASON%", reason) - .replace("%CHANNEL%", channel.getName()), "irc.message.quit"); + .replace("%REASON%", reason), "irc.message.quit"); } else { plugin.logDebug("[broadcastIRCQuit] NOT broadcasting quit message because " + TemplateName.IRC_QUIT + " is false."); @@ -2339,16 +2350,16 @@ public void broadcastIRCQuit(User user, org.pircbotx.Channel channel, String rea if (enabledMessages.get(channel.getName()).contains(TemplateName.IRC_HERO_QUIT)) { Herochat.getChannelManager().getChannel(heroChannel.get(channel.getName())) .sendRawMessage(plugin.tokenizer.ircChatToHeroChatTokenizer( - this, user, channel, plugin.getMsgTemplate( - botNick, TemplateName.IRC_HERO_QUIT), + this, user, channel, plugin.getMsgTemplate( + botNick, TemplateName.IRC_HERO_QUIT), Herochat.getChannelManager(), heroChannel.get(channel.getName()))); } } - // Broadcast topic changes from IRC /** + * Broadcast topic changes from IRC * * @param user * @param channel @@ -2363,14 +2374,14 @@ public void broadcastIRCTopic(User user, org.pircbotx.Channel channel, String me if (enabledMessages.get(channel.getName()).contains(TemplateName.IRC_HERO_TOPIC)) { Herochat.getChannelManager().getChannel(heroChannel.get(channel.getName())) .sendRawMessage(plugin.tokenizer.ircChatToHeroChatTokenizer( - this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_HERO_TOPIC), message, + this, user, channel, plugin.getMsgTemplate(botNick, TemplateName.IRC_HERO_TOPIC), message, Herochat.getChannelManager(), heroChannel.get(channel.getName()))); } } - // Broadcast disconnect messages from IRC /** + * Broadcast disconnect messages from IRC * * @param nick */ @@ -2378,8 +2389,8 @@ public void broadcastIRCDisconnect(String nick) { plugin.getServer().broadcast("[" + nick + "] Disconnected from IRC server.", "irc.message.disconnect"); } - // Broadcast connect messages from IRC /** + * Broadcast connect messages from IRC * * @param nick */ @@ -2387,8 +2398,8 @@ public void broadcastIRCConnect(String nick) { plugin.getServer().broadcast("[" + nick + "] Connected to IRC server.", "irc.message.connect"); } - // Notify when players use commands /** + * Notify when players use commands * * @param player * @param cmd diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java index 7c536d7..e9d7e49 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java @@ -191,9 +191,9 @@ public void onEnable() { try { heroConfig.load(heroConfigFile); } catch (IOException ex) { - Logger.getLogger(PurpleIRC.class.getName()).log(Level.SEVERE, null, ex); + logError(ex.getMessage()); } catch (InvalidConfigurationException ex) { - Logger.getLogger(PurpleIRC.class.getName()).log(Level.SEVERE, null, ex); + logError(ex.getMessage()); } heroChatEmoteFormat = heroConfig.getString("format.emote", ""); } else {