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


    Is there any plan on using PermissionsBukkit?
  3. Offline


    There is a preview release up about 7 posts
  4. Offline


    My iChat doesen't seem to make a folder
    My Plugins are xCraftGate, World Edit, CraftBukkitUpToDate, Permissions, iChat
    That's how it was written when I typed /pl on my server.
    Server Log:
    2011-08-23 07:35:18 [INFO] Starting minecraft server version Beta 1.7.3
    2011-08-23 07:35:18 [INFO] Loading properties
    2011-08-23 07:35:18 [INFO] Starting Minecraft server on
    2011-08-23 07:35:18 [WARNING] The server will make no attempt to authenticate usernames. Beware.
    2011-08-23 07:35:18 [WARNING] While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
    2011-08-23 07:35:18 [WARNING] To change this, set "online-mode" to "true" in the server.settings file.
    2011-08-23 07:35:18 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-980-g4ed23b1-b1060jnks (MC: 1.7.3)
    2011-08-23 07:35:18 [SEVERE] Could not load 'plugins\simpleprefix.jar' in folder 'plugins': 
    while scanning for the next token
    found character  '\t' that cannot start any token
     in "<reader>", line 11, column 1:
    [COLOR=#000000] at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(
     at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(
     at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(
     at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(
     at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(
     at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
     at org.yaml.snakeyaml.composer.Composer.composeNode(
     at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
     at org.yaml.snakeyaml.composer.Composer.composeNode(
     at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
     at org.yaml.snakeyaml.composer.Composer.composeNode(
     at org.yaml.snakeyaml.composer.Composer.composeDocument(
     at org.yaml.snakeyaml.composer.Composer.getSingleNode(
     at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(
     at org.yaml.snakeyaml.Yaml.load(
     at org.bukkit.util.config.Configuration.load(
     at org.bukkit.plugin.SimplePluginManager.loadPlugin(
     at org.bukkit.plugin.SimplePluginManager.loadPlugins(
     at org.bukkit.craftbukkit.CraftServer.loadPlugins(
     at org.bukkit.craftbukkit.CraftServer.<init>(
     at net.minecraft.server.ServerConfigurationManager.<init>(
     at net.minecraft.server.MinecraftServer.init(
    2011-08-23 07:35:18 [SEVERE] while scanning a simple key
     in "<reader>", line 34, column 1:
    could not found expected ':'
     in "<reader>", line 35, column 1:
    [COLOR=#000000]2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.scanner.ScannerImpl.stalePossibleSimpleKeys(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.composer.Composer.composeMappingNode(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.composer.Composer.composeNode(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.composer.Composer.composeDocument(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.composer.Composer.getSingleNode(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(
    2011-08-23 07:35:18 [SEVERE]  at org.yaml.snakeyaml.Yaml.load(
    2011-08-23 07:35:18 [SEVERE]  at org.bukkit.util.config.Configuration.load(
    2011-08-23 07:35:18 [SEVERE]  at
    2011-08-23 07:35:18 [SEVERE]  at<init>(
    2011-08-23 07:35:18 [SEVERE]  at
    2011-08-23 07:35:18 [SEVERE]  at
    2011-08-23 07:35:18 [SEVERE]  at com.nijiko.permissions.ModularControl.forceLoadWorld(
    2011-08-23 07:35:18 [SEVERE]  at com.nijiko.permissions.ModularControl.loadWorld(
    2011-08-23 07:35:18 [SEVERE]  at com.nijiko.permissions.ModularControl.load(
    2011-08-23 07:35:18 [SEVERE]  at com.nijikokun.bukkit.Permissions.Permissions.setupPermissions(
    2011-08-23 07:35:18 [SEVERE]  at com.nijikokun.bukkit.Permissions.Permissions.onLoad(
    2011-08-23 07:35:18 [SEVERE]  at org.bukkit.craftbukkit.CraftServer.loadPlugins(
    2011-08-23 07:35:18 [SEVERE]  at org.bukkit.craftbukkit.CraftServer.<init>(
    2011-08-23 07:35:18 [SEVERE]  at net.minecraft.server.ServerConfigurationManager.<init>(
    2011-08-23 07:35:18 [SEVERE]  at net.minecraft.server.MinecraftServer.init(
    2011-08-23 07:35:18 [SEVERE]  at
    2011-08-23 07:35:18 [SEVERE]  at
    2011-08-23 07:35:18 [SEVERE] [Permissions] Unable to load permission data.
    2011-08-23 07:35:18 [SEVERE] [Permissions] Shutting down Permissions due to error(s).
    2011-08-23 07:35:18 [INFO] [Permissions] (Yeti) was initialized.
    2011-08-23 07:35:18 [INFO] [Permissions] (Yeti) disabled successfully.
    2011-08-23 07:35:18 [INFO] Preparing level "spawn"
    2011-08-23 07:35:19 [INFO] Preparing start region for level 0 (Seed: 2619939190156491229)
    2011-08-23 07:35:20 [INFO] CraftBukkitUpToDate version 2.6.1 is enabled!
    2011-08-23 07:35:20 [INFO] WorldEdit 4.6 enabled.
    2011-08-23 07:35:20 [INFO] WorldEdit: No known permissions plugin detected. Using configuration file for permissions.
    2011-08-23 07:35:20 [INFO] [XcraftGate v0.8] by Engelier loaded.
    2011-08-23 07:35:20 [INFO] [XcraftGate v0.8] loaded world spawn (Environment: NORMAL, Seed: 2619939190156491229)
    2011-08-23 07:35:20 [INFO] Preparing start region for level 1 (Seed: 5921716306460662786)
    2011-08-23 07:35:20 [INFO] [XcraftGate v0.8] loaded world Freebuild (Environment: NORMAL, Seed: 5921716306460662786)
    2011-08-23 07:35:20 [INFO] [XcraftGate v0.8] loaded 4 gates
    2011-08-23 07:35:20 [INFO] [iChat] Permissions plugin not found or wrong version. Disabling
    2011-08-23 07:35:20 [INFO] [iChat] iChat Disabled
    2011-08-23 07:35:20 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2011-08-23 07:35:20 [INFO] Done (0.188s)! For help, type "help" or "?"
    2011-08-23 07:35:20 [INFO] CButD: CraftBukkit is up to Date
    [COLOR=#000000]Bukkit Build: 1060[/COLOR]
    [COLOR=#000000]iChat Version: 2.3.3-p3[/COLOR]
    [COLOR=#000000]PLEEEAASE help.[/COLOR]
  5. Offline


    iChat is not letting me have NameChange or MobDisguise names. It will stay my username, can you help me?
  6. Offline


    I'm not sure if anyone has asked this yet. But is there a way to set up a per-user color message. Not colored name, but colored message.
  7. Offline


    Exactly the same as you would a name.

    @DerekZil Use +displayname, seriously, it's listed in the FAQ.
    @Axiz Your Permissions is screwed up, please ask in your Permissions plugin topic.
    DerekZil likes this.
  8. Offline


    Thank you so much, I am so sorry!
    I was rushing because I needed to go to sleep and tryed to fix it for my server.

    Again I love you! :D
  9. Offline

    Cosmic Break

    is there any way to set the
    "group.admin: true" to apply to a group permissions instead of setting it individually per player? when u have dozens of players in the permissionsbukkit config, this gets tedious and annoying.
  10. Offline


    Could you add Spoutsupport just like for mchat please?
  11. Offline


    Seriously, what in the hell would Spout add to this plugin?

    @Cosmic Break Have you actually _tried_ doing that? I'm not here to answer every little question that can be answered with trying things yourself
  12. Offline


    It could show when You are typing by putting somethinng like *Typing* above your head and It could show what you said above your head for like 5seconds and It could change the name above your head to the one for the chat
  13. Offline


    And is even a single one of those CHAT FORMATTING related?
  14. Offline


    Been using your superperms version since you threw it up. Not had any problems at all so far, simple to setup and reliable as always. Thanks for all your work on the plugin.
  15. Offline

    Cosmic Break

    i wouldnt ask if i hadnt already tried. it didnt work.

    i can use bold font too
  16. Offline


    You must have done something wrong because I've applied permissions to groups with 0 issues using the superperms version. Maybe a typo or something somewhere is stopping it working? I had to watch out for groups inheriting from other groups (to make sure the right prefix was used), but otherwise it's fine.
  17. Offline

    Cosmic Break

    all groups inherited the default group name, but kept their own group powers.
  18. Offline


    And there's your problem, you need to set group.{name} to false in the inheriting group.
  19. Offline


    It's just an idea if you don't want to then don't do it
  20. Offline


    I haven't checked all the 40 pages, but are you willing to make it for non-Permission's servers? See we have a small 10slots private server and this looks so nice to use it.

    *crossing my fingers*
  21. Offline


    Hello, I really like your plugin but i simply do not get a config folder... Also it cannot find permisions... [​IMG]
  22. Offline


    I'm not entirely sure why the config isn't loading, but:
    What version of Permissions are you running? Also, which version of iChat did you download?
    /points at 2 versions in OP
    if you don't have the right one it may not want to make the configs :p
  23. Offline


    ... The message that is printed out quite clearly didn't give it away? "Permissions plugin not found or wrong version". Maybe you don't have permissions or it's the wrong version.
  24. Offline


    First of all, this is a great plugin. I just love walking around with [Da Boss] in front of my name (and who wouldn't? :)). But since I have a multi-world setup (using Multiverse), I was wondering if this plugin has any way of giving the different worlds specific colors. They are visible in chat (using +world in the message-format), but I would like them to all to have different colors, instead of all limited to one. Is this possible? If not, is there a plugin around somewhere that would add this functionality and be compatible with iChat?
  25. Offline


    Use a permissions plugin with multi-world permission support and just define a different color variable for different worlds.
  26. Offline


    Could you add a "+faction" variable?
  27. Offline


    ok so i have installed ichat-p3 with permissions 3 and i can only change the color of 2 grousp mod and admin please help
  28. Offline


    I currently use PermissionEX (with the compatibility plugin for Permissions 2.7.7), but I have no idea if what you're saying is possible. Could you help me with PEX, or, if PEX doesn't suit this need, name a permissions plugin that is capable of doing such? Because I have honestly no idea on how to do it. I've been playing around with it for a few hours, but I have not figured it out yet. Any help would be greatly appreciated.

    Could you post the permissions file here? I mean, we can't figure out what's your problem if you give us nothing to work with. And the config.yml of the iChat plugin would be appreciated greatly, too. :p

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: Jul 17, 2016
  29. Offline


    I don't use nor offer support for PermissionsEx, only Permissions 2.x/3.x.
    To do this in Permissions 2.x/3.x you would just have a permissions config for each world, in one would be:
                worldColor: '&2'
    And in the other would be the same but with a different color. (This can also be supplied on a per-player basis instead of per-group). In your iChat config you would have the message-format something along the lines of:
    message-format: '{+{worldColor}+world&f} [+prefix+group+suffix&f] +name: +message'

    This would make the worldColor variable different on the different worlds, thus creating different colored world names.
    Later42 likes this.
  30. Offline


    ok here is the file with both configs

    Attached Files:

  31. Offline


    Thank you! This actually worked. I had to rewrite it to be able to use it with PEX (it stores it's 'world' data a bit differently) but the idea itself was sound. Now my portals finally match the world's colors :).
Thread Status:
Not open for further replies.

Share This Page