Herochat null pointer check (invalid channel)

This commit is contained in:
cnaude 2016-04-10 15:35:14 -07:00
parent 155b1467cc
commit fddf4f8377
3 changed files with 31 additions and 18 deletions

10
pom.xml
View File

@ -93,19 +93,19 @@
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>spigot-19</artifactId>
<version>1.9</version>
<artifactId>spigot-184</artifactId>
<version>1.8.4</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>spigot-184</artifactId>
<version>1.8.4</version>
<artifactId>spigot-19</artifactId>
<version>1.9</version>
<type>jar</type>
<scope>provided</scope>
</dependency>

View File

@ -118,7 +118,7 @@ public final class PurpleBot {
public String charSet;
public String commandPrefix;
public String quitMessage;
public String botIdentPassword;
public String botIdentPassword;
public List<String> rawMessages;
public String channelCmdNotifyMode;
public String partInvalidChannelsMsg;
@ -256,7 +256,7 @@ public final class PurpleBot {
this.filters = new CaseInsensitiveMap<>();
this.tailerFilters = new ArrayList<>();
this.channelNicks = new CaseInsensitiveMap<>();
this.rawMessages = new ArrayList<>();
this.rawMessages = new ArrayList<>();
this.channelTopicChanserv = new CaseInsensitiveMap<>();
this.joinMsg = new CaseInsensitiveMap<>();
this.msgOnJoin = new CaseInsensitiveMap<>();
@ -662,10 +662,10 @@ public final class PurpleBot {
}
});
}
public void asyncRawlineNow(final List<String> messages) {
for (String s : messages) {
bot.sendRaw().rawLineNow(s);
bot.sendRaw().rawLineNow(s);
}
}
@ -687,7 +687,7 @@ public final class PurpleBot {
}
});
}
public void zncResponse(String message) {
if (zncSender != null) {
zncSender.sendMessage(message);
@ -738,7 +738,7 @@ public final class PurpleBot {
trustAllCerts = config.getBoolean("trust-all-certs", false);
disableDiffieHellman = config.getBoolean("disable-diffie-hellman", false);
sendRawMessageOnConnect = config.getBoolean("raw-message-on-connect", false);
rawMessages.add(config.getString("raw-message"));
rawMessages.add(config.getString("raw-message"));
rawMessages.addAll(config.getStringList("raw-message-list"));
relayPrivateChat = config.getBoolean("relay-private-chat", false);
logPrivateChat = config.getBoolean("log-private-chat", false);
@ -2763,11 +2763,15 @@ public final class PurpleBot {
String rawHCMessage = filterMessage(
plugin.tokenizer.ircChatToHeroChatTokenizer(this, user, channel, tmpl, message, Herochat.getChannelManager(), hChannel), channelName);
if (!rawHCMessage.isEmpty()) {
Herochat.getChannelManager().getChannel(hChannel).sendRawMessage(rawHCMessage);
messageSent = true;
if (logIrcToHeroChat.containsKey(channelName)) {
if (logIrcToHeroChat.get(channelName)) {
plugin.getServer().getConsoleSender().sendMessage(rawHCMessage);
if (Herochat.getChannelManager().getChannel(hChannel) == null) {
plugin.logError("Herochat channel is invalid: " + hChannel);
} else {
Herochat.getChannelManager().getChannel(hChannel).sendRawMessage(rawHCMessage);
messageSent = true;
if (logIrcToHeroChat.containsKey(channelName)) {
if (logIrcToHeroChat.get(channelName)) {
plugin.getServer().getConsoleSender().sendMessage(rawHCMessage);
}
}
}
}

View File

@ -206,17 +206,26 @@ public class ChatTokenizer {
*/
public String ircChatToHeroChatTokenizer(PurpleBot ircBot, User user, org.pircbotx.Channel channel, String template, String message, ChannelManager channelManager, String hChannel) {
String ircNick = user.getNick();
String heroNick = "";
String heroColor = "";
String tmpl;
if (channelManager.getChannel(hChannel) == null) {
plugin.logError("Herochat channel is invalid: " + hChannel);
} else {
heroNick = channelManager.getChannel(hChannel).getNick();
heroColor = channelManager.getChannel(hChannel).getColor().toString();
}
Player player = this.getPlayer(ircNick);
if (player != null) {
tmpl = playerTokenizer(player, template);
} else {
tmpl = playerTokenizer(ircNick, template);
}
plugin.logDebug(message);
return plugin.colorConverter.ircColorsToGame(ircUserTokenizer(tmpl, user, ircBot)
.replace("%HEROCHANNEL%", hChannel)
.replace("%HERONICK%", channelManager.getChannel(hChannel).getNick())
.replace("%HEROCOLOR%", channelManager.getChannel(hChannel).getColor().toString())
.replace("%HERONICK%", heroNick)
.replace("%HEROCOLOR%", heroColor)
.replace("%NICKPREFIX%", ircBot.getNickPrefix(user, channel))
.replace("%CHANNELPREFIX%", ircBot.getChannelPrefix(channel))
.replace("%MESSAGE%", message)