[Release] ChitChat [API 4.0]


#1

ChitChat

ChitChat is a powerful chat plugin that allows you to make the chat look just like you want it to. ChitChat allows you to make custom chat channels, and control who can enter those channels. ChitChat also provides basic commands like pm, me, broadcast, which you can also change the format of.

ChitChat needs KatLib 2.1.0.

##Links
Download
Source
Issues

Features

  • Divide chat into channels.
  • Create, modify and remove channels on the fly.
  • Makes ugly commands look good.
  • Completely customizable how every command and normal chat looks.
  • Play a sound every time a player is mentioned in chat
  • Uses TextTemplateAppliers, which means that it will play nice with other chat plugins that also uses them

Formatting

Every message in ChitChat is customizable. You can change these messages in the config. You will for the most part encounter two types of config values. Text is used for normal text when it’s just printed without any changes. TextTemplate is a template Text where some values will be replaced before it is used. Note that if another plugin replaces the TextTemplate specified by ChitChat, you should still be able to insert the arguments into the new TextTemplate as ChitChat applies it’s argument to all the TextTemplates it can find.

The second type of formatting you would want to do is to format how a player is represented in a chat message. ChitChat uses permission options to add prefix and suffix to the chat message. prefix and suffix for formatting with &. jsonprefix and jsonsuffix for formatting with json. An example with the normal variant would be &9[&2Admin&9]. Do note that the color of the player name is not supplied in the prefix, but instead in a separate permission option called namestyle. In here you specify the color and style you want for the player name formatting codes, for example &5. The reason they are separate is to allow moving the prefix and the player name around in the config independently of each other.

Commands

  • /announce -c <message> - Send a message to all players. If the flag -c is specified, it will do the announcement as console.
  • /inChannel|chmembers <channel> - List the people in a channel.
  • /joinChannel|chjoin <channel> - Join a channel.
  • /listChannels|channels|chlist - Lists all channels, with a join button.
  • /chitchat - Shows you information about ChitChat.
  • /chitchat help [<command>] - If used with no parameters shows the help for all the commands registered by ChitChat. You can also show the help for individual commands by specifying the parameters to be that command. This also works with subcommands.
  • /me <message> - Act out an action.
  • /channelmod|chmod - Interface for editing different channels.
  • /channelmod|chmod edit|modify [--name <name>] [--prefix <prefix>] [--description <description>] [--extra <extra...>] - Change a channel’s settings. Note that you can use quotes to include spaces. So if you for example wanted to change the name and description, you would do /chmod edit MyChannel --name MyNewChannel --description "This is a description". Don’t worry about the type and extra field, they are currently unused.
  • /channelmod|chmod create|new <name> [prefix] [description] [type] [extra...] - Create a new channel. Note that you can use quotes to include spaces. Don’t worry about the type and extra field, they are currently unused.
  • /channelmod|chmod delete|remove <channel> - Delete a channel.
  • /pm|msg|whisper [player] <message> - Send a message to another player. The player is optional if you they were the previous player you sent a message to.
  • /r|reply <message> - Sends a PM to the person you most recently had a conversation with. Same as /pm <message>
  • /shout <channel name> <message> - Sends a message to another channel.

Permissions

  • chitchat.chat.color - Allows the player to have their chat color formatted.

  • chitchat.user.joinchannel.[channelName] - Allows players to use /joinChannel. A channel name can be specified to only allow entrance into those channels.

  • chitchat.user.listchannels - Allows players to use /listChannels.

  • chitchat.user.inchannel - Allows players to use /inChannel.

  • chitchat.user.me - Allows players to use /me.

  • chitchat.user.pm - Allows players to use /pm and /r.

  • chitchat.user.shout.[channelName] - Allows players to use /shout. A channel name can be specified to only allow shouting to those channels.

  • chitchat.mod.interface.[channelName] - Allows players to use /channelmod. A channel name can be specified to only allow seeing those channels.

  • chitchat.mod.createchannel.[channelName] - Allows players to use /channelmod create. A channel name can be specified to only allow creating channels with that name.

  • chitchat.mod.editchannel.[channelName] - Allows players to use /channelmod edit. A channel name can be specified to only allow editing channels with that name.

  • chitchat.mod.deletechannel.[channelName] - Allows players to use /channelmod edit. A channel name can be specified to only allow deleting channels with that name.

  • chitchat.mod.announce - Allows players to use /announce.

  • chitchat.mod.announceconsole - Allows players to use /announce -c.

Channel types

Chit chat can have multiple channel types, however at the moment it only has one, so no need to think about that too much.

Simple

Has a prefix, a description and a name. The most barebone type of channel.

Future plans

For now ChitChat only has one channel type, the simple one. Somewhat soon (hopefully) ChitChat will gain a more advanced channel type that is super extensible, especially if you have some other ways of giving users specific permission nodes through commands. So, what are examples of what it should be able to do once it’s in?

  • Spy on channels
  • Listen to multiple channels
  • Filter messages
  • World channels
  • Distance based channels.

#2

ChitChat 1.1

To think this update took over a month(yeah, I’m slow)

Changelog:
Features:

  • You can now move another player(online or offline) to a channel.
    Command is /channel move|moveplayer <name> <channel>
    Permission node is chitchat.channel.mod.move for online players.
    Permission node is chitchat.channel.mod.move.offline for offline players
  • Channels are now saved to disk. Choose between H2 and plaintext in the config
  • Custom join and leave messages

Changes:

  • IMPORTANT!!! settings file was renamed to “settings.conf”
  • IMPORTANT!!! plugin id changed to “chitchat”, this also means that the plugin directory changed
  • internal restructuring, lots of it

Fixes:

  • Chat is now also sent to console, in all it’s glory with colors
  • Test that channels actually exist before executing commands
  • Players in a channel is now shown in one large list, so it has less chance to fill up the entire screen
  • Channel list now sorted

I probably missed some other stuff too.


#3

ChitChat 1.2

Changelog:
Features:

  • Save storage to NBT !! Experimental !!

Changes:

  • Internal cleanup and changes
  • File saves are now done async. Might be a bit faster
  • Should now play nicer with other chat plugins that also use TextTemplateAppliers.
  • !! IMPORTANT !! Prefix and name color are no longer tied together. Name color is now decided by the permission option nameColor.
  • !! IMPORTANT !! To play better with other chat plugins, many arguments in TextTemplates have been prepended with chitchat, ChitChat will try to refresh the affected TextTemplates automatically.

Fixes:

  • Fixed help command with higher depth commands
  • Fixed channel load command not working

Yes this release is still targetting API 4.0.3. This will be the last one though.


#4

This is an amazing plugin! Will you be updating it to 5 anytime soon? :smiley:


#5

Will probably be the next thing I work on. Already got some of the work done.


#6

Is this plugin able to send poke auction and item auctions into its own chat?


#7

Is this still not working on API 5?
I’d love to use this as I’m desperately looking for a Chat Channel plugin, but I see no evidence of this workin on 5+


#8

@Man_Of_Jupiter

You’ll have to elaborate as I’m not familiar with what that is. If it’s not normal chat, then for the current version the answer is no. One of the goals of the new version was to allow processing of a message to decide where it should go.

@Zera_Fox
Sadly no. I’d love to work more on it, but time has been sparse for me lately. I’m thinking of removing nested channels as one of the goals of the rewrite to make stuff quicker and easier.


#9

@Katrix
Nested Channels? I’m not sure what you mean by that…
Please don’t tell me you’re going to change to something like what “Simple Chat” does instead? :
I hate the idea of a /chat here is a channel, without actually having the server’s admin create said channel. Kind of need the ability to say “These are the chat channels, use them appropriately”, including a ‘local’ function… Yeah?


#10

Think of how channels workin for exempel Mumble where you can put channels within channels. Kind of like that.


#11

So I’ve managed to get in some work on this thing finally, and I might have a release ready by the weekend that is at feature parity with the old version.

I’m also playing around a bit with what I call the advanced channel type. The advanced channel type takes the idea that the two thing that defines a channel is who receives the messages sent to it, and how those messages are transformed.

Here is a thought up config for how this might look. Notice the listeners and transformations fields for The other channel. This illustrates kind of what you can do. Whitespace has no meaning in either of them. I’d love to get feedback on how the advanced channel feels based in this.

channels = [
  {
    type = simple
    name = Global
    prefix {
      color = gold
      text = G
    }
    description {
      text = "The global channel"
    }
  }
  {
    type = advanced
    name = "The other channel"
    prefix {
      color = gold
      text = O
    }
    description {
      text = "Another channel"
    }
    listeners = """
      (
        (inChannel intersect sameWorld) union permission[admin.listenTo.OtherChannel]
      ) union players[6611d165-54bb-4007-8dc5-cd4f6b168745, 9c36eef0-c7ed-4eaf-99f7-984ff7c0a794]
    """
    transformations = """
      plain -> distanceDistort[max=500, min=100] -> hoverInfoPlayerName -> replace[(?:\d*\.)?\d+, No numbers allowed]
    """
  }
]
globalListeners = """"
  channel union console
"""
globalTransformations = """
  channel
"""

#12

ChitChat 2.0 has now been released. The changes overall are too many to summarize here, but some of the bigger ones are that it now depends on KatLib, it now works on 5.0.0, and 6.0.0, editing channels is now easier. There is now an interface in similar fashion to HomeSweetHome that can be accessed with /channels (normal users) and /chmod (moderators), now supports json prefixes and suffixes, and more.


#13

In our continuing effort to phase out the Plugin Releases category, this thread is being locked because the plugin is already listed on Ore.

Check it out: https://ore.spongepowered.org/Katrix/ChitChat


#14