PurpleIRC is an IRC to Minecraft bridge plugin. This plugin supports running multiple bots on multiple channels. This plugin utilizes the PircBotX Java IRC framework (included in the plugin jar).
- For additional information see the PurpleIRC Wiki.
- Relay chat from game to IRC and vice versa.
- Relay game events to IRC.
- Relay IRC events to game.
- Translate colors from game to IRC and vice versa.
- Fully configurable message templates.
- Enable or disable any chat feature to and from the game.
- Most of the configuration options are per bot and per channel.
- Each bot can join multiple channels.
- Automatically op IRC users based on user masks.
- Control and protect the IRC topic.
- Manage IRC channel modes.
- Automatically reconnect to the IRC server on disconnect.
- Respond to commands in IRC chat.
- Send any command to the game via the console.
- Supports prefixes and suffixes. (see sample config for details)
- Displays IRC users in the tab list. (requires ProtocolLib)
- Monitor player command usage.
- Great for cross server chatting.
- Update checker will make external HTTP connections to check for new versions.
- SSL/TLS support.
- If you are running CraftBukkit version 1.7.2 or older then stick to PurpleIRC version v2.1.14-174 and older.
- If you need a version that supports Spigot visit the Spigot Resource Page.
How to install
- Drop the PurpleIRC.jar file into your plugins directory.
- Restart the server. (Please don't use /reload)
- Copy plugins/PurpleIRC/sample bot to plugins/PurpleIRC/bots/NewBotName.yml
- Edit the bot yml file as needed. Each option is documented.
- Use /irc load bot.yml command to load and start the new bot.
- Configure permissions.
- Configuration - Use /irc reloadconfig to load your changes while the bot is running.
- Sample Bot - Use /irc reloadbotconfigs to load your changes while the bot is running.
Frequently Asked Questions
- Supports mcMMO admin and party chats.
- Supports FactionChat chat modes. (public, ally and enemy)
- Supports HeroChat Global, all channels or specific channels.
- Supports TitanChat chat manager.
- Supports TownyChat chat manager. See FAQ.
- Supports Dynmap web chat.
- Supports AdminPrivateChat
- Supports CleverNotch bot messages.
- Supports ReportRTS ticket notifications.
- Supports VanishNoPacket. Prevents IRC from announcing vanished players.
- Supports Shortify URL shortener. 1.8 and newer only
- Supports RedditStream notifications.
- Supports SuperVanish
- PircBotX: The PircBotX classes are included in the plugin jar file.
- Vault. If you need to use the %GROUP% token then install Vault.
- ProtocolLib. If you need to use the custom tab list then install ProtocolLib.
Permissions (see plugin.yml)
|irc.<COMMAND>||op||Every command requires a permission node.|
|irc.message.chat||true||Receive IRC chat messages|
|irc.message.gamechat||true||Send game chat to IRC|
|irc.message.action||true||Receive IRC chat actions (/me)|
|irc.message.quit||false||Receive IRC quit messages|
|irc.message.join||false||Receive IRC join messages|
|irc.message.disconnect||op||Receive IRC disconnect messages|
|irc.message.connect||op||Receive IRC connect messages|
|irc.message.kick||false||Receive IRC kick messages|
|irc.message.nickchange||false||Receive IRC nick change messages|
|irc.message.topic||false||Receive IRC topic messages|
|irc.message.part||false||Receive IRC part messages|
|irc.tablist||op||Display IRC users in tab list|
|/irc load [bot.yml]||Load bot file|
|/irc unload [bot.yml] (disable)||Unload bot and optionally disable it|
|/irc reload||Reload entire plugin (Don't use this to load changes to your configs and bots. Use reloadconfig and reloadbotconfigs instead)|
|/irc reloadconfig||Reload config.yml|
|/irc save||([bot])||Save bot configuration(s) to disk|
|/irc reloadbot||[bot]||Reload the bot config and reconnect|
|/irc reloadbots||Reload all bot configs and reconnect|
|/irc reloadbotconfig||[bot]||Reload bot config without reconnecting|
|/irc reloadbotconfigs||Reload all bot configs without reconnecting|
|/irc connect||([bot])||Connect to configured IRC serve|
|/irc disconnect||([bot])||Disconnect from configured IRC server|
|/irc listbots||List loaded bots|
|/irc list||([bot]) ([channel])||List users in a channel|
|/irc kick||[bot] [channel] [user(s)]||Kick user(s) from a channel|
|/irc op||[bot] [channel] [user(s)]||Op user(s) in a channel|
|/irc listops||[bot] [channel]||List auto ops for a channel|
|/irc motd||[bot]||Display IRC motd.|
|/irc deop||[bot] [channel] [user(s)]||DeOp user(s) in a channel|
|/irc addop||[bot] [channel] [user mask]||Add user mask to op list|
|/irc removeop||[bot] [channel] [user mask]||Remove user mask from op list|
|/irc server||[bot] [server] ([true|false])||Set IRC server for bot. Optionally set autoconnect|
|/irc mute||([bot]) ([channel]) [user(s)]||Mute user(s) in a channel|
|/irc unmute||[bot] [channel] [user(s)]||Unmute user(s) in a channel|
|/irc nick||[bot] [nick]||Change the bot's IRC nickname|
|/irc login||[bot] [login]||Change the bot's IRC login|
|/irc join||[bot] [channel]||Join a channel|
|/irc leave||[bot] [channel] ([reason)]||Leave a channel|
|/irc whois||([bot]) [nick]||Get IRC user's whois info|
|/irc say||[bot] [channel] [message]||Make the bot say something|
|/irc send||([bot]) ([channel]) [message]||Send a message to a channel|
|/irc debug||([t|f])||Enable debug mode|
|/irc messagedelay||[bot] ([milliseconds])||Get or set IRC message delay. (Default: 1000)|
|/irc msg||([bot]) [user] [message]||Send a private message to IRC user|
|/irc ctcp||([bot]) [user|channel] [message]||Send ctcp command to user or channel.|
|/irc notice||([bot]) [user|channel] [message]||Send notice command to user or channel.|
|/irc sendraw||([bot]) [command]||Send raw command to IRC server.|
|/irc updatecheck||([stable|dev])||Check for new versions of PurpleIRC.|
IRC User Modes
- AuthMe: If you are running the AuthMe plugin you will need to set enableAntiBot to false.
- Tickets: Please reports bugs using the ticket tracker.
- IRC: I'm usually hanging out in #PurpleIRC on irc.esper.net. If I'm awake you can chat with me there.
- PM: Feel free to send me private messages here.
Thought this was worth its own comment. I surrounded the contents of the offending function (playerTokenizer) with a try..catch and had it spit out a stack trace.
I hope you find this illuminating. It does seem to make things pretty obvious: http://pastebin.com/isUDCFtB
It appears the issue is: player is an invalid name due to the structure of chat messages. getPlayerUuid fails and returns null because player is an invalid name Missing subsequent null check, getOfflinePlayer throws an excpetion, and the rest is history.
Sorry, I should have mentioned we are using 1.8 spigot I noticed http://h.cnaude.org:8081/job/PurpleIRC-spigot/33/ has the same check-in note (but is for 1.8) so I went with http://h.cnaude.org:8081/job/PurpleIRC-spigot/36/ to contain that fix and any others you've made.
Since this problem occurs intermittently it's impossible to say if its solved or not, however if it runs for 24 hours without dropping irc messages I think we can say with fairly good confidence that the issue is resolved. I will post again in that amount of time to let you know.
Edit: Encountered the problem in 33 and 36 still. I'll do a little looking into too.
What version of Vault, CraftBukkit and permissions plugin are you running?
Edit: I have an idea what is going on.. Ill get a new builld out really soon.
I'm still getting a bug with the very latest dev PurpleIRC.
After a while our server stops displaying chat messages, with debug I see this:
I glanced at the code, and it's definitely catching an exception, but clearly it's not dealing with patching up the aftermath properly. It still fails to display the messages.
Awesome did not know this
I believe the newest dev build you mentioned on spigot does it for me :-)
What behavior would you prefer when this happens?
Head over to the spigot resource page for the 1.8 builds. The latest build has this fix. http://www.spigotmc.org/resources/purpleirc.2836/
Also the very latest dev builds are always on my jenkins server. http://h.cnaude.org:8081/job/PurpleIRC-spigot/
When will we get a new build for 1.8? The fix in https://github.com/cnaude/PurpleIRC/commit/5bf78079129cbdbd2d958fbb53c06eaf7932b1e8 is critical. We've been having chat just stop working and need to restart the server because of this bug.
Could you perhaps change PurpleIRC's behaviour when it "encounters" an offline IRC server?
I'm not running my servers 24/7 but it often happens that the Minecraft server is running longer than my IRC server, and then PurpleIRC is filling my server log every 5 minutes:
edit: d'oh...wrong website (i'm running Spigot)
I have not created any API's yet. However, the IRC messaging methods are public. You should be able to send a message to any channel or user like this.
Any plans to allow developers to make use of an api? Maybe to allow us to send messages to certain channels from our own plugins?
Now it's an IRC bot works 100%. Good Job give yourself a few extra diamond blocks on me, :P
Well uh ya.
[PurpleIRC] This plugin is not compatible with Spigot 1.8. Please download the Spigot version from the Spigot site. So I updated and same. Nice fix so what ver do I need?
If not 1.8 kinda pointless
Latest build resolves this. http://h.cnaude.org:8081/job/PurpleIRC/
[Server thread/INFO]: This server is running CraftBukkit version git-Spigot-da32fe1-df0b4c1 (MC: 1.8) (Implementing API version 1.8-R0.1-SNAPSHOT)
Did update and same same bot not relaying chat from anyone in IRC that doesn't have a MC account..
Checking for exact player matching Slott ircChatToGameTokenizer: null player: Slott Tokenizing Slott playerTokenizer: 1
And msg never makes it to MC.
Update: remove the folder in the plugins and restart the bot reset all the info to connect to the irc / Turned on debugging and and .. SAME nota.
Yet more testing. OK renamed bot in AO to Notch NOTA. Tryed my kids account that has connected to the server Nota. now I am lost for ideas. the AO bot will relay anything so that's not the problem.
If running Spigot please try the latest build: http://h.cnaude.org:8081/job/PurpleIRC-spigot/11/ If running CraftBukkit please try: http://h.cnaude.org:8081/job/PurpleIRC/240/
What version of Spigot and Vault are you running?