From 3c4b1e05d2904e87f5556280a9b843c344b1eb62 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 4 Jul 2011 15:55:21 -0700 Subject: [PATCH] Trying to fix what broke up until Minecraft 1.7. Game->IRC colors added, IRC->Game commands fixed maybe. --- beta/preview/CraftIRC.jar | Bin 89927 -> 90170 bytes com/ensifera/animosity/craftirc/CraftIRC.java | 12 +- com/ensifera/animosity/craftirc/Minebot.java | 9 +- .../animosity/craftirc/RelayedMessage.java | 16 +- config.yml | 357 +++++++++--------- plugin.yml | 2 +- 6 files changed, 209 insertions(+), 187 deletions(-) diff --git a/beta/preview/CraftIRC.jar b/beta/preview/CraftIRC.jar index 12fd717a1ef4bed046c066c7339854b8c0dc617b..8e472054b6fd6a314115237e2779088eb158ff70 100644 GIT binary patch delta 27107 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�&lbjb}`Q|Z`$NZZGYO6Y2kmg3Px~7j2oL^MD`yWiUK#RoBdIx4%j#C-KX2Q zH|@oyPQ06T!E4GtG244w|0pInMzsFeL#AK+i7&9A`N!q~((DiC#npg6ZKL&uKiu%P z4b^Yt3K|a$W)e_^4a!h|9Pso~O1Qu_HX=n3nExL(t+$1M_ikKU%S3@jH+>;~$^tKL ztbWM>hi*u>jw%9iZZd9NPzSDHT$d}z&y1FnZ!5o#=+_2v0L2iy+Q7TGszJmx8etXa zG6;Dc;EU^$2&fVfh*KS)=(RTFuObl$8C{_8e~Km`M)ZJmh9Cb_WB{Up(Eq70aa}qA zwfoOT_@_kz*jKzleY&pU;OrCN?&9nZMiq1T%N2pt1=6AM0O37KG<^RD`ztK-Ut#U8 z9d7ad{~WmfawtHg=>hNjcQRCKKmg#Lzw7@nx3>Jg? zyNB1fME}#nzY-zDZ-Hpdz zf~3DZpvE^IlsCq|zbv`=uH-M{!{BRU_;N4^@yg`iG)GNPnJ7j72P1;#MG+$+tbn*T z0rv!YR=rTtsb8qo$@5o0)!5%oX)$;RsOi4}ADN;8{zyWk>j8P-+DUYX!~X)WuEEyy zf52oo1H#b^NP07<_svkCWabUXim*2Pmj@dGxiA>TBLWuyVET)PO*X<$5J&;fLl6-E zyMTYsY=nY2D&$20qQL@44VNiEF*W}$rq`f**>4a*X8|NcOqc^nZW6CnkyWTfb!LcK zkAEjVS@Xw*;fA}M1u9l|^B;f!0kr@U-^6l$F`~YJTDD!N3CR8z`Kaz|7r`6D*{{m= ze5iA1J_!JT(xCm>%3wvk*M>~O0*+qbfPnv#r`-I&dK&;mHii@c5dPzJy}k%We~%8r z!xG4K(@W>0FUb(pSPG$zDcfJx)-(TDk5~d}Z&KT_M5P8={0E@7`WKL~LIIAe{{TLy z4>umE*Fg8$Zvg&lmFf3{x&aTaLCMemfWhlz2>$zYi2;#7$02z5mNY-O-= j9U!WDP>`#;k3gumm;PN$6pd@{A^=U)L|M{BIRXA3rNRja delta 26662 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 Z|C=<~41N` cChanOnJoin(int bot, String channel) { protected boolean cChanChatColors(int bot, String channel) { return getChanNode(bot, channel).getBoolean("chat-colors", true); } - + + protected boolean cGameChatColors(int bot, String channel) { + return getChanNode(bot, channel).getBoolean("game-colors", true); + } + protected boolean cChanNameColors(int bot, String channel) { return getChanNode(bot, channel).getBoolean("name-colors", true); } @@ -801,7 +805,7 @@ protected String getPermSuffix(String world, String pl) { protected void enqueueConsoleCommand(String cmd) { try { - console.a(cmd, console); + console.issueCommand(cmd, console); } catch (Exception e) { e.printStackTrace(); diff --git a/com/ensifera/animosity/craftirc/Minebot.java b/com/ensifera/animosity/craftirc/Minebot.java index 2e4a301..56ce8fc 100644 --- a/com/ensifera/animosity/craftirc/Minebot.java +++ b/com/ensifera/animosity/craftirc/Minebot.java @@ -350,7 +350,7 @@ public void onMessage(String channel, String sender, String login, String hostna msg.sender = sender; msg.srcBot = botId; msg.srcChannel = channel; - msg.message = message.replaceFirst(cmdPrefix, ""); + msg.message = message.substring(cmdPrefix.length()); msg.updateTag(); // PLUGIN INTEROP msg.setTarget(EndPoint.PLUGIN); @@ -418,7 +418,7 @@ else if (message.startsWith(cmdPrefix + "say ") || message.startsWith(cmdPrefix msg.sender = sender; msg.srcBot = botId; msg.srcChannel = channel; - msg.message = message.replaceFirst(cmdPrefix, ""); + msg.message = message.substring(cmdPrefix.length()); msg.updateTag(); // PLUGIN INTEROP msg.setTarget(EndPoint.PLUGIN); @@ -520,7 +520,7 @@ private boolean routeCommand(String fullCommand, RelayedMessage ircConCmd) { //if (!this.plugin.defaultConsoleCommands.contains(rootCommand)) // return false; - if (!this.plugin.cConsoleCommands().contains(rootCommand)){ + if (!this.plugin.cConsoleCommands().contains(rootCommand) && !this.plugin.cConsoleCommands().contains("all")){ if (this.plugin.isDebug()) { CraftIRC.log.info(String.format(CraftIRC.NAME + " Console command: %s not found in config.yml",rootCommand)); } return false; } @@ -533,7 +533,8 @@ private boolean routeCommand(String fullCommand, RelayedMessage ircConCmd) { } this.plugin.enqueueConsoleCommand(fullCommand); - + return true; + } else { if (this.plugin.isDebug()) { CraftIRC.log.info(String.format(CraftIRC.NAME + " Minebot routeCommand() fullCommand=" + fullCommand diff --git a/com/ensifera/animosity/craftirc/RelayedMessage.java b/com/ensifera/animosity/craftirc/RelayedMessage.java index 12b9761..c56b755 100644 --- a/com/ensifera/animosity/craftirc/RelayedMessage.java +++ b/com/ensifera/animosity/craftirc/RelayedMessage.java @@ -71,6 +71,7 @@ public String asString() throws RelayedMessageException { if (target != EndPoint.BOTH) return asString(target); else return asString(EndPoint.UNKNOWN); } + public String asString(EndPoint realTarget) throws RelayedMessageException { String result = ""; String msgout = message; @@ -80,7 +81,21 @@ public String asString(EndPoint realTarget) throws RelayedMessageException { if (source == EndPoint.PLUGIN || target == EndPoint.PLUGIN || target == EndPoint.UNKNOWN) result = this.message; if (source == EndPoint.GAME && target == EndPoint.IRC) + if (source == EndPoint.GAME && target == EndPoint.IRC) { + if(this.plugin.cGameChatColors(trgBot, trgChannel)) { + Pattern color_codes = Pattern.compile("\u00A7([A-Za-z0-9])?"); + Matcher find_colors = color_codes.matcher(msgout); + while (find_colors.find()) { + msgout = find_colors.replaceFirst("\u0003" + Integer.toString(this.plugin.cColorIrcFromGame("\u00C2\u00A7" + find_colors.group(1)))); + find_colors = color_codes.matcher(msgout); + } + } + else + msgout = msgout.replaceAll("(\u00A7([A-Za-z0-9])?)", ""); + result = this.plugin.cFormatting("game-to-irc." + formatting, trgBot, trgChannel); + } + if (source == EndPoint.IRC && (target == EndPoint.IRC || target == EndPoint.BOTH && realTarget == EndPoint.IRC)) result = this.plugin.cFormatting("irc-to-irc." + formatting, trgBot, trgChannel); if (source == EndPoint.IRC && (target == EndPoint.GAME || target == EndPoint.BOTH && realTarget == EndPoint.GAME)) { @@ -153,5 +168,4 @@ else if (target == EndPoint.GAME || target == EndPoint.BOTH && realTarget == End } return result; } - } diff --git a/config.yml b/config.yml index 7ead4fa..9eb95c2 100644 --- a/config.yml +++ b/config.yml @@ -1,177 +1,180 @@ -settings: - #### This node contains the global scope. Settings defined here are either global settings or defaults that apply to all - #### bots and channels (unless overriden in the bot or channel scope). - - #The prefix for the IRC-side bot commands; Can be overriden in the bot scope. - command-prefix: '.' - - #You probably don't need this. - debug: false - - console-commands: ['reload', 'save-all'] - - ignored-prefixes: - irc: ['!'] - game: [] - - #Delay in milliseconds for these game events to be ignored after the plugin is enabled (prevents initial flood burst). - hold-after-enable: - chat: 0 - joins: 0 - quits: 0 - kicks: 0 - bans: 0 - - formatting: - #### Formatting for the messages relayed by the plugin. You can override all formatting strings in the bot or channel - #### scope (within a formatting: block). In irc-to-irc, the target channel controls the format strings. - #### VARIABLES (may be blank depending on the context): %sender% %message% %moderator% %srcChannel% %trgChannel% %world% - #### IF YOU'RE RUNNING Permissions: %prefix% %suffix% %modPredix% %modSuffix% (game-to-irc only) - #### IRC FORMATTING: %b% %u% %r% %o% %k% %kNUM% (NUM is 0 to 15); Do the same as CTRL+key in mIRC - #### GAME COLORS: §NUM (NUM is 1 to f); Do not use in the end of a line - #### EASY COLORS: Use the names defined in the colormap: block, such as %blue% %foreground% %yellow% etc. - game-to-irc: - chat: '(%sender%) %message%' - action: '* %sender% %message%' - joins: '[%sender% connected]' - quits: '[%sender% disconnected]' - kicks: '[%moderator% KICKED %sender% (%message%)]' - bans: '[%moderator% BANNED %sender% (%message%)]' - irc-to-game: - chat: '[%srcChannel%] <%sender%> %message%' - action: '[%srcChannel%] * %sender% %message%' - joins: '[%srcChannel%] * Joins: %sender%' - parts: '[%srcChannel%] * Parts: %sender%' - quits: '[%srcChannel%] * Quits: %sender%' - kicks: '[%srcChannel%] * %sender% was kicked by %moderator%' - nicks: '[%srcChannel%] * %sender% is now known as %message%' - irc-to-irc: - chat: '[%srcChannel%] <%sender%> %message%' - action: '[%srcChannel%] * %sender% %message%' - joins: '[%srcChannel%] * Joins: %sender%' - parts: '[%srcChannel%] * Parts: %sender%' - quits: '[%srcChannel%] * Quits: %sender% (%message%)' - kicks: '[%srcChannel%] * %sender% was kicked by %moderator% (%message%)' - nicks: '[%srcChannel%] * %sender% is now known as %message%' - custom: - #Custom blocks define custom variables you can use within formatting strings - botname: '' - network: '' - - # Optional: Bind to a non-default local address - # bind-address: 127.0.0.1 - - events: - #### Turn different types of messages on and off here. cancelled-chat only exists in the global scope; The remaining - #### events can be redefined in the bot or channel scopes (within an events: block). In irc-to-irc, the source - #### channel controls the events. - game-to-irc: - # If you use other chat plugins, you probably want to set cancelled-chat: true - cancelled-chat: false - all-chat: true - joins: false - quits: false - kicks: false - bans: false - irc-to-game: - all-chat: true - joins: false - parts: false - quits: false - kicks: false - nicks: false - irc-to-irc: - all-chat: true - joins: false - parts: false - quits: false - kicks: false - nicks: false - - #Tags allow you to target messages to all the channels within a scope. The global scope contains all channels. - tag: 'all' - -bots: - #### A list of bots; You should only need one bot for each IRC server (the same bot can join multiple channels). - #### Settings that apply to all channels of a bot should be defined in a bot's node. The dash in the third - #### column starts a new bot. - - - nickname: 'CraftIRCbot' - server: 'irc.example.com' - port: 6667 - userident: 'bot' - serverpass: '' #This isn't the nickserv password - ssl: false - - #Delay between messages helps prevent triggering server-side flood protections (milliseconds) - message-delay: 1000 - - #Types of IRC users that are considered admins within an admin channel (has no effect in normal channels) - admin-prefixes: ['@', '%'] - - #Ignore users in this server by nickname - ignored-users: [] - - #Tags allow you to target messages to all the channels within a scope. - tag: 'example' - - formatting: - custom: - botname: 'CraftIRCbot' - network: 'Example' - - #Services authentication of the bot's nickname goes here. The username may not be required. - #Available methods: 'none', 'nickserv', 'gamesurge', 'quakenet' - auth: - method: 'nickserv' - username: '' - password: '' - - #List here raw IRC commands you want the bot to perform after it connects to the server - on-connect: - # - 'PRIVMSG MyBoss :I live again!' - - channels: - #### A list of channels; Define here all the channels you want this bot to join. Settings that apply to a single - #### channel can be defined in the channel node. A dash in the 7th column starts a new channel. - - - name: '#changeme' - password: '' - - #In admin channels, admins can use console commands (when this feature is supported) and be send emergency - # notices from users. - admin: false - - #This tag targets only this channel. - tag: 'changeme' - - #Allow IRC color codes in messages to be converted to Minecraft colors; Set to false to just remove them. - chat-colors: true - - #Enables Permissions prefixes and suffixes for this channel (iChat-format colors are supported). - name-colors: true - - #List here raw IRC commands you want the bot to perform after it joins this channel. - on-join: - # - 'PRIVMSG #changeme :Howdy do!' - -colormap: - #### Map colors to your taste here; Make sure each irc, game and name appears once and only once. - #### The color 'foreground' *must* exist and will be used as the default by certain features. - - - {irc: 0, game: '§0', name: 'background'} - - {irc: 2, game: '§1', name: 'navy'} - - {irc: 3, game: '§2', name: 'darkgreen'} - - {irc: 10, game: '§3', name: 'teal'} - - {irc: 5, game: '§4', name: 'maroon'} - - {irc: 6, game: '§5', name: 'purple'} - - {irc: 7, game: '§6', name: 'orange'} - - {irc: 15, game: '§7', name: 'grey'} - - {irc: 14, game: '§8', name: 'darkgrey'} - - {irc: 12, game: '§9', name: 'blue'} - - {irc: 9, game: '§a', name: 'green'} - - {irc: 11, game: '§b', name: 'cyan'} - - {irc: 4, game: '§c', name: 'red'} - - {irc: 13, game: '§d', name: 'magenta'} - - {irc: 8, game: '§e', name: 'yellow'} - - {irc: 1, game: '§f', name: 'foreground'} +settings: + #### This node contains the global scope. Settings defined here are either global settings or defaults that apply to all + #### bots and channels (unless overriden in the bot or channel scope). + + #The prefix for the IRC-side bot commands; Can be overriden in the bot scope. + command-prefix: '.' + + #You probably don't need this. + debug: false + + console-commands: ['reload', 'save-all'] + + ignored-prefixes: + irc: ['!'] + game: [] + + #Delay in milliseconds for these game events to be ignored after the plugin is enabled (prevents initial flood burst). + hold-after-enable: + chat: 0 + joins: 0 + quits: 0 + kicks: 0 + bans: 0 + + formatting: + #### Formatting for the messages relayed by the plugin. You can override all formatting strings in the bot or channel + #### scope (within a formatting: block). In irc-to-irc, the target channel controls the format strings. + #### VARIABLES (may be blank depending on the context): %sender% %message% %moderator% %srcChannel% %trgChannel% %world% + #### IF YOU'RE RUNNING Permissions: %prefix% %suffix% %modPredix% %modSuffix% (game-to-irc only) + #### IRC FORMATTING: %b% %u% %r% %o% %k% %kNUM% (NUM is 0 to 15); Do the same as CTRL+key in mIRC + #### GAME COLORS: §NUM (NUM is 1 to f); Do not use in the end of a line + #### EASY COLORS: Use the names defined in the colormap: block, such as %blue% %foreground% %yellow% etc. + game-to-irc: + chat: '(%sender%) %message%' + action: '* %sender% %message%' + joins: '[%sender% connected]' + quits: '[%sender% disconnected]' + kicks: '[%moderator% KICKED %sender% (%message%)]' + bans: '[%moderator% BANNED %sender% (%message%)]' + irc-to-game: + chat: '[%srcChannel%] <%sender%> %message%' + action: '[%srcChannel%] * %sender% %message%' + joins: '[%srcChannel%] * Joins: %sender%' + parts: '[%srcChannel%] * Parts: %sender%' + quits: '[%srcChannel%] * Quits: %sender%' + kicks: '[%srcChannel%] * %sender% was kicked by %moderator%' + nicks: '[%srcChannel%] * %sender% is now known as %message%' + irc-to-irc: + chat: '[%srcChannel%] <%sender%> %message%' + action: '[%srcChannel%] * %sender% %message%' + joins: '[%srcChannel%] * Joins: %sender%' + parts: '[%srcChannel%] * Parts: %sender%' + quits: '[%srcChannel%] * Quits: %sender% (%message%)' + kicks: '[%srcChannel%] * %sender% was kicked by %moderator% (%message%)' + nicks: '[%srcChannel%] * %sender% is now known as %message%' + custom: + #Custom blocks define custom variables you can use within formatting strings + botname: '' + network: '' + + # Optional: Bind to a non-default local address + # bind-address: 127.0.0.1 + + events: + #### Turn different types of messages on and off here. cancelled-chat only exists in the global scope; The remaining + #### events can be redefined in the bot or channel scopes (within an events: block). In irc-to-irc, the source + #### channel controls the events. + game-to-irc: + # If you use other chat plugins, you probably want to set cancelled-chat: true + cancelled-chat: false + all-chat: true + joins: false + quits: false + kicks: false + bans: false + irc-to-game: + all-chat: true + joins: false + parts: false + quits: false + kicks: false + nicks: false + irc-to-irc: + all-chat: true + joins: false + parts: false + quits: false + kicks: false + nicks: false + + #Tags allow you to target messages to all the channels within a scope. The global scope contains all channels. + tag: 'all' + +bots: + #### A list of bots; You should only need one bot for each IRC server (the same bot can join multiple channels). + #### Settings that apply to all channels of a bot should be defined in a bot's node. The dash in the third + #### column starts a new bot. + + - nickname: 'CraftIRCbot' + server: 'irc.esper.net' + port: 6667 + userident: 'bot' + serverpass: '' #This isn't the nickserv password + ssl: false + + #Delay between messages helps prevent triggering server-side flood protections (milliseconds) + message-delay: 1000 + + #Types of IRC users that are considered admins within an admin channel (has no effect in normal channels) + admin-prefixes: ['@', '%'] + + #Ignore users in this server by nickname + ignored-users: [] + + #Tags allow you to target messages to all the channels within a scope. + tag: 'esper' + + formatting: + custom: + botname: 'CraftIRCbot' + network: 'Esper' + + #Services authentication of the bot's nickname goes here. The username may not be required. + #Available methods: 'none', 'nickserv', 'gamesurge', 'quakenet' + auth: + method: 'nickserv' + username: '' + password: '' + + #List here raw IRC commands you want the bot to perform after it connects to the server + on-connect: + # - 'PRIVMSG MyBoss :I live again!' + + channels: + #### A list of channels; Define here all the channels you want this bot to join. Settings that apply to a single + #### channel can be defined in the channel node. A dash in the 7th column starts a new channel. + + - name: '#changeme' + password: '' + + #In admin channels, admins can use console commands (when this feature is supported) and be send emergency + # notices from users. + admin: false + + #This tag targets only this channel. + tag: 'changeme' + + #Allow IRC color codes in messages to be converted to Minecraft colors; Set to false to just remove them. + chat-colors: true + + #Allow Minecraft color codes in messages to be converted to IRC colors; Set to false to just remove them. + game-colors: true + + #Enables Permissions prefixes and suffixes for this channel (iChat-format colors are supported). + name-colors: true + + #List here raw IRC commands you want the bot to perform after it joins this channel. + on-join: + # - 'PRIVMSG #changeme :Howdy do!' + +colormap: + #### Map colors to your taste here; Make sure each irc, game and name appears once and only once. + #### The color 'foreground' *must* exist and will be used as the default by certain features. + + - {irc: 0, game: '§0', name: 'background'} + - {irc: 2, game: '§1', name: 'navy'} + - {irc: 3, game: '§2', name: 'darkgreen'} + - {irc: 10, game: '§3', name: 'teal'} + - {irc: 5, game: '§4', name: 'maroon'} + - {irc: 6, game: '§5', name: 'purple'} + - {irc: 7, game: '§6', name: 'orange'} + - {irc: 15, game: '§7', name: 'grey'} + - {irc: 14, game: '§8', name: 'darkgrey'} + - {irc: 12, game: '§9', name: 'blue'} + - {irc: 9, game: '§a', name: 'green'} + - {irc: 11, game: '§b', name: 'cyan'} + - {irc: 4, game: '§c', name: 'red'} + - {irc: 13, game: '§d', name: 'magenta'} + - {irc: 8, game: '§e', name: 'yellow'} + - {irc: 1, game: '§f', name: 'foreground'} diff --git a/plugin.yml b/plugin.yml index 04a82e3..9a0396c 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: CraftIRC main: com.ensifera.animosity.craftirc.CraftIRC -version: 2.0 Preview 11 +version: 2.10 commands: irc: description: Sends a message to all IRC channels