Inactive [CHAT] HeroChat v4.10.3 - Comprehensive Chat Channel Plugin [1060]

Discussion in 'Inactive/Unsupported Plugins' started by DThielke, Jan 26, 2011.

  1. Offline

    DThielke

    HeroChat The Chat Channel Plugin (v 4.10.3)
    Download HeroChat
    Source Code on GitHub This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
    Redmine (Issue/Feature Tracker)

    Permissions 3.0
    Rcjrrcjr has been working quite hard on this upgrade to Permissions. However, it currently still suffers from a number of bugs. The most important of these which directly affects HeroChat is the non-functioning of prefixes and suffixes. There are less-than-pretty workarounds, but I'm refraining from fully supporting an update until Permissions 3.1 is released which should include a number of significant bug fixes. When this does occur, however, I have a build ready for you guys that should work. You can download it here. Again, I highly suggest not using this until Permissions 3.1 is released unless you really don't care about prefixes and such.

    See you when I get back!

    Is your config resetting when you make changes?
    If you make changes to the config while the server is running, you need to use the /ch reload command to make the changes stick. I wish this message wasn't necessary, but people only seem to read things in big, bold, red text (if at all).

    Have a problem? a feature request? Go here.
    HeroChat now has its very own redmine found here. If you have an issue or would like to suggest a new feature, I urge you to file it via redmine. I will be checking this much more often than this thread from here on out.

    Show your thanks! Maintaining plugins like HeroChat is very nearly a full time job. If you enjoy my plugins and appreciate the support I provide, then please consider providing some support of your own. Donating even a tiny amount keeps me motivated and makes me feel loved so go ahead and donate!

    What is HeroChat? HeroChat brings a multiple channel system to Minecraft. Through the use of highly customizable channels, even the largest of servers can have manageable and readable chat.

    Features
    • Chat channels
      • Highly configurable
      • Public, private and password protected channels
      • Configurable custom message formatting including colors and health bars
      • Channel moderation
      • Local channels
    • Ignore lists
    • Regex-based censorship
    • User setting persistence
      • Automatically saves your settings when you log out
    • Permissions integration
      • Prefixes and suffixes
      • Restrict joining and speaking in channels
      • Restrict important commands
    • CraftIRC integration
      • Relay messages between Minecraft and IRC
      • Configurable links between in-game and IRC channels
    How do I install it? Take a look at the installation and configuration wiki found here.

    How do I use it? Take a look at the usage wiki found here.

    A Message to Users
    Thanks for all your support! I will do my best to keep this plugin updated and bug free. If you have any issues or feature requests, feel free to either leave a message here or find me in #herochat on EsperNet.

    Extra special thanks to my donors: TheYeti, playnight

    Change Log
    Show change history (open)

    Version 4.10.3
    • Fixed players not rejoining private channels when Permissions isn't loaded first.
    Version 4.10.2

    • Fixed a bug with {group} when not using Permissions
    Version 4.10.1

    • Fixed a bug with CraftIRC join/leave events ignoring the join-messages option
    • Added the {group} tag
    • Added the {groupprefix} tag
    • Added the {groupsuffix} tag
    Version 4.10.0

    • Added the separate-chat-log option
    Version 4.9.0

    • Renamed the global craftIRC-tag option to craftIRC-prefix to avoid confusion
    • Replaced the channel specific craftIRC-tags option with game-to-IRC and IRC-to-game to allow one-way communication
    Version 4.8.11

    • Added color support for the irc-tag
    Version 4.8.10

    • Fixed a bug with privileged channels and reloads
    Version 4.8.9

    • Added the local-distance option to set the local distance on a per-channel basis
    Version 4.8.8

    • Removed debugging code I left in accidentally
    Version 4.8.7

    • Fixed an infinite loop with certain censors
    Version 4.8.6

    • Updated for CraftBukkit 612
    Version 4.8.5

    • Updated for CraftBukkit 602
    Version 4.8.4

    • Added a permissions check before rejoining channels during a /ch reload
    Version 4.8.3

    • User settings are now saved before /ch reload does its thing
    Version 4.8.2

    • Added one-time tells to the /tell command
    • Added the {receiver} tag for use in tell formats
    Version 4.8.1

    • Changing focus now ends /tell conversations
    Version 4.8.0

    • Added the cross-world-chat channel option
    • Separated user data into multiple files
    • Added the /ignore alias for /ch ignore back in
    Version 4.7.6

    • Minor improvement to command handling
    Version 4.7.5

    • Minor fix for certain command specific help pages
    • Added global toggle (toggles all channels) to /ch toggle
    Version 4.7.4

    • Minor internal change to how format tags work
    • Minor change to how messages are sent to CraftIRC (allows player specific tags such as {prefix})
    Version 4.7.3

    • Fixed issue with CraftIRC messages being repeated in IRC
    Version 4.7.2

    • Fixed a bug where /qm g ? would show the command help rather than sending a message
    Version 4.7.1

    • Fixed a minor formatting bug regarding join/leave messages in the console
    Version 4.7.0

    • Added the /tell command to create private conversations
    • Added the incoming-tell-format and outgoing-tell-format options to the config
    Version 4.6.0

    • Added the /ch toggle command to allow temporary enabling/disabling of channels
    Version 4.5.0

    • Added custom replacements to the censor feature in the format 'censoredword;replacement'
    • Added the 'herochat.color' permission to allow players to use colors on the fly in their messages
    • Added the mute (per channel) and gmute (global) commands
    • Revamped help menu
    • Added command specific help. Type /<command> ? to use it (ie. /ch create ?)
    Version 4.4.3

    • Fixed a bug when creating a channel with all 5 arguments provided
    Version 4.4.2

    • Improved command handling
    • Fixed a bug where commands longer than the actual commands were being accepted
    • Removed the {color.COLOR} tags - use the usual &c colors now
    • Replaced the {color.CHANNEL} tag with {color}
    Version 4.4.1

    • Fixed a bug with colors in message formats containing underscores
    Version 4.4.0

    • Added regex based word censor
    Version 4.3.7

    • Fixed any and all line wrapping issues (thanks to Bukkit for fixing MC's color line-wrapping bug)
    Version 4.3.6

    • Added the reserved channel name list back in
    • Fixed a potential issue with the /<channel> <message> shortcut command
    Version 4.3.5

    • A default configuration file is now created if you do not have one
    Version 4.3.4

    • Removed the DEBUG message I left in
    Version 4.3.3

    • Fixed line wrapping issues related to Finnish characters.
    Version 4.3.2

    • Fixed the ignore feature
    Version 4.3.1

    • Quick messaging now also relays to IRC
    • Added an option to configure the format for game->IRC messages
    Version 4.3.0

    • Added CraftIRC support!
    Version 4.2.1

    • Updated the help command to reflect the password additions
    Version 4.2.0

    • Added passworded channels
    • Updated /ch create command to allow passworded channel creation
    Version 4.1.6

    • Fixed a bug related to negative health values.
    Version 4.1.5

    • Fixed an error when using custom display names.
    Version 4.1.4

    • Added full error reporting to Permissions issues.
    Version 4.1.2

    • Added licensing information to source and original post.
    Version 4.1.1

    • Finally found the cause of the line wrapping bug. It's fixed now.
    • Implemented stricter version checking for Permissions. HeroChat will disable itself it the right version isn't found.
    Version 4.1.0

    • Added a message for the plugin's onDisable() method.
    • Re-implemented the old quick message feature.
    • Added world specific channels.
    • Fixed the /ch reload command.
    • Added the {world} and {healthbar} tags.
    • Added an overloaded sendMessage for other plugins to use.
    Version 4.0.2

    • Minor change to make HeroChat compatible with future Permissions version names
    Version 4.0.1

    • Fixed a bug when creating channels without specifying a color
    • Decided on a more logical version naming scheme
    Version 4.00

    • Major internal rewrite
    • Added error handling around Permissions to help identify issues with Permissions configs
    • Temporarily removed iChat support
    • Updated for new versions of Permissions
    • The old /ch channels command is now /ch list
    • The old /ch list command is now /ch who
    Version 3.21

    • Another attempt to fix line wrapping.
    Version 3.20

    • Fixed an issue with the /ch remove command.
    Version 3.19

    • Minor adjustment to line wrapping.
    Version 3.18

    • Moved command handling to onCommand.
    • Removed replaced old quick messaging behavior with /qm <channel> <message>.
    • Reworked /ch create command.
    • Added special /ch help create menu.
    • Updated to add Permissions 2.4 support.
    • Removed GroupManager support.
    Version 3.17

    • Fixed banning and kicking players again.
    Version 3.16

    • Players are no longer able to speak in a channel after being kicked or banned from it.
    Version 3.15

    • Added configurable option that defines the tag used to prefix all plugin messages - defaults to [HeroChat]
    Version 3.14

    • Added support for {healthbar} tags in prefixes and suffixes
    Version 3.13

    • Added support for GroupManager. Permissions should still work though!
    Version 3.12

    • Minor internal changes
    Version 3.08

    • Updated to meet new Bukkit standards
    • Fixed long constructor spam
    Version 3.07

    • Added support for other plugins to send messages to channels without a Player object
    • Bug Fix: another attempt to work around the local chat location issues
    Version 3.06

    • Bug Fix: other plugin commands should work again
    Version 3.05

    • Bug Fix: accidentally forgot to set loaded channels to saved
    Version 3.04

    • Added checks for cancelled events.
    • Bug Fix: channels are now only saved if the "saved" option is added
    Version 3.03

    • Bug fix: local channels should REALLY save and work correctly - seriously.
    • Bug fix: the /ch reload command no longer crashes the client
    Version 3.02

    • Bug fix: local channels should now save correctly.
    Version 3.01

    • Bug fix: fixed missing permissions check when automatically joining channels the first time a user enters the server
    Version 3.00

    • Added optional join/leave messages.
    • Channel moderators can now delete their own channels.
    • Channel moderators can now ban users preemptively, even if they aren't online.
    • All user settings are now saved across logins.
    • Removed the /ch auto and /ch default commands as they are now obsolete.
    • Configurations are now stored in a different file with a slightly different format. Old data.yml files are converted automatically to assist in this change.
    Version 2.67

    • Bug fix: issue with /ch list
    • Bug fix: issue with /ch mod
    Version 2.66

    • Bug fix: fixed an issue where players couldn't toggle off their personal autojoins
    Version 2.65

    • Bug fix: forgot to include plugin.yml in the jar last build
    Version 2.64

    • Fixed censor color code formatting
    Version 2.63

    • Cleaned up code a bit
    Version 2.62

    • Improved line wrapping so the last color of the first line is reapplied for each subsequent line
    Version 2.61

    • Players can now add channels to auto-join with the /ch auto command
    • Minor bug fixes
    Version 2.53

    • Actually removed channel joining messages when plugin is enabled (silly typos)
    Version 2.52

    • Removed channel joining messages when plugin is enabled (or externally reloaded)
    Version 2.51

    • Fixed rejoining default channels when reloading the plugin via Essentials
    Version 2.50

    • Added health bar support from iChat (iChat required)
    • Bug fixes
    Version 2.42

    • Minor bug fix to improve player nickname support
    Version 2.41

    • The join, leave and ignore commands can now also be accessed using /ch join, /ch leave and /ch ignore, respectively
    Version 2.40

    • Fixed major bug with /ch reload command
    • Message formatting now uses Player.getDisplayName() instead of Player.getName()
    Version 2.33

    • More bug fixes (fixed channels not being checked for join permissions when attempting to autojoin channels at startup)
    Version 2.32

    • Various bug fixes
    Version 2.31

    • Prefixes and suffixes can now be user-specific
    Version 2.30

    • Slight configuration file restructuring (I promise this will be one of the last times this occurs)
    • Channels can now have restricted join and speak privileges based on permission groups
    • Channels can choose to override the default format string
    • Minor bug fixes
    Version 2.20

    • Console logging added.
    Version 2.10

    • Fixed bug so that message formatting works properly
    • Hidden channels are now hidden from the channel list even if you're in them
    Version 2.00

    • Massive restructuring of code
    • Redone config files - make sure to read the new configuration section
    • Channel moderation added (/ch kick, /ch ban, /ch mod)
    • Custom message formatting added
    • Local channel distance is now adjustable
    • More bug fixes
    Version 1.10

    • Added the /ch reload command
    • Improved suffix support
    • Improved multi-line message support
    • Various minor bug fixes
    Version 1.00

    • Initial public release!
     
  2. Offline

    Matt L

    How/Can you setup group specific default chats? On my server I use the group "Guest" with no build perms as a form of anti-grief protection. However, I do not want them joining the default global chat. I would like them to have there own default channel so I can talk with them to see if they would like to apply to the server. Is this possible?
     
  3. Offline

    DThielke

    Updated to add the censor feature some of you have requested. It uses regex so you can use any regex pattern to search.

    Change Log
    Version 4.4.0
    • Added regex based word censor
    [MERGETIME="1299792286"][/MERGETIME]
    This isn't possible through the config. However, it's also not really necessary. I would suggest setting your global default to "Guest". This will place everyone, including new users, into that channel upon first login. However, once non-guest users change their focus to a different channel called "Members", for instance, HeroChat will remember their focus and it will remain set to "Members" in future logins.
     
  4. Offline

    Matt L

    alright, sounds good. Can you make "USER" specific channels, not group. Its for a group of people who all live close to each other, but all have different ranks. How would I do this?
     
  5. Offline

    DThielke

    Also not possible, but that's basically what passworded channels are for.
     
  6. Offline

    Matt L

    Pw'ed channels remember whos in it upon logoff and login?
     
  7. Offline

    DThielke

    Yessir.
     
    Matt L likes this.
  8. Offline

    Matt L

    Thanks DT :)
     
  9. Offline

    DThielke

    Always happy to help!
     
  10. Offline

    averad

    Version 4.4.0

    • Added regex based word censor

    THANK YOU!!!!
     
  11. Offline

    DThielke

    :D I'm interested in seeing what sorts of crazy regex patterns you guys come up with (assuming anyone bothers to do more than basic words).
     
    imaxorz likes this.
  12. Offline

    imaxorz

    ^ +1!!!

    How exatcly does the filter work?

    For example if I censor the word "ass" then type assassin I get ******in.
     
  13. Offline

    DThielke

    To filter the word 'ass' exactly as is, no shorter or longer, you would use '\bass\b'. The \b's are special characters that denote the start and end of a word. This might seem unnecessarily complicated, but the beauty of regex is apparent not with basic words, but with more complex patterns. For instance, you could use '\ba+\w?s\w?s+\b' to catch a number of different forms of 'ass', including 'aaaaass', 'aaasssssss', 'a s s', etc.

    If you want to learn how to create these more complex patterns, a quick google search for regex tutorial should provide you with plenty of resources. I find this guide does a good job of explaining everything for someone completely unfamiliar with it.
    [MERGETIME="1299823680"][/MERGETIME]
    Minor update. Thanks for willystylee for pointing out this bug.

    Change Log
    Version 4.4.1
    • Fixed a bug with colors in message formats containing underscores
     
  14. Offline

    imaxorz

    ^ oh I see. Thats very awesome!

    Definitely going to look through that tutorial.

    Thank you.

    Also, I'm running CB531 and no issues with Hero Chat.
     
  15. Offline

    DThielke

    Update.

    IMPORTANT: If you recently upgraded HeroChat and you are seeing things like {color.CHANNEL} or {color.COLOR} in your messages, please read the v4.4.2 changes. These format strings have been changed and need to be updated in your config as explained in the change log.

    Change Log
    Version 4.4.2
    • Improved command handling
    • Fixed a bug where commands longer than the actual commands were being accepted
    • Removed the {color.COLOR} tags - use the usual &c colors now
    • Replaced the {color.CHANNEL} tag with {color}
     
  16. Offline

    Etsijä

    DThielke, why the changes in color handling in 4.4.2? Seems that moving into using the &c colors is a step back in readability of your plugin - and also will cause unnecessary hassle for those who run into updating and don't notice your message about the config file changes.

    Question: does your plugin make the changes automagically, or does the user have to once again let the plugin write the config files from scratch and go into the labour of doing all changes manually?

    - - -

    Tip for the non-ANSI land: save your config.yml in UTF-8 format, then you can have non-ANSI letters (like the "åäöÅÄÖ" we Finns so love) in your censor list as well!
     
  17. Offline

    DThielke

    The changes in color handling are one step towards consistency. I didn't like that the format strings used one method, in game commands used another, and channel colors used yet another. Now at least the formats and in game commands are the same. Through helping a lot of people configure their plugins, it seems that almost everyone is familiar with the &c syntax, so while it may not be as immediately intuitive, it is more familiar for most. I still don't like that the channel colors differ from the rest, but that's something I'll address in a future update.

    Assuming you're talking about the color changes - it doesn't automatically change them. However, it shouldn't take more than a minute to go through and change {color.COLOR} to &c and {color.CHANNEL} to {color}. I'm still not sure if I want to stick with this system, but I promise that any further color related changes will be either backwards compatible or be automatically changed by the plugin.
    [MERGETIME="1299833226"][/MERGETIME]
    Alright, because I'm feeling nice, I added backwards compatibility for the old tags, so you don't need to change them; both the old and the new tags are supported. If you already downloaded 4.4.2 and don't want to change your configuration, just re-download it.
     
  18. Offline

    M1sT3rM4n

    The Player joined channel format when notifications are turned on is weird. Instead of getting a neat message, I get something that's not formatted right, like it's missing a bracket on the prefix.
     
  19. Offline

    Dawodo

    Epic Plugin, thanks alot!
     
  20. Offline

    DThielke

    Could you give me an example of what you're seeing?
    [MERGETIME="1299884827"][/MERGETIME]
    For anyone curious, here's an example of a slightly more complex censor list (that we use on the Herocraft server):

    Code:
    censors: ['\bu+\W*m+a+d+(\W*br(a|o)+)?', 't+\W*r+\W*o+\W*(l+\W*o+\W*)+\W*l*', 'l+\W*u+\W*l+\W*z+\W*', '[^0-9]9000[^0-9]']
     
  21. Offline

    Jobsti

    Installed the new version, modified the cfg and what should I say? it works ;)
    Thanks for your updates. #531
     
  22. Offline

    DThielke

    Happy to hear. Now I just need to update the configuration wiki with some basic censor examples.
     
  23. Offline

    Etsijä

    Yes, that one really got me curious. I saw something similar to that on the Internet a while ago, basically it was a regexp filter which could detect the "bad words" no matter how they were written, as in "shit", "shiiiiiit", "s*h*i*t", "s h i t", "s_h_i_t" etc. But: that implementation still needed the list of the basic forms of the words to censor to be implemented somewhere - and your filter does not seem to have it.

    So: could you explain the idea a bit further? I'd very much like to try it out on my testserver!

    - - -

    Actually, now that I take a closer look at it, it does seem to contain the basic words as well...just very obfuscated.

    I actually would have an idea for you to play with: as an alternative way to censor, the one I described above...so, a possibility to specify a regexp which takes care of all those weird forms of a word. And then, just specify a list of the basic forms of the censored words. I think that just might be useful to many.
     
  24. Offline

    DThielke

    Sure, I can go through and break down each of these.

    '\bu+\W*m+a+d+(\W*br(a|o)+)?': filters out umad, umadbro, umadbra, u mad bro, uuu$maaadd_brooo, etc.
    \b: the beginning or end of a word (this is needed here, otherwise it would also filter out things like 'are you mad'?)
    u+: one or more occurrences of 'u'
    \W*: zero or more occurrences of a non-alphanumeric character
    m+: one or more occurrences of 'm'
    a+: one or more occurrences of 'a'
    d+: one or more occurrences of 'd'
    (a|o)+: one or more occurrences of either 'a' or 'o'
    (...)?: zero or one occurrences of the stuff in parentheses

    't+\W*r+\W*o+\W*(l+\W*o+\W*)+\W*l*': filters out trolo, trololol, t r o l o l o l o, tttrrrroololllololo lolollo, etc.
    t+: one or more occurrences of 't'
    \W*: zero or more occurrences of a non-alphanumeric character
    r+: one or more occurrences of 'r'
    o+: one or more occurrences of 'o'
    l+: one or more occurrences of 'l'
    (l+\W*o+\W*)+: one or more occurrences of the stuff in parentheses
    l*: zero or more occurrences of 'l'

    'l+\W*u+\W*l+\W*z+\W*': filters out lulz, llluuuulllzz, l u l z, l ullzzz, etc.
    l+: one or more occurrences of 'l'
    \W*: zero or more occurrences of a non-alphanumeric character
    u+: one or more occurrences of 'u'
    z+: one or more occurrences of 'z'

    '[^0-9]9000[^0-9]': filters out 9000
    [^0-9]: NOT a number from 0-9 (this prevents it from filtering out things like 10090005, just because it contains 9000)
    [MERGETIME="1299922658"][/MERGETIME]
    If a user wants to censor just the basic form a word, you would just use '\bword\b'. I don't think that's too difficult. The extra fancy stuff is there for those who want a more powerful censor. You could in fact just do 'word', but that would censor out the word even if it's in the middle of another word, which could cause issues. For example, if you censored 'ass', it would censor 'assassin' as well.
     
  25. Offline

    Etsijä

    Yes I do understand that and am already making good use of /bword/b, /bword and word/b on our server - as those are the basic cases in Finnish which I would need to distuingish from each other.

    My idea was:
    (1) To have the possibility in the config to implement one regexp filter to detect the typical misuses/miswrites by which some users try to avoid the censor: "s h i t" being one example of that. This filter would be applied to every word specified in any other filters. Call this filter0
    (2) To implement additional regexp filters which would give out the exact bad words. Call these filter1, filter2 etc.

    In a way, this would be sort of two layers of filtering: filter0 would be applied on top of all filters which are specified as filter1, filter2 etc.

    Maybe I'm not explaining myself too well. Let me give an example:

    filter0 = "([b|B][\W]*[a|A][\W]*[d|D][\W]*[w|W][\W]*[o|O][\W]*[r|R][\W]*[d|D][\W]*)"
    filter1 = "\bass\b"

    Then this combination together would not filter "assassin", but would filter "ass", "a*s*s" etc.
     
  26. Offline

    Dragory

    Does anyone have any idea why the config.yml keeps resetting every time I restart the server or reload the mod?
     
  27. Offline

    Latros

    Having the EXACT same problem, just came here to post it...

    Trying to get RID of global chat and make Local Chat the default.
     
  28. Offline

    DThielke

    The plugin saves the settings in memory (to reflect any changes users made in-game) when the server is stopped or the plugin is reloaded. This will overwrite any changes you made by hand. If you want to make changes by hand and have them stick, you either need to do them while the server is off, or save the changes and use the /ch reload command in-game.
     
  29. Offline

    Dragory

    Exactly what I'm trying to do, but it keeps resetting. I think I'll just chmod it so that it's not writable.

    EDIT:

    Oh, alright, DThielke. Thanks!
     
  30. Offline

    DThielke

    I'll consider adding something like this, but I'm not sure if I want to add another somewhat unimportant option to an already bloated configuration.
     
  31. Offline

    Latros

    Still no luck Dthiel;

    Am I to understand...

    (Server online)
    Edit the file.
    Save the file.
    Go in game.
    Type /ch reload.

    Is how to reflect changes made to the config?
    [MERGETIME="1299967411"][/MERGETIME]
    That still didn't work D:

    GAH all I need is a simple, nobody-can-access-global-chat, everybody-defaults-to-local-chat config!
     

Share This Page