PurpleIRC
About PurpleIRC
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).
Wiki
- For additional information see the PurpleIRC Wiki.
Features
- 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.
CraftBukkit Versions
- 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
- 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
Links
Chat Hooks
- 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
Other Hooks
- 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
Dependencies
- 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)
node | default | description |
---|---|---|
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 |
Commands
command | args | description |
---|---|---|
/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
mode | description |
---|---|
i | IrcOp |
o | Operator |
v | Voice |
h | Half Op |
q | Channel Owner |
s | Super Op |
Change Log
Known Issues
- AuthMe: If you are running the AuthMe plugin you will need to set enableAntiBot to false.
Additional Help
- 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.
Other
Bitcoin: 1P44sYgXLejo35vANvNfPTY56ANSC5w4dg
Am i missing something or do i have to make all this for EVERY SINGLE server command? my server has 1750 possibilities?
msg:
modes: '*'
private: true
ctcp: false
game_command: '@msg'
extras_commands: []
private_listen: true
channel_listen: true
user_masks: []
perm: ''
output: '%RESULT%'
cool_down: 0
You can use wildcards in the game_command like this:
@LaserCucumber
PurpleIRC uses a single shared bot.
@cnaude
I'm asking if each player gets its own "bot"/connection to IRC like IRCTransport does so we can see who is connected in game from the IRC channel list, which also allows players to speak directly into the channel rather than through a single bot, which is much uglier.
@LaserCucumber
I'm sorry, what is your question?
No 1 bot per user so we can see connected users from the IRC channel?
@YuriT
Please post this issue to the ticket tracker. https://github.com/cnaude/PurpleIRC/issues Please include the version information for your plugins and MC server.
Hi. having a problem talking from IRC to server. Here is the log Nothing is displayed in chat and debug log says:
04.03 13:57:21 [Server] ERROR onMessage: null
04.03 13:57:21 [Server] INFO [DEBUG] customPrefix after: [IRC]
04.03 13:57:21 [Server] INFO [DEBUG] customPrefix before: [IRC]
04.03 13:57:21 [Server] INFO [DEBUG] [P]Raw message: [IRC] %MESSAGE%
04.03 13:57:21 [Server] INFO [DEBUG] getWorldColor: color => CLASSIC
04.03 13:57:21 [Server] INFO [DEBUG] getWorldColor: worldName => CLASSIC
04.03 13:57:21 [Server] INFO [DEBUG] getWorldAlias: alias => CLASSIC
04.03 13:57:21 [Server] INFO [DEBUG] getWorldAlias: worldName => CLASSIC
04.03 13:57:21 [Server] INFO [DEBUG] getPlayerGroup (Yoshkeen): SuperPerms no group permissions.
04.03 13:57:21 [Server] INFO [DEBUG] getPlayerGroup: Yoshkeen
04.03 13:57:21 [Server] INFO [DEBUG] Tokenizing Yoshkeen(O: true)
04.03 13:57:21 [Server] INFO [DEBUG] Checking for exact player matching Yoshkeen
04.03 13:57:21 [Server] INFO [DEBUG] broadcastChat [DW]: test message
04.03 13:57:21 [Server] INFO [DEBUG] Yes, irc-dynmap-web-chat is enabled...
04.03 13:57:21 [Server] INFO [DEBUG] Checking if irc-dynmap-web-chat is enabled ...
04.03 13:57:21 [Server] INFO [DEBUG] Message dispatched for broadcast...
04.03 13:57:21 [Server] INFO [DEBUG] processMessage: test message
04.03 13:57:21 [Server] INFO [DEBUG] [isValidChannel] [c: #asharpminer] [b: true]
04.03 13:57:21 [Server] INFO [DEBUG] Shortify: false
04.03 13:57:21 [Server] INFO [DEBUG] Message caught <Yoshkeen>: test message
Hello,
Any plans to port PurpleIRC over to Sponge? Love the plugin!
Thanks!
@zoredache
Yes. Just give them irc.mute and irc.unmute permission nodes.
Is there any method to delegate the ability to use
/irc mute
and/irc unmute
to the non-op staff on my server?If someone gets a bit rowdy in the IRC channel, it would be nice to at least give staff the ability to mute the source of the problem.
@simply_lime
Please have a look at the Wiki. There are installation and configuration instructions there.
hey, i'm a complete noob to this and cant find a tutorial/guide on this and how to set it up. can any one [point me to where in can get some info on ti?
@cnaude
Looks great :) thank u sir!
@jaggy80
Please try http://h.cnaude.org:8081/job/PurpleIRC-spigot/129/
@cnaude
Sorry, thought I was on a newer version than that! Same error I think:
pastie.org/10379855
@jaggy80
Please try version 1.0-126.
Hello again :) Getting an error every time someone uses factionchat:
http://pastie.org/10379322
Factionchat Build 39 PurpleIRC 1.0-117
@DMahalko
I wasn't aware there was a new Cauldron out there. I'll see what I can do.
PurpleIRC v2.1.14-304 is acting bizarre, not writing a fresh config file that it demands.
Environment:
DireWolf 2.0 for MC 1.7, pack release 1.5
KCauldron version 1.7.10-1481.146 (MC: 1.7.10)
(Implementing API version 1.7.10-R0.1-SNAPSHOT)
Forge Mod Loader version 7.99.4.1481 for Minecraft 1.7.10
Vault_1.5.3.jar
PurpleIRC crashes on startup:
Error occurred while enabling PurpleIRC v2.1.14-304 (Is it up to date?)
java.lang.NullPointerException
at com.cnaude.purpleirc.PurpleIRC.loadCustomColors(PurpleIRC.java:466) ~[?:?]
After much poking around and looking at the source, PurpleIRC is expecting a color table and bombing on startup if it's not in the config. But it doesn't write the color table if the config is empty.
So I copied the color tables into the config.yml:
https://github.com/cnaude/PurpleIRC/blob/master/src/main/resources/config.yml
But something still wasn't right, because when chat comes over the IRC, the console gets spammed with:
ColouredConsoleSender]: INVALID TEMPLATE: DW-20:irc-chatESC[m
So then I figured that if PurpleIRC is barfing because the color table isn't in the config, it might still be borked because the rest of the config from that web page wasn't present.
So next I copied the entire config from the above page into a new PurpleIRC config.yml, and now suddenly everything is working.