Continued development can be found at the new premium resource here.

Herochat 5

A Chat Channel System for play.hc.to

Herochat 5 is a complete rewrite of the previous version of Herochat. For those of you unfamiliar with Herochat, this plugin provides a highly configurable channel system for SMP chat. Herochat's primary purpose is to make player chat on large servers both manageable and readable. Each chat channel provides a chatroom for channel members to discuss in without broadcasting messages to everyone on the server at once. Players can be in multiple channels at once but can only have one active or focused channel that they speak in at a time.

Upgrading from Herochat 4.x? Read this:

If you are upgrading from Herochat 4.x or earlier, you will need to ditch your configs - all of them. Sorry, but it had to be done. There are now commands to modify channels in-game so hopefully setting up your channels won't be as painful.

Main Features

  • Configurable chat channels
  • Password protected channels
  • Permissions based protections for almost every imaginable action
  • Channel moderation (kicks, bans, mutes, etc.)
  • Quick messaging (messaging another channel without changing your active channel)
  • Private messaging (/msg or /tell) including persistent private conversations
  • Simple integration with most chat tags from other plugins (eg. Towny, Factions)
  • Regex-based message censorship


This plugin requires Vault


Permission Purpose  
herochat.create allows channel creation  
herochat.save allows forcing saves on player/channel data  
herochat.reload allows forcing reloads on player/channel data  
herochat.mod allows use of /ch mod  
herochat.mute allows use of /ch mute  
herochat.pm allows use of /msg  
herochat.emote allows use of traditional emotes  
herochat.emote.<channel> allows using emotes in a channel  
herochat.join.<channel> allows joining a channel  
herochat.leave.<channel> allows leaving a channel  
herochat.speak.<channel> allows speaking in a channel  
herochat.kick.<channel> allows kicking from a channel  
herochat.ban.<channel> allows banning from a channel  
herochat.mute.<channel> allows muting in a channel  
herochat.remove.<channel> allows deleting a channel  
herochat.color.<channel> allows &c style colors in chat  
herochat.info.<channel> allows use of /ch info on a channel  
herochat.autojoin.<channel> forces automatically joining a channel upon first login  
herochat.focus.<channel> gives the ability for players to focus the channel  
herochat.force.join.<channel> forces a player to join a channel on every login  
herochat.force.leave.<channel> forces a player to leave a channel on every login  
herochat.modify.nick.<channel> allows changing a channel's nick  
herochat.modify.color.<channel> allows changing a channel's color  
herochat.modify.distance.<channel> allows changing a channel's distance  
herochat.modify.format.<channel> allows changing a channel's format  
herochat.modify.shortcut.<chanenel> allows changing whether a channel allows quick messaging  
herochat.modify.password.<channel> allows changing a channel's password  
herochat.modify.verbose.<channel> allows changing whether a channel shows join/leave messages  
herochat.admin.stealth allows being hidden from 'No one hears you' detection  
herochat.admin.unignore allows the user to not be ignored  
herochat.color.colortype.channel allows for bold/italics/etc (only in latest dev)

Some of these permissions are granted automatically to moderators of a channel (these can be changed in the main config). Most servers will want to grant everyone herochat.join.*, herochat.speak.* and herochat.leave.* and then revoke permissions for restricted channels using the appropriate negated permissions (eg. ^herochat.join.staff in bPermissions).


Channels are created using /ch create <name> [<nick>] which takes the channel's name and nickname (optional) as arguments. Once this is done, a configuration file for the channel is created in plugins/Herochat/channels. The channel's settings can then be modified either by hand or via the "/ch set" command in game. Type /ch set ? to get more information on this command. The available configuration settings are listed and explained below.

If you make changes by hand (via a file editor) you can use /ch reload to load the changes. This will overwrite any changes made by commands in-game during this time. On the other hand, if you want to force a save of changes made via in-game commands, you can use /ch save.

Setting Description  
name the channel's name  
nick the channel's nickname  
password the channel's password (leave blank for no password)  
color the channel's color (use the codes or common names from Wiki)  
distance the maximum distance between players for messages to be heard (0 is global)  
shortcutAllowed allows use of /<nick> <msg> to quickly send messages without changing focus  
worlds a list of the channel's allowed worlds  
bans a list of banned players  
mutes a list of muted players  
moderators a list of moderators  
format the channel's format (see the Message Format Tags section for available tags)  
verbose enables join/leave messages  
focusable enables setting a channel as active with /ch <channel>

Message Format Tags

Tag Replacement  
{default} the default format (found in config.yml)  
{name} the channel's name  
{nick} the channel's nick  
{color} the channel's color  
{msg} the message  
{sender} the sender's display name  
{plainsender} the sender's user name  
{world} the sender's world  
{prefix} the sender's prefix  
{suffix} the sender's suffix  
{group} the sender's primary group  
{groupprefix} the sender's primary group prefix  
{groupsuffix} the sender's primary group suffix  
{convoaddress} To or From (only used for private messages)  
{convopartner} the sender or receiver (only used for private messages)

Versions 5.5 and later of Herochat support internationalization. The locale is specified by the 'locale' setting in config.yml, which defaults to en_US (English/America). Available localizations currently include en_US (English/America), de (German), and pt_BR (Portuguese/Brazil). If you are interested in localizing Herochat into a language not listed here, please let me know through a PM.

For Developers

You can find out information about channel-based messages by listening for a ChannelChatEvent. This custom event contains the message sender (a Chatter object), the channel the message is being sent to, the result of the messaging attempt (a Chatter.Result object), and the original Bukkit PlayerChatEvent that resulted in the ChannelChatEvent. If you change the channel the message is being sent to, you should call event.setResult(event.getSender().canSpeak(newChannel)) unless you want to ignore the normal checks before sending the message.

Frequently Asked Questions (FAQ)

  • Q: What does <channel> mean in the permissions?*
  • A:* The <channel> part of a permission should be replaced with the appropriate channel's name in all lowercase.
  • Q: How do I get this to show data from plugin XYZ?*
  • A:* Every plugin handles chat modifications differently. Many plugins will search a message's format for a particular string (such as {town} in Towny's case) and replace it with a piece of data. You will need to refer to each plugin's documentation to see what it expects in the message format.
  • Q: Why doesn't autojoining work?*
  • A:* Granting the herochat.autojoin.<channel> permission only has an effect the FIRST time a person logs into the server. More specifically, this only takes effect if the player doesn't have a chatter file when they log in. If a user has logged in before (with Herochat active) then their previous channels will be loaded and autojoins will have no effect. This behavior has not changed from previous version of Herochat.
  • Q: Why do all my messages say [world] when I have no {world} tag in the channel format?*
  • A:* Another plugin is adding the [world] text. The most common culprit is Multiverse. Consult the Multiverse config to disable it.
  • Q: What are all the commands?*
  • A:* Type /ch help in-game to see a list of Herochat's commands. You can get more detailed information on a particular command by providing a question mark (?) as the first and only argument, i.e. /ch join ? will provide more information on the join command.
  • Q: Can you remove a command? XYZ command is conflicting with another plugin.*
  • A:* Bukkit still doesn't allow dynamic unregistration of commands AFAIK, so this isn't possible. What you can do, however, is open up the plugin.yml file inside Herochat.jar and remove any unwanted commands/aliases.
  • Q: Why are my admins kicked out of every channel when they relog?*
  • A:* You're probably using PEX and you've probably given your admins * as a permission. This means they are given the herochat.force.leave.* permission and are forced out of every channel when they log in. You'll need to stop granting * or negate the herochat.force.leave.* permission to fix this.




Issue reports and feature requests for HeroChat should be posted on Mantis. You can also join #Heroes on the esper.net IRC server to ask questions.


As many of you know, creating and maintaining plugins like this one requires a lot of time and effort. If you enjoy using Herochat, please consider donating to support its development.


  • To post a comment, please or register a new account.
Posts Quoted:
Clear All Quotes

About This Project

  • Project ID
  • Created
    Dec 19, 2011
  • Last Released File
    Apr 13, 2017
  • Total Downloads
  • License



Recent Files