diff --git a/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerCommandPreprocessingListener.java b/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerCommandPreprocessingListener.java index a5b7ea6..0d81a03 100644 --- a/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerCommandPreprocessingListener.java +++ b/src/main/java/com/cnaude/purpleirc/GameListeners/GamePlayerCommandPreprocessingListener.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package com.cnaude.purpleirc.GameListeners; import com.cnaude.purpleirc.PurpleBot; diff --git a/src/main/java/com/cnaude/purpleirc/IRCListeners/ConnectListener.java b/src/main/java/com/cnaude/purpleirc/IRCListeners/ConnectListener.java index fd2f6a5..e53bf33 100644 --- a/src/main/java/com/cnaude/purpleirc/IRCListeners/ConnectListener.java +++ b/src/main/java/com/cnaude/purpleirc/IRCListeners/ConnectListener.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; @@ -46,5 +42,6 @@ public void onConnect(ConnectEvent event) { } } ircBot.setConnected(true); + ircBot.autoJoinChannels(); } } diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index b008358..18f6368 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -103,6 +103,7 @@ public final class PurpleBot { public CaseInsensitiveMap msgOnJoin; public CaseInsensitiveMap channelTopicProtected; public CaseInsensitiveMap channelAutoJoin; + public long channelAutoJoinDelay; public CaseInsensitiveMap ignoreIRCChat; public CaseInsensitiveMap hideJoinWhenVanished; public CaseInsensitiveMap hideListWhenVanished; @@ -187,7 +188,7 @@ public void buildBot() { .setMaxLineLength(ircMaxLineLength) //.setAutoReconnect(autoConnect) // Why doesn't this work? .setServer(botServer, botServerPort, botServerPass); - addAutoJoinChannels(configBuilder); + //addAutoJoinChannels(configBuilder); for (ListenerAdapter ll : ircListeners) { configBuilder.addListener(ll); } @@ -256,18 +257,40 @@ private void addListeners() { ircListeners.add(new ServerResponseListener(plugin, this)); } - private void addAutoJoinChannels(Configuration.Builder configBuilder) { - for (String channelName : botChannels) { - if (channelAutoJoin.containsKey(channelName)) { - if (channelAutoJoin.get(channelName)) { - if (channelPassword.get(channelName).isEmpty()) { - configBuilder.addAutoJoinChannel(channelName); - } else { - configBuilder.addAutoJoinChannel(channelName, channelPassword.get(channelName)); + /* + private void addAutoJoinChannels(Configuration.Builder configBuilder) { + for (String channelName : botChannels) { + if (channelAutoJoin.containsKey(channelName)) { + if (channelAutoJoin.get(channelName)) { + if (channelPassword.get(channelName).isEmpty()) { + configBuilder.addAutoJoinChannel(channelName); + } else { + configBuilder.addAutoJoinChannel(channelName, channelPassword.get(channelName)); + } + } + } + } + } + */ + public void autoJoinChannels() { + plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { + @Override + public void run() { + for (String channelName : botChannels) { + if (channelAutoJoin.containsKey(channelName)) { + if (channelAutoJoin.get(channelName)) { + if (channelPassword.get(channelName).isEmpty()) { + bot.sendIRC().joinChannel(channelName); + } else { + bot.sendIRC().joinChannel(channelName, channelPassword.get(channelName)); + } + } } } + } - } + }, channelAutoJoinDelay); + } public void reload(CommandSender sender) { @@ -546,6 +569,7 @@ private void loadConfig() { } botServer = config.getString("server", ""); bindAddress = config.getString("bind", ""); + channelAutoJoinDelay = config.getLong("channel-auto-join-delay", 20); charSet = config.getString("charset", ""); sanitizeServerName(); showMOTD = config.getBoolean("show-motd", false); @@ -559,6 +583,7 @@ private void loadConfig() { plugin.logDebug("Nick => " + botNick); plugin.logDebug("Login => " + botLogin); plugin.logDebug("Server => " + botServer); + plugin.logDebug("Channel Auto Join Delay => " + channelAutoJoinDelay); plugin.logDebug(("Bind => ") + bindAddress); plugin.logDebug("SSL => " + ssl); plugin.logDebug("Trust All Certs => " + trustAllCerts); @@ -2678,7 +2703,7 @@ public void gamePrismRollback(Player player, QueryParameters queryParams, ArrayL String sortDirection = queryParams.getSortDirection(); String worldName = queryParams.getWorld(); String id = String.valueOf(queryParams.getId()); - String radius = String.valueOf(queryParams.getRadius()); + String radius = String.valueOf(queryParams.getRadius()); if (keyword == null) { keyword = ""; } diff --git a/src/main/resources/SampleBot.yml b/src/main/resources/SampleBot.yml index fd991b4..14dc296 100644 --- a/src/main/resources/SampleBot.yml +++ b/src/main/resources/SampleBot.yml @@ -56,6 +56,8 @@ command-notify: part-invalid-channels: false # Message when leaving invalid channel part-invalid-channels-message: 'I should not be here! Bye!' +# Channel auto join delay in server ticks (20 ticks = 1 second) +channel-auto-join-delay: 20 # channels - List the channels your bot will join here channels: # Channel name must be surrounded by sing quotes to be YAML compliant. @@ -187,7 +189,7 @@ channels: # @motd - display minecraft server motd # @msg - send private message to player # @query - query remote minecraft server - # The modes can be *, o , v , h, q or s. Mix and match as needed. + # The modes can be *, o , v , h, q, s, or i. Mix and match as needed. # If game_command can optionally accept arguments via %ARGS% and %NAME% # If a command is private then the result is sent to the player privately. # Set ignore-irc-chat to true if you are using @chat and don't want regular IRC chat in your game diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 8be684a..919a98d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -46,10 +46,12 @@ channel-check-interval: 100 # %SORTDIRECTION% # %PARAMWORLD% # %ID% -# %RADIUS% +# %ORIGINALBLOCK% +# %NEWBLOCK% # %X% # %Y% # %Z% +# %BLOCKWORLD% # prism-drain and prism-extinguish: # %RADIUS% # %ORIGINALBLOCK%