Inactive [CHAT] iChat 2.4.4 - Custom Chat Formatting [1337]

Discussion in 'Inactive/Unsupported Plugins' started by Drakia, Feb 24, 2011.

Thread Status:
Not open for further replies.
  1. Offline


    iChat 2.x - Custom Chat Formatting
    Version: 2.4.4
    CraftBukkit: 1337

    Plugin Support:
    Permissions 2.x
    Permissions 3.x

    If you are requesting help, post your entire server log (From the time it opens, until somebody talks), your entire Permission config file (As well as what it's named), and iChat config files. This information is REQUIRED for me to help you. <-- Post configs there when asking for help

    Custom chat formatting.
    Based on the idea of iChat v1.5 by Nijikokun.
    Includes code and concepts from mChat by MiracleM4n <>

    Before downloading: iChat 2.4.x has quite a few changes over the 2.3.x branches. All permissions plugins are handled in one plugin, and they all operate in relatively the same way now. This means you WILL need to redo your configs.
    Download (Direct JAR):

    Supports Permissions (Both 2.0 and 2.1), and SuperPerms handlers (PermissionsBukkit, bPermissions, and PermissionsEx).
    Allows you to specify a prefix/suffix/variable for users and groups on a per-world or global basis.
    A user-specific prefix/suffix/variable will take priority over a group prefix/suffix/variable, a world-based prefix/suffix/variable will take priority over a global prefix/suffix/variable.
    Unlimited amount of custom variables for use in chat format.
    Colors are supported in all parts of the formatting and chat text.
    Usable health bar and health amount in the formatting.
    Support for formatting of /me

    Message formatting is defined in the file plugins/iChat/config.yml
    The message formats can contain characters, color codes, and variables.
    To use colors use the standard Minecraft color codes found here:

    Available variables:
    +prefix - The prefix for this user, or this users group if they don't have one defined.
    +suffix - The suffix for this user, or this users group if they don't have one defined.
    +name - The users name
    +displayname - The users display name (Set by plugins such as Towny)
    +iname - The iChat formatted player name (Defined by iname-format)
    +group - The users group
    +healthbar - A visual health bar for this user
    +health - The users current health value (Between 0 and 20)
    +message - The message the player typed
    +world - What world the player is currently in
    +time - Timestamp, configurable in config.yml. Uses the format for SimpleDateFormat -

    Example (Default):
    iname-format: '[+prefix+group+suffix&f] +displayname'
    message-format: '+iname: +message'
    me-format: '* +name +message'
    date-format: 'HH:mm:ss'
    handle-me: true
    Example date-format (Default):
    date-format: 'HH:mm:ss'

    As of iChat 2.4.0 there have been a few changes in the way variables and groups are handled.

    As of iChat 2.4.3 native groups are supported in Permissions 2.x/3.x, PermissionsBukkit, bPermissions, and PermissionsEx.

    Variables are now defined in variables.yml in the iChat directory. This includes prefixes, suffixes, and custom variables.
    You can define an unlimited number of custom variables for groups and users, if these variables contain the static variables such as +prefix,
    +suffix, +health, etc then those variables will be replaced with their respective values.
    If a variable does not exist then it will be replaced with a blank string.

    As of iChat 2.4.4 you can now specify world-specific variables. To specify a per-world group or user variable (Prefix, suffix, or variable) you just specify it under the world as shown in the 'world' example in the default variables.yml below. Anything specified in the parent 'users' or 'groups' nodes will be considered global for all worlds.

    Default variables.yml:
    # iChat Variable Config
    # This is now the only method for defining variables
            prefix: '&e'
            prefix: '&c'
            suffix: ''
            prefix: ''
            suffix: ''
          prefix: '&a'
    Default config.yml:
    handle-me: true
    date-format: HH:mm:ss
    message-format: '+iname: +message'
    me-format: '* +name +message'
    iname-format: '[+prefix+group+suffix&f] +displayname'
    To make a group colored:
            prefix: '&4'
            suffix: ''
    message-format: '[+prefix+group&f] +name: +message'
    To make a single username colored:
            prefix: ''
            suffix: '&1'
    message-format: '[+prefix+group&f] +suffix+name&f: +message'
    As you can see, suffixes and prefixes can be used anywhere, in any combination. In this example we use prefix as a method for coloring group names, while suffix is used to color individual users. On our server we have prefixes such as "&f[&2Mod&f] " so that we can have custom tags per group instead of just the groups name. There is no end to the combination of things you can do, please TRY things before you come asking for someone else to do it for you. There are too many combinations of things for me to answer every question about how to color specific things.
    I will not be offering answers to questions such as "How do I color names?" or really anything else to do with specifics of formatting. It's pretty straightforward what you can do, and if you can't take the time to experiment then I'm not going to take the time to answer your questions.

    iname-format - The format used for +iname (Default: '[+prefix+group+suffix&f] +displayname')
    message-format - The format used for basic chat (Default: '+iname: +message')
    date-format - The format used for +date (Default: 'HH:mm:ss')
    me-format - The format used for /me commands (Default: '* +name +message')
    handle-me - Whether to handle /me commands (Default: true)

    ichat.color - Allow this group/user to use color in their chat messages.
    ichat.reload - Allow this group/user to use "/ichat reload"

    /ichat reload - Reload the iChat config file

    Q) Why is my custom message format not working? I just get the default output. Or output with no variables filled in.
    A) If you're using Permissions 2.1, make sure your Permissions config file is named "{worldname}.yml" where {worldname} is the name of your world. If you're using Permissions 2.0, make sure your Permissions config is named config.yml

    Q) How do I set the brackets color to the same as the group?
    A) Normally you have the brackets in the message-format variable, but you can just as easily move them into prefix/suffix and that way they can be per-group colored!

    Q) Why is my entire string colored? I just put a color code beside +name!
    A) A color code will persists until another color code is encountered, or the end of the line is reached. To change the line back to white use &f after the variable/string you want colored.

    Q) Why are my OPs names red?
    A) Essentials has this functionality built in. Change "ops-name-color" to 'none' in your Essentials config file.

    Q) Why does {PluginX} not work with iChat?
    A) There's a good chance it does, but you need to use +displayname instead of +name.

    Q) Why does Towny not work with iChat?
    A) iChat no longer uses %1$s for the player name, it uses player.getName() and player.getDisplayName(), until such a time that Towny is updated to use the proper method of setting a players name (Set their displayName) it will not work with iChat.

    [Version 2.4.4]
    - Updated to new FileConfiguration class
    - Fixed bypass exploit for colors in messages
    - Multi-world support for variables.yml
    - Resolved an issue with /me not reloading player variables
    [Version 2.4.3]
    - Permissions overhaul. No longer require group.{name} node unless not using a permissions handler
    [Version 2.4.2]
    - Fixed issue with inheritance in Permissions
    - Implemented start of online time variable. Need output format.
    [Version 2.4.1]
    - Remove plugin-specific group referencing. All groups are now managed via group.* nodes,
    the exception being pure Permissions 2.x/3.x
    - Fixed /ichat reload not reloading variables.yml
    - Updated /me to use BroadcastMessage
    [Version 2.4.0-final]
    - Took out variable caching, there's no hook for PermissionChange.
    - Updated README to include info on group.* nodes
    [Version 2.4.0-beta]
    - Merged all branches into one
    - Supports Perms 2.x/3.x, SuperPerms, GroupManager
    - Added a more advanded API based on the mChat API
    - Massive thanks to MiracleM4n for code and concepts
    - All variables are now retrieved from variables.yml instead of Permissions
    - Removed censor code
    [Version 2.3.2-p3]
    - Set Permissions as a dependency in plugin.yml
    - Added Permissions 3 support to the -p3 jar
    [Version 2.3.1]
    - Added iChat.ichat.parseChat(Player, String, Format) API
    - Added hook for /me chat formatting using the "me-format" config option
    [Version 2.3.0]
    - Added external iChat.ichat.parseChat(Player, String) API
    [Version 2.2.3]
    - Added +displayname/+d for player.getDisplayName()
    [Version 2.2.2]
    - Updated to latest RB
    [Version 2.2.1]
    - Updated how Permissions is loaded
    [Version 2.2.0]
    - Added the ability to have an unlimited amount of variables in message-format
    - Changed versioning scheme
    [Version 2.11]
    - Now uses per-world permissions information
    [Version 2.10]
    - Allow admins to enable color on a permissions basis
    [Version 2.09]
    - Another small update to Permissions (Returned false when I should have returned true)
    [Version 2.08]
    - Pushes PacketCollisions PermVersion change. Fixes issues with 2.5.2
    [Version 2.07]
    - Added +time tag
    [Version 2.06]
    - Added +world tag
    [Version 2.05]
    - Ignore whether the plugin is GM, just treat everything as Permissions! Means you need FakePermissions.
    [Version 2.04]
    - Added the ability to use variables in the suffix and prefix (More customizeable messages)
    [Version 2.03]
    - Verify that all available variables aren't null before calling parse
    - Fixed crash caused by color code at end of message (Basic fix, added a space)
    [Version 2.02]
    - Fix for possible NPE
    [Version 2.01]
    - There's a bug in Permissions 2.1 in getPermissionString, switched to getUserPermissionString
    [Version 2.00]
    - Initial re-write of Niji's plugin.
    - Added Permissions 2.0/2.1, and GroupManager support.[/b]
    FFS2309, Lolmewn, wassilij and 12 others like this.
  2. Offline


    will not work with towny .63
  3. Offline


    no this is the best plugin for a server right now that is easy to do.
  4. Offline


    @ZeroPoke is the owner of the server I work for, my boss so to say, he was just kidding. He's the first person to get my releases, and the only person I take feature requests from ;)
  5. Offline


    /me hates demanding users
  6. Offline


    oh ok lol
  7. Offline


    This is an issue with Towny and how it implements its chat prefixing. I have informed Fuzzy of how to fix this, but he has not responded to my post, nor fixed the issue with his update for 818, so don't expect them to be compatible in the near future. This is outlined quite clearly in the FAQ.
  8. Offline



    ichat does not work very well with the plugin Essentials. When you type the command /nick to change your nickname, iChat does not display the new nickname when writing.
    So when I remove iChat, the command /nick works very well.

    How can I solve this problem, thank you.
  9. Offline


    +displayname - The users displayname. (Set by plugins such as ColorMe)
    dont know if it works with essentials
  10. Offline


    If i want usergroup to be shown in chat like [VIP] Madman:Hello would i do that like this ?
    Admins: default: false info: prefix: '' suffix: '' var1: '[+group]'

    New to this ^^
  11. Offline


    no, there isnt any var1... try:
    prefix: '[VIP] '

    message-format: '+prefix+name: +message'
  12. Offline


    Here is my config file ^^ How would i add it ? Or should i just remove all and paste what u wrote ?

    censor-list: []
    censor-color: '&f'
    date-format: HH:mm:ss
    message-format: '[+prefix+group+suffix&f] +name: +message'
    censor-char: '*'
    censor-string-color: '&f'
    censor-colored: false

    default: false
    prefix: '[VIP]'

    Becomes [VIP][Admins]Madman:Hello
  13. Offline


    remove the +group in the message format
  14. Offline


    Awsome thanks, only one thing now when i type i get [[VIP]]Madman:Hello ^^ Any idea ?
  15. Offline


    So I made my own fix for Towny by causing it to use setDisplayName. But as I had guessed this exposed a flaw in your chat parsing system. Since the normal PlayerChat event triggers actions prior to the chat parse, setting the display name without iChat will immediately result in a change in the chat.

    But iChat hijacks the system and creates its own line of chat, cancelling the original chat string altogether. And it does all of this BEFORE OTHER PLUGINS HAVE A CHANCE TO RESPOND.

    In other words, when I set the display name as a reaction to a PlayerChatEvent, using iChat that display name will NOT come into effect until the NEXT chat line is parsed.


    In other words you need to somehow prevent iChat from parsing the chat string until AFTER the PlayerChatEvent is complete. I suppose it is theoretically possible to have Towny simply set the display name every time a person's status changes. But that entails a major revision of the code, because it simply isn't set up to function that way right now.


    I added another displayName parse to the PlayerJoinEvent as a quick fix, but this doesn't help if someone loses/gains a town/nation while they are playing.
  16. Offline


    @Silarn Or you could, I dunno, set the Towny chat hook to be low priority, so as to call it before any other plugin? It's funny what actually knowing what your doing can accomplish.

    Here's exactly what I told Fuzze a week ago, the PROPER fix for Towny:
    "In a future update, could you change how Towny does it's ChatPrefix? Essentially in the low-priority chatEvent hook, have it set the players displayName as opposed to replacing %1&s in the chatFormat string, this way it will be compatible with chat formatting plugins such as iChat, and will still work with the default CB chat format (The default format uses player.getDisplayName as well)."
  17. Offline


    Right. In fact, there already is a low priority event being called for the /tc and /nc commands so I simply merged the two systems, which I suppose fixed that issue. Still, if the intent is for iChat to be the final say on how the chat is parsed, it seems it should perhaps be in the High or Highest priority calls, no? As in right now if I modified the chat format string to add blah before and after the %1$s, I'm assuming that wouldn't show up after iChat finished parsing the format.
  18. Offline


    well looks like i wont be using ichat in the near future then.
  19. Offline


    It would be nice if there was a way in iChat to have iChat formatting for /me (third person chat) and to get rid of the unknown console command crap, of course.
  20. Offline


    And the purpose of posting this? Yes, another plugin doesn't work with mine because of HIS implementation of changing names, that's not my problem, and not my job to fix.

    This is an interesting point, I always figured /me was given by a plugin, but just looked into it and it's provided by the core, I may look into overriding this command.
  21. Offline


    Lol, man, i like this guy (totally wish i could say that on my server.)

    So, I've got a stupid question. Sooo, i don't expect an answer from Drakia. Maybe one of you other fine forum ppl can help me with.

    My users can still do that friggin annoying colored message txt... none of them have ichat.color, in fact they have'-ichat.color', what am i missing?

    Permissions 2.x
    Essentials 2.3

    (if its essentials, this will be the kicker that makes me ditch it)
  22. Offline


    @Crete21 Someone who likes me? Surprising, most people who post seem to hate me for that notice.
    As for your problem, it's another plugin, but I don't know which one. Essentials with the Chat features turned off does not do coloring. And I just tested and with '-ichat.color' I can not use color in chat (That's with Essentials v2.2.16 running as well)
  23. Offline


    Hes lieing little bitch. He doesnt take my feature request. Well I guess but it take me like a week of trying to get him too
  24. Offline


    oh, remove the [] in the message format
  25. Offline


    Looked into other people setup and they use [] :/ Anyhow removing them worked just fine. Thanks
  26. Offline


    I honestly find it funny how many people can't comprehend basic string replacement...
    GameFreakDude likes this.
  27. Offline


    All gotta start somewhere...
  28. Offline


    u have the option too remove them in the message-format or in the permission file. i would do it in the message-format cause then u can make groups with () or without any brackets or any prefix...
  29. Offline


    Thanks :)
  30. Offline


    my point is if you weren't such a dick to people, they would WORK with you on your plugin. your attitude sucks. That makes me hate your plugin even more.
  31. Offline


    how do i dislike a post
Thread Status:
Not open for further replies.

Share This Page