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


    Sorry, should have mentioned it. I am running permissions 2.5.4. The file is named world.yml. This is the config:
      permissions: {system: default}
        default: true
        info: {build: false, prefix: '', suffix: ''}
        permissions: [essentials.rules,, essentials.motd, essentials.helpop,
          essentials.list, essentials.mail, essentials.mail.send]
        inheritance: []
        default: true
        info: {prefix: '&2', suffix: '', build: true}
        permissions: [essentials.list, essentials.mail, essentials.mail.send, essentials.helpop,
          essentials.getpos,, essentials.motd, essentials.afk, essentials.rules,
          essentials.msg,, essentials.depth, essentials.compass, essentials.whois,
          essentials.spawn,, essentials.home, essentials.sethome, lwc.protect,
          iConomy.payment, iConomy.list, iConomy.rank,, simpleshop.sell]
        inheritance: []
        default: false
        info: {prefix: '&b', build: true, suffix: ''}
        inheritance: Citizen
        permissions: [essentials.list, essentials.mail, essentials.mail.send, essentials.helpop,
          essentials.getpos,, essentials.motd, essentials.afk, essentials.rules,
          essentials.msg,, essentials.depth, essentials.compass, essentials.kick,
          essentials.ban, essentials.unban, essentials.banip, essentials.unbanip,,
          essentials.modgrp, essentials.spawn, lwc.protect, iConomy.access, iConomy.payment,
          iConomy.list, iConomy.rank,, simpleshop.sell]
        default: false
        info: {prefix: '&c', build: true, suffix: ''}
        inheritance: [Mod]
        permissions: ['*']
        default: false
        info: {prefix: '&6', suffix: '', build: true}
        inheritance: [Admin]
        permissions: ['*']
            group: Admin
            permissions: []
    Craftbukkit version: git-Bukkit-0.0.0-544-g6c6c30a-b556jnks
  3. Offline


    @fontaine Looks like you switch from two spaces to four spaces in your formatting.

    Also are there any errors in the console about it not being able to load properly?
  4. Offline


    The plugins loaded fine. I also tried it with the default Permissions configuration file as well and no go. However, I am getting these errors when placing/deleting blocks/player death:f
    22:44:52 [SEVERE] Could not pass event BLOCK_PLACED to Permissions
    at com.nijiko.permissions.Control.getGroups(
    at com.nijikokun.bukkit.Permissions.Listener.onBlockPlace(
    at org.bukkit.plugin.RegisteredListener.callEvent(
    at org.bukkit.plugin.SimplePluginManager.callEvent(
    at net.minecraft.server.ItemBlock.a(
    at net.minecraft.server.ItemStack.a(
    at net.minecraft.server.ItemInWorldManager.a(
    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.Packet15Place.a(SourceFile:57)
    at net.minecraft.server.NetworkManager.a(SourceFile:230)
    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
    at net.minecraft.server.MinecraftServer.h(
    It may just be a broken Permissions problem that's preventing it from interacting with iChat.. I did try a plain vanilla install of Permissions and it didn't work either though. iChat seems to detect Permissions though:

    00:46:10 [INFO] [iChat] Using Permissions 2.5 (2.5.4) for permissions
    00:46:10 [INFO] iChat (v2.2.0) enabled
  5. Offline


    iChat will detect Permissions even if Permissions is screwed up for some reason. And from the looks of that error Permissions is screwed up.
  6. Offline


    =P it works, thanks.
    Please can you post this in the instructions, because it would have saved alot of time, even though its pretty damn straight forward. :D

    &f is white, just incase some people are reading this message, this is where you find the colors .
  7. Offline


    Ok, well apparently it was the EssentialsGroupManager plugin which was messing up the Permissions plugin, which in turn messed up the iChat plugin. Now everything is working fine! :) Thank you
  8. Offline


  9. Offline


    @SH4D0WS1N Seriously, you don't need to go around to every plugin stating that it doesn't work with a build that nobody recommends you use, and that any active plugin developer knows breaks pretty much everything. Especially if all you're going to say is "broken with latest build" and give zero reason it is broken, no logs, nothing.
    I can pretty much guess, based on your BLOCK_PLACED remark, that it's not actually iChat that's broken, it's Permissions, and you just don't know how to read the stack trace. And this is why you don't just say "it's broken" you give a reason and logs.
  10. Offline


    Hey Drakia,
    I just switched from HeroChat to iChat, as my server isn't really big enough for multi-channels =D
    But I've got a small problem, a white [start] occurs before the prefix when users talk...
    message-format: '&2+time +prefix &2+name&8: &2+message'
    In world.yml I gave them titles like:
    prefix: '&7[&3Wizard&7]'
    It worked with HeroChat, now with iChat there is a white [start] infront of the time.
    Any clue? #556
  11. Offline


    It has to be another plugin interfering, what plugins do you run?
  12. Offline


    Goodday Drakia,
    Today on our server, several of our players discovered that when entering &4 and other color numbers they can change what the color of there text is, I do not know if this is a bug or a feature but i do not wish for players to be posing as an admin while others are offline, if this is a bug can you please fix it, if it is a feature can you please tell me if there is a way i can edit your script to disable it or can you add a option in the config document so that i can disable it.
    Ty for your time.
    Admin of
  13. Offline


    That was the most passively ill-intended post I've seen.
    19:34:33 [SEVERE] BLOCK_PLACED loading iChat v2.2.0 (Is it up to date?)
    java.lang.NoSuchFieldError: BLOCK_PLACED
            at com.nijikokun.bukkit.Permissions.Permissions.onEnable(Permissions
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginMa
            at net.TheDgtl.iChat.iChat.setupPermissions(
            at net.TheDgtl.iChat.iChat.onEnable(
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginMa
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(
            at net.minecraft.server.MinecraftServer.e(
            at net.minecraft.server.MinecraftServer.a(
            at net.minecraft.server.MinecraftServer.d(
    However, Permissions loaded fine.
    Could you explain to me why this is happening then?
  14. Offline


    I looked through your post history before I responded, and every single one of your 7 posts except the first at the time was "this plugin doesn't work with the latest build" which, as I said, is NOT A RECOMMENDED or developed for build. Yes, there are some plugin devs who release updates for non RBs, I'm not one of them.
    Now in regards to why "Permissions loaded fine," it didn't. There is no Permissions build that runs with the latest Bukkit release. How do I know this, you ask? Because I know Bukkit, I know the Permissions source, and I know they don't work together if you're running Permissions 2.5.4 and Bukkit >= b561jnks.
    Want proof? Go here:
    Look at that highlighted line, where it uses BLOCK_PLACED.
    Now go here:
    And look at where the two lines were changed from BLOCK_PLACED to BLOCK_PLACE. There is no way at all that Permissions loaded fine for you.

    Now that you've been royally served, please stop bugging plugin devs about an unsupported build. Thank you.

    @Master0r0 The only way users can use color in chat is if they have the ichat.color permissions, remove that permissions and they won't be able to use colors :)
  15. Offline


    I like how I point you're being passive aggressive and you just drop the passive part.
    Is there any specific reason as to why they changed it and removed the D?
    Seems like a pointless change and will just annoy developers.

    EDIT: Also, why does Permissions not report any errors loading?
  16. Offline


    Well, that's because I'm not passive, I'm quite a douche really.
    Why'd they remove the D? Because they could, they want the API to be consistent, and to do that they had to change some event names.
    Bukkit is in development, as a developer I know that, and I expect things to change, they change a lot actually. It's expected that there will be plugin-breaking updates, and it happens more than most users know.
  17. Offline


    Er, just in case you didn't see the edit in my previous post:
    Why does Permissions not report any errors when loaded then?
  18. Offline


    They dont seem to have that permissions and when i enter -ichat.color to remove the permissions it does not work either.
  19. Offline


    The console does not show errors for Permissions because my plugin is enabling Permissions, which is why my plugin is the one outputting that stacktrace.
    The reason Permissions doesn't die is because even if a plugin throws an exception it's still marked as enabled. So it still accepts commands, however the BLOCK_PLACED event will not be triggered.

    @Master0r0 Are you running the latest version? I only added that in 2.10 Also, do you have any other plugins that may be adding the color? What is your servers list of plugins?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
    Last edited by a moderator: May 10, 2016
  20. Offline


    Drakia, this is the error I received whenever someone talks.

    09:47:05 [SEVERE] Could not pass event PLAYER_CHAT to iChat
    at com.nijiko.permissions.Control.getGroup(
    at net.TheDgtl.iChat.iChat.getPrefix(
    at net.TheDgtl.iChat.playerListener.onPlayerChat(

    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.ja
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.

    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.Packet3Chat.a(SourceFile:24)
    at net.minecraft.server.NetworkManager.a(SourceFile:230)
    at net.minecraft.server.NetServerHandler.a(
    at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
    at net.minecraft.server.MinecraftServer.h(
    09:47:05 [INFO] <xChris14> What
  21. Offline


    CommandBook, CraftBook, HeroicDeath, iChat, LoginMessage, LWC, MultiInv, MultiVerse, MyHome, MyWarp, Permissions, properTime, PvP Control, SpawnControl, Tele++, WorldEdit, Worldguard, SpawnMob
  22. Offline


    @xChris14 Make sure your Permissions file is setup properly/named right.
    @BigBlueGER Hmm... Well that is an odd one, I honestly have no clue. Can you try disabling all the plugins except iChat and see if the problem persists? Then enable them one by one?
  23. Offline


    I just noticed that it was MultiVerse, telling the alias of the main world.
    Anyway, thanks =D
  24. Offline


    Edit: Updating iChat worked thanks for the assistance

    well we havent updated lately and the plugins we run are: EssentialsHelp, Spyer, WorldGuard, CraftBookVehicles, Essentials, WorldEdit, Permissions, WormholeXTreme, CraftBookCommon, iChat, CraftBookMechanisms, EssentialsUpdate, RemoteToolkitPlugin, Questioner, BigBrother, CraftBookCircuits, TelePlus, EssentialsTele, MyHome, MoveCraft, LastCommand, Towny, Cleaner, MCBans, MyWarp, EssentialsSpawn
  25. Offline


    [Version 2.2.1]
    - Updated how Permissions is loaded
  26. Offline


    is there a way to make the "[" and "]" in front of the name coloured too?

  27. Offline


    message-format can be anything you desire.
  28. Offline


    will this work with the new 600+ builds?
    im just wondering before i go update to those
  29. Offline


    Updated for build 600!
  30. Offline


    THANK you so much!!! :D
  31. Offline


    Hi, I've tried going t hrough the thread here looking for this answer, but I haven't been able to locate it.
    Is there a way to restrict the plugin from putting a group tag on certain groups?
    I don't want all of my default chat members to have [Default] before their name when they chat.
    I figured it out. I just won't use the +group in the config file, and assign the names for each group under Permissions. Thanks for the great plugin!
Thread Status:
Not open for further replies.

Share This Page