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).