Towny Chat Changelog

v0.1:
 - Initial release
v0.2:
 - Fixed players entering regex fields in chat crashing {msg}.
 - changed PLAYER_CHAT event to run earlier so we triger before other chat plugins.
 If players are using chat modes we need to run first to cancel the chat event for other plugins.
v0.3:
 - TownyChat now only enables itself if Towny successfully starts.
 - Fixed missing {} around modplayername.
v0.4:
 - Fixed custom channel chat not showing in the console.
v0.5:
 - Added auto modes for chat.
 Type '/tc' to set town chat mode. All text typed from then on will be sent to town chat.
 While in a chat mode you can still talk in other channels by using the channel commands eg. '/nc hi'.
 While in a chat mode you can talk in global chat with '/g text here'.
 to clear all chat modes '/g'.
 - Added a new permission node for global chat ('/g') of 'towny.chat.global'.
 - Added {worldname} as an accepted entry.
 - Fixed '/g' mode to add formatting.
v0.6:
 - Changed global chat to pass through bukkits chat process instead of our own (allows other plugins to see it again).
v0.7:
 - Added support for Essentials mute and ignore features. Players on ignore will still be seen in town and nation chat.
 - Added craftIRC 3.1 support
 
 Add a channel tag of 'admin' to the
 receiving channel in the craftIRC config.
 
 Disable Auto paths and add the following to the 'paths:' section

 - source: 'minecraft'
 target: 'admin'
 formatting:
 chat: '%message%'
 
 - source: 'admin' # These are endpoint tags
 target: 'minecraft' #
 formatting:
 chat: '%foreground%[%red%%ircPrefix%%sender%%foreground%] %message%'
v0.8:
 - Fixed {townformatted} and {nationformatted} to display correctly.
 - Updated to use new per world channel formats.
v0.9:
 - TownyChat now passes player chat to Dynmap.
v0.10:
 - Code rewrite for new code locations in Towny.
 - Added a spam filter so players can only send one message every two seconds.
 - Added the ability to restrict channel ranges.
 
 All custom channels (not town or nation) can now have an extra value
 appended to signify a range limit on chat.
 
 -1 = no limits
 0 = same world only
 any positive value = limited range (blocks) in the same world.
 
 eg. - /g,,,towny.chat.global,-1
 or a local channel that covers 100 blocks range
 /l,&f[local],&f,towny.chat.local,100
 
 - Added a new mode '/towny spy', or '/res set mode spy'.
 This requires you have the permission node 'towny.chat.spy' and be using TownyChat.
 If you toggle this mode on you will be able to see all town/nation/global, and all custom channel chat.
 - If a player doesn't have the 'towny.chat.global' permission node, any open chat will pass through for any other plugins to handle.
v0.11:
 - Fixed channel tag for the global channel.
 - Fixed range test trying to cross worlds.
v0.12:
 - Major rewrite to move all channel handling into TownyChat.
 - All chat channels are now defined in their own file 'Channels.yml' found in the Towny/Settings folder.
 - Range limits can now be applied to town and nation chat.
 - You can create two identical channels, one with a range limit and one without. The player will use whichever they have permission for.
 - towny_default_modes now uses the full chat channel name. To allow use of the default channel it would be towny_default_modes: 'general'
 - Moved ALL chat settings to 'ChatConfig.yml' found in the Towny/Settings folder.
v0.13:
 - Fixed channel modes when defaulting to a global channel not to place you in one of your own (Lonely spam).
v0.14:
 - The default permission node for the global chat channel has changed to 'towny.chat.general'
 - TownyChat now registers is't permissions with Bukkit.
v0.15:
 - Updated for the new Bukkit Event system.
v0.16:
 - Lowered event priorities to HIGH to allow other plugins the chance to beat us to the event and cancel.
 - Fixed Op's with no default mode set using local chat. It will now try global, then world, then local in it's search order.
 - Added a new command '/townychat reload'.
 - spam_time now accepts smaller values (eg. 0.5).
v0.17:
 - If a player has no permissions for any channel but we are still set to modify chat, remove the channelTag and msgcolour entries.
 - Fix Spam timer to work in milliseconds so values of 0.5 actually work.
 - Fix craftIRC hook to not spam console with an invalid number format error if the wrong version is detected.
 - Add support for our updated HeroicDeath jar (hopefully someone will take over support for heroic Death now it's updated).
v0.18:
 - Added craftIRC channel tag support. A new entry per channel will allow you to set the endpoint tags for all channels to craftIRC (craftIRCTag: 'admin').
 - Set default for new HeroicDeath interface to prevent new config errors.
v0.19:
 - Fix an error on startup if not using HeroicDeath.
 - Remove old style event handler hook for old HeroicDeath.
v0.20:
 - Add serialization of numeric world names.
 - Fix spacing in default formats.
 - Unregister the 'towny' endpoint tag so it won't error when performing a reload.
v0.21:
 - Fix getAllPermissions in ChannelsHolder (thanks phrstbrn).
 - Error trap registering permissions.
 - Fix a possible small memory leak (phrstbrn).
v0.22:
 - Change channel sub classing method to allow 3rd party plugins to create their own channel types (phrstbrn).
v0.23:
 - Update for craftbukkit-1.1-R6.
v0.24:
 - Update to reflect permission changes in Towny.
v0.25:
 - Update to account for the refactoring in Towny.
v0.26:
 - Throw a "fake" PlayerChatEvent which will allow TownyChat to have much increased compatibility with other plugins (dumptruckman).
v0.27:
 - Cancel our own event after all other plugins have had a bash at the formatting.
v0.28:
 - Forget using any fake events and move to setting recipients. We should now be compatible with just about every other chat modifying plugin there is.
v0.29:
 - Fix a duplicating chat issue when relaying via craftIRC.
 - Reload TownyChat if we detect craftIRC perform a reload (no more unregistered tags after reloading craftIRC).
v0.30:
 - Stop adding extra logs now that chat is being passed back to bukkit.
v0.31:
 - Update for the Bukkit move to AsyncPlayerChatEvent.
 - Fix in onPlayerCommandPreprocess for an empty message error.
v0.32:
 - Don't check version of CraftIRC. Will work with all versions post 3.1.
 - Fix for not colouring resident titles.
v0.33:
 - Only modify the chat format if modify_chat = true for all channels.
v0.34:
 - Make sure craftIRC is loaded first (if using)
v0.35:
 - Fix chat spy.
v0.36:
 - Added new channel handling support (thanks to mcunha/andrepl).
 Adds new commands...
 
 channel:
 aliases: [ch]
 description: Channel leaving and joining
 usage: /channel leave|join channel
 
 leave:
 description: Leaves a channel
 usage: /leave channel
 permission: Requires a permissions per channel to use - towny.chat.leave.{channelname}
 
 join:
 description: Joins a channel
 usage: /join channel
 permission: Requires a permissions per channel to use - towny.chat.join.{channelname}
 
 chmute:
 aliases: [mute]
 description: Mutes a player in a channel
 usage: /chmute channel player
 permission: townychat.mod.mute
 
 mutelist:
 description: Displays mute list for a channel
 usage: /mutelist channel
 
 chunmute:
 aliases: [unmute]
 description: Unmutes a player in a channel
 usage: /chunmute channel player
 permission: townychat.mod.unmute
 
v0.37:
 - Remove mute alias on 'chmute' So TownyChat does not block Essentials mute.
 
v0.38:
 - Fire chat Async so it matches all other chat.
v0.39:
 - Ignore cancelled commands and chat.
v0.40:
 - Allow global chat to pass through un-changed if there are no channels to talk in (requires setting modify_chat: false).
v0.41:
 - Adapt to Bukkit API Change.
v0.42:
    - Re-add message for when players chat but no one can hear them. Affects mostly localchat but can also been seen when players are the only one in a channel.
v0.43:
	- add a new chatconfig.yml option:
		- modify_chat.alone_message: (default: false) - If true any player who speaks in a channel in which he cannot be heard, either by being along in the channel or out-of-range of another player in his chat channel, that player will see a message saying they cannot be heard.
v0.44:
    - add a /ch list command to list what channels a player is currently listening to. Courtesy of Yaiyan.
v0.45:
    - Add chatconfig.yml option for modifying the 'no one can hear you' message. 
v0.46:
    - Add ability to use colour codes (&) in chat line. Requires townychat.chat.color which is not given by default.
v0.47:
    - Add ability to use Bold (&l), Italics (&o), Underline (&n), Magic (&k), Strike (&m) and Reset (&r) in the channel_format lines/tag_formats/directly in the chat line.
v0.48:
    - Add new chatconfig tags {permuserprefix}, {permusersuffix}, used to show only user prefix and suffixes. Requires Towny 0.91.4.8 or newer to function properly!
v0.49:
    - Add new chatconfig tags {permgroupprefix}, {permgroupsuffix}, used to show only group prefix and suffixes. Requires Towny 0.91.4.13 or newer to function properly!