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

    Drakia

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

    Plugin Support:
    PermissionsBukkit
    bPermissions
    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.
    http://pastebin.com/ <-- Post configs there when asking for help

    =============
    Description
    =============
    Custom chat formatting.
    Based on the idea of iChat v1.5 by Nijikokun.
    Includes code and concepts from mChat by MiracleM4n <https://github.com/MiracleM4n/mChat/>

    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): http://thedgtl.net/bukkit/iChat.jar
    Source: https://github.com/TheDgtl/iChat

    =============
    Features
    =============
    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

    =============
    Formatting
    =============
    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: http://www.minecraftwiki.net/wiki/Classic_Server_Protocol#Color_Codes

    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 - http://bit.ly/dscw40

    Example (Default):
    Code:
    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.

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

    ==========
    Variables
    ==========
    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:
    ---------------------
    Code:
    # iChat Variable Config
    # This is now the only method for defining variables
    users:
        Drakia:
            prefix: '&e'
    groups:
        Admin:
            prefix: '&c'
            suffix: ''
        Default:
            prefix: ''
            suffix: ''
    world:
      users:
        Drakia:
          prefix: '&a'
    Default config.yml:
    ---------------------
    Code:
    handle-me: true
    date-format: HH:mm:ss
    message-format: '+iname: +message'
    me-format: '* +name +message'
    iname-format: '[+prefix+group+suffix&f] +displayname'
    =============
    Examples
    =============
    To make a group colored:
    variables.yml:
    Code:
    groups:
        Default:
            prefix: '&4'
            suffix: ''
    config.yml:
    Code:
    message-format: '[+prefix+group&f] +name: +message'
    To make a single username colored:
    variables.yml:
    Code:
    users:
        Drakia:
            prefix: ''
            suffix: '&1'
    Config:
    Code:
    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.

    =============
    Configuration
    =============
    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)

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

    =============
    Commands
    =============
    /ichat reload - Reload the iChat config file

    =============
    F.A.Q.
    =============
    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.

    =============
    Changes
    =============
    [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

    Drakia

    Weird, didn't get alerts for a bunch of messages. Sorry about the delayed response:
    @Lhjnhnas I honestly am not worried, this plugin is for-free, therefor no profit made. I don't consider people donating to my plugins in general to be profit from any specific plugin.
    @Alex H This is a chat formatting plugin.
    @jeffklam That specific output is handled by bukkit, and there is no way for me to format it.
    @Tealk Seriously? You think something tagged as "Custom chat formatting" should do chat radius? I seriously don't get people sometimes.
    @BindMind Please make sure your Permissions config is correct using: http://yaml-online-parser.appspot.com/ (Enter full config, hit Ctrl+Enter) Or atleast post your FULL config, not just a chunk.
    @Jason555555 Because you can't read directions.
    @cheese417624 Your groups are named singular, but linked plural.
    @Deadman2 Did I ever say it wouldn't?
    @svict4 I've never seen that error before. What version of Permissions? Did you change anything? Does it happen after a full restart of bukkit?
    @xblackknife Since you apparently can't read, I won't bother answering your question :)
     
  3. Offline

    BindMind

    Will do.

    http://pastebin.com/mMApui46

    I already used the parser and everything appears to be formatted correctly. Could it be a conflicting plugin? I find it extremely odd that user suffixes won't work while group-based ones will... I'm looking forward to some assistance.

    Thanks for all the effort you're putting into this plugin :) Keep up the good work.

    EDIT: I just remembered, I recently tried using a variable rather than a suffix, so it's actually labelled as "donator" now. If you want an example, just look for "BindMind" in the user list.
     
  4. Offline

    Drakia

    @BindMind I see nothing wrong with your config :/ If you use +{donator} in the message-format does it still not work?
     
  5. Offline

    BindMind

    That's exactly what it says, here it is if you'd like to see.

    Code:
    censor-list: []
    censor-color: '&f'
    date-format: HH:mm:ss
    message-format: '+prefix[+group] +name+{donator}+prefix:&f +suffix+message'
    censor-char: '*'
    censor-string-color: '&f'
    censor-colored: false
    
    I don't see what's wrong either. Do you think a plugin could be conflicting? Possibly a screen-name editor I'm using?
     
  6. Offline

    Drakia

    Depends how the plugin is implemented. If it modifies the message format itself then it would interfere.
     
  7. Offline

    BindMind

    I'm not 100% sure if it's editing the format, but the plugin is called "Basic Name Changer". Another possible interference could be Factions (but I disabled the format-altering feature), so I'm not sure what could be going wrong.
     
  8. Offline

    Drakia

    Could you give it a try with no plugins except iChat and Permissions?
     
  9. Offline

    BindMind

    I can try tomorrow, but my computer is a bit fuzzled so it's rather difficult to do a local test... Plus I redid my computer so I don't have Minecraft 1.4.
     
  10. Offline

    Greylocke

    fyi - seems to be working with CB699
     
  11. Offline

    Delois

    Question, I know you can set custom variables per player, but is it possible to do per world? For an example, we have a survival and a creative world. I would like it to display HP if the player is only in the survival world. Played around a bit, but could not find a method to do this. Read through the first few pages, did not see someone attempting to do this. Is this possible?

    EDIT: Also gona add, this is working on bukkit 705
     
  12. Offline

    Gixbit

    make sure you don't have the essentials plugin or something similar to change your color when you're an OP. Otherwise it will override whatever you set in permissions.
     
  13. Offline

    Drakia

    @Delois Just set the variables in your permissions, Permissions supports multi-world so just have a different prefix or suffix or other variable per world.
     
  14. Offline

    Splox982

    Unfortunately it no longer works with the 1.5_01 versions of crafbukkit.

    I figure it has something to do with this error.
    Code:
    11:15:00 [INFO] iChat (v2.2.1) enabled
    11:15:00 [SEVERE] Nag author: '<NoAuthorGiven>' of 'iChat' about the following: onPluginEnable has been replaced with a new signature, (PluginEnableEvent)
    
    That's the only error it produces. In game the message format and censoring do not work.
     
  15. Offline

    Gratlofatic

    I really appreciate this plugin. Good luck with fixing it, it's really useful and decorative. :3 <3
     
  16. Offline

    Drakia

    @Gratlofatic It's not Broken, @Splox982 just can't read/follow directions apparently, which is why I'm ignoring him. I use it perfectly fine with my custom b714.
    I'm waiting to update the title until an RB, as I don't want to push non recommended builds. The only reason Tombstone/Warpz0r have been updated is because I made updates after my testing server was running 1.5.
     
  17. Offline

    Splox982

    Ok Developer, I have used this since Niji ported it and even before on hMod so I know what I'm doing. I did post the errors from my terminal. On my particular instance of CB714 with permissions 2.7 Phoenix it does not work. Mac OSX Snow Leopard 10.6.7 apples java version 13.4.00.

    If I did blatantly miss something I apologize, however I did follow directions. Please explain the steps you took to get this running on YOUR server.

    My appologies & thanks,

    Tom
     
  18. Offline

    Gratlofatic

    Well could you send me a link to b714? I'm on 709 I think.
     
  19. Offline

    Drakia

    @Splox982 I don't waste the developers time by running old versions of his plugin.
     
  20. Offline

    Splox982

  21. Offline

    Drakia

    Your error clearly states you are not running the version at the link in the first post.
     
  22. Offline

    SimplisticX2

    Ok, every time i type this happens, i have permissions 2.7 that might be it, but i am not sure

    CMD
    Code:
    15:47:22 [SEVERE] Could not pass event PLAYER_CHAT to iChat
    java.lang.NullPointerException
            at com.nijiko.permissions.Control.getGroup(Control.java:536)
            at net.TheDgtl.iChat.iChat.getPrefix(iChat.java:238)
            at net.TheDgtl.iChat.playerListener.onPlayerChat(playerListener.java:43)
    
            at org.bukkit.plugin.java.JavaPluginLoader$6.execute(JavaPluginLoader.ja
    va:234)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:59)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:257)
            at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:619)
    
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:607)
            at net.minecraft.server.Packet3Chat.a(SourceFile:36)
            at net.minecraft.server.NetworkManager.a(NetworkManager.java:195)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:73)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:370)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:285)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)
    Permissions
    Code:
    # System is no longer used, but may become used in the future
    # Copies is for multiple-world support
    #   Put the name of the world you wish for it to be a clone of, otherwise leave it empty.
    #   If this file is for your default world (the one in server.properties) then you must
    #   leave copies blank.
    #  Example: copies: Derp    -  This will clone the permissions of the world Derp
    #
    # Make sure to rename this file to the name of the world that is in sever.properties under
    # level-name.  So if it is level-name: world  then this should be world.yml and in the
    # plugins/Permissions directory (ie. plugins/Permissions/world.yml)
    #
    # NOTE: Do not use tabs while editing this document.  Use only spaces.  A good way to avoid
    # doing this is to use Notepad++ and replace the tab with 4 spaces.
    plugin:
        permissions:
            system: default
            copies:
    
    ##
    # AntiBuild is included with this.  To disable a group from being able to build then
    # set the build: flag to false (build: false).  If you want a group to be able to build
    # then set it to true.
    ##
    # Groups can contain inheritance.
    #   To make a group inherit the permissions from another
    #   group simply place the groups name in the "inheritance:" like so:
    #
    #   Example:
    #       inheritance:
    #           - Default
    ##
    #   All permissions including the asterisks must be placed in single quotes.
    #   like so:
    #
    #       - 'foo.bar'
    #
    #   Otherwise errors will happen!
    ##
    #   Globalized Permission settings:
    #
    #       If a permission contains periods (.) you can denote a globalized parameter:
    #
    #           - 'foo.*'
    #
    #       This will allow you to use all general commands.
    #
    ##
    #   Single Asterisk denotes all commands:
    #
    #       - '*'
    #   If you give a group this permissions, do not have the group inherit any permissions
    #   from other groups.  Any users assigned to this group should NOT be given any additional
    #   permissions either.
    ##
    #   To exempt a node use the - prefix like so:
    #       - '-foo.bar'
    ##
    #   prefix: and suffix: do not do anything on their own.  You need another outside plugin
    #   such as iChat or HeroChat in order for these to do anything.
    groups:
        Default:
            default: true
            info:
                prefix: 'Player'
                suffix: ''
                build: False
            inheritance:
            permissions:
                - 'foo.bar'
        Builder:
            default: false
            info:
                prefix: 'Builder'
                suffix: ''
                build: true
            inheritance:
                - Default
            permissions:
                - 'bar.foo'
        Moderator:
            default: false
            info:
                prefix: 'MOD'
                suffix: ''
                build: true
            inheritance:
                - Builder
            permissions:
                - 'bar.foo'
        Admins:
            default: false
            info:
                prefix: 'Op. Overlord'
                suffix: ''
                build: true
            inheritance:
            permissions:
                - '*'
    
    ##
    # Users denote which users are included in which group.
    # TheNo1Yeti is in the Admin group
    # Herpina is a member of the Moderator group but also has access
    # to the herp.derp permissions
    # Derpina is a member of the admin group but does not have access
    # to the derp.derp permission node
    # Users can also have a prefix and suffix as seen with Herpina
    ##
    users:
        SimplisticX2:
            group: Adimins
            permissions:
                - '-derp.derp'
        Dxguy20:
            group: Moderator
            info:
                prefix: 'Moo'
                suffix: 'Cow'
            permissions:
                - 'herp.derp'
        Derpina:
            group: Admins
            permissions:
                - '-derp.derp'
    Please help if you can

    Haha, i noticed i spelled admins wrongs, it works now

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

    u83rju1c3

  24. Offline

    Drakia

    u83rju1c3 likes this.
  25. Offline

    Gratlofatic

  26. Offline

    Drakia

    @Gratlofatic That's a very tiny portion of your startup, I need the whole thing or I can't offer support.
     
  27. Offline

    Splox982

  28. Offline

    Gratlofatic

    That's all that happens. Then people talk. I get no error messages, alerts, severe's, but people can still do /unlimited and /magiccarpet even though I don't have the perm set in my permissions folder ( -magiccarpet.mc). I don't know if that's the plugins fault or Permissions, but I can't get iChat to work either :l
     
  29. Offline

    Drakia

    Post your server.log file.
     
  30. Offline

    Gratlofatic

    Now that you mention it, I looked further into it. Here:

    http://pastebin.com/fqHaJq9t

    And if someone could fucking explain the Overloading that would be great. (Like, FUCKING great >.>')
     
  31. Offline

    Drakia

    Your permissions config is screwed up, ask in the Permissions topic for help.
     
Thread Status:
Not open for further replies.

Share This Page