#chat-chat-info

1 messages · Page 1 of 1 (latest)

arctic oak
#

For the past week I've been working on a big improvement of the API and also of the plugin in general. This includes removing some unnecessary stuff, rewriting some stuff, adding some other stuff. The API is in what I believe is a usable state. You can now write plugins that work with ChatChat with just the API and without needing to depend on the plugin itself. There's loads of changes however and since I've been working on the changes themselves I did not have time to test a bunch. I would love if you guys could help with that part. The changes, the plugin jar and the API jar will all be posted in the message under.

Important to note is that none of these changes are final and could be completely redone or rewind. Another thing to note is that these changes are still in an open PR so they are not going to be available thru Jenkins or the GitHub repository. 1/3

#

2/3

For starters, let's talk about the plugin.

  • Added per channel formats. These formats work the same way as the ones from formats.yml but they take precedent over those. So if a player has access to a format from the specified channel and one from formats.yml, the channel format will be used no matter what priorities they have.
  • Added configurable tags. They can be created and modified in the new placeholders.yml file. These tags can be used in formats but players can also use them in chat if they get their corresponding permissions: chatchat.tag.placeholder.<tag-name>. Learn more about this in the attached placeholders.yml file.
  • The <recipient> tag now works like the <papi> tag so it supports the :closing/:including tags, and also it supports minimessage tags now. Before it only used to support legacy colors. Example of usage: <recipient:closing:player_displayname>
  • Channel Mentions are now just as customisable as personal mentions in settings.yml

Attached is the plugin jar. Also here are the new plugin files:
settings.yml - https://paste.helpch.at/owadedegel.pl
placeholders.yml - https://paste.helpch.at/agejecaqup.bash
channels.yml - https://paste.helpch.at/omuhetoman.php
the formats.yml file was not changed so far.

#

3/3

UsersHolder

  • Let's you get any user or remove them (removing them will save them to the database and remove them from the cache. They will be reloaded the next time someone attempts to get that user).

ChannelTypeRegistry

  • Let's you register new channel types. Server owners will be able to then use these new channel types directly inside channels.yml

Rules and RulesManager

  • Rules are used for testing private and public messages. ChatChat will make sure all rules are respected before letting messages go thru. ChatChat will cancel messages that don't respect a rule and will send a message but you can also override the deny message.

Mentions and MentionsManager

MiniPlaceholders and MiniPlaceholdersManager

  • These are just custom MiniMessage tags that you can now register for both formats and the messages themselves. ChatChat already provides a way to register simple tags that are just text replacements in placeholders.yml

Hooks, VanishHooks and HooksManager

  • Hooks are just simple ways of adding more integration with ChatChat. Hooks registered in the HookManager will be directly provided the ChatChatAPI.
  • VanishHooks are ways of adding more vanish integration with ChatChat. These hooks can also do everything normal Hooks can do but they also provide a new method that checks if a user can see another user. This will directly integrate with ChatChat's tab completion, private messaging and mentions.

Attached is the api jar which you can now use as a dependency instead of using the plugin itself.

arctic oak
arctic oak
#

TO NOTE!! Some changes(fixes) were made to the channels.yml config. If by any chance you were using per channel formats, they might break for you. The fix should be as simple as removing one of the formats: line if there are 2 in your config (see image)

TO NOTE!! x2 As always, backing up all your ChatChat configs is something you should do before updating!

- Fixed wrong channel formats path. From `channels.<channel-name>.formats.formats.<format-name>` to `channels.<channel-name>.formats.<format-name>`
- Fixed wrong message being sent on /chatchat reload when the number of loaded formats and/or channels were 1
- Added a console warning when the default channel can't be loaded/found to let the user know that an internal channel will be used.
- Listed the number of channel formats that were loaded on /chatchat reload
- Listed the number of formats, channels and channel formats that were loaded on startup (in console)
- Removed the default channel formats. They were only creating confusion for new people.

I have tested these features locally but feedback is welcomed in #chat-chat-beta.

arctic oak
#

EXPERIMENTAL FEATURES!! CREATE BACKUPS OF YOUR FILES
This build adds cross server messaging support!

IMPORTANT NOTES

  • Only supports Plugin Messaging for now. That means it works with BungeeCord (and non breaking forks) but also on Velocity as long as you enable bungee-plugin-message-channel in your velocity.toml!
  • Only supports public messages. Private/direct messages are very far behind.
  • Mentions do not work across servers!
  • The tags <recipient> and <papi-rel> do not work across servers!
  • Relational PlaceholderAPI placeholders do not work across servers!

How to enable?
Each channel has a new option called cross-server. You will need to have channels with the same name on all servers you want it to work on and all those channels need to have the cross-server option set to true.

Other known issues:

  • The channels aren't always properly reloaded when /chatchat reload is used. This means you might want to restart the servers after changing the cross-server option.

BACKUP YOUR FILES!!!

arctic oak
arctic oak
#

The ChatChat API suffered a few changes when cross-server support was added:

  1. Channels have a new method called crossServer() that returns a Boolean value indicating whether or not messages sent in that channel should be sent cross-server or not.
  2. The channel builder passed to ChannelTypeRegistry needs to have a boolean value for cross-server.

You can get the build from here.

hushed oracle
#

ChatChat Beta

ChatChat is a new, modern chat plugin from HelpChat - a spiritual successor to DeluxeChat.

This is the first beta release of ChatChat. Things will break, there are features missing, and there is a lot more to do before release.

Current features

  • Channels with permission gates and message prefixes for quick switching
  • Full text component support (that means RGB) through MiniMessage
  • Have multiple different formats on one server. See below for more details
  • Private messages and socialspy, again with configurable formats
  • Mentioning, both individual users and @channel/here/everyone, plays a configurable sound and highlights the mention.
  • DiscordSRV support
  • Towny town/nation chat support

Permissions

  • chatchat.channel.see.<channelname> - receive messages from channel
  • chatchat.channel.use.<channelname> - send messages to channel
  • chatchat.mention - mention other players individually
  • chatchat.mention.everyone - mention everyone with @here/@channel/@everyone
  • chatchat.format.<formatname> - use the named format. The format with the highest priority that the player has permission to access will be used
  • chatchat.utf - use special characters in messages
  • chatchat.pm - use private messaging incl /reply
  • chatchat.socialspy - enable socialspy to see other users' PMs

Known issues

  • MiniMessage has a tantrum and dies when given a legacy formatter through a placeholder - we're working on it
  • Essentials has a chance of overriding the private message commands. We're looking into this.
  • Legacy color codes for in-game chat are not properly displaying

Using formats

  • Formats are lists of strings containing MiniMessage (https://docs.adventure.kyori.net/minimessage/) formatting tags and PlaceholderAPI placeholders
  • These strings are concatenated together and are separated just to keep the config readable
  • The special placeholder <message> is used to represent the message content

Disclaimer
ChatChat is not at a production-ready stage. We advise you to not use it on a production server. If you choose to do so, you are doing it at your own risk.

Issues / Suggestions
Issues and Suggestions can be reported here: https://github.com/HelpChat/ChatChat/issues

hushed oracle
#

Update 4/8/2022

Features

  • Adds support for all minimessage tags inside messages. they're permission based (full permission list at the end)
  • Adds a new minimessage tag called <item>. It will basically display the item you're holding in hand and it is customizable from settings.yml

Fixes

  • Fixed the channel quick prefix being removed from a message even if the user didn't have access to that channel and the message was sent in another channel.

Permissions

+ chatchat.tag.item (for <item>)
+ chatchat.tag.color (for all colors, hex and simple ones like <yellow>)
+ chatchat.tag.click
+ chatchat.tag.font
+ chatchat.tag.gradient
+ chatchat.tag.hover
+ chatchat.tag.insertion
+ chatchat.tag.keybind
+ chatchat.tag.newline
+ chatchat.tag.rainbow
+ chatchat.tag.reset
+ chatchat.tag.translatable
+ chatchat.tag.obfuscated
+ chatchat.tag.bold
+ chatchat.tag.strikethrough
+ chatchat.tag.underline
+ chatchat.tag.italic
hushed oracle
#

Update 4/25/2022

Fixes

  • Fixed mentions only showing to the receiver not to the sender

Changes

  • Changed permissions listed in plugin.yml and their default values
  • Changed over some more hardcoded messages to be configurable in the message.yml file

Permission Additions / Changes

- chatchat.mention.personal - can mention individual people
- chatchat.mention.everyone - can mention the entire channel with @everyone or @channel
- chatchat.mention.personal.block - won't get pinged by personal mentions
- chatchat.mention.everyone.block - won't get pinged by channel mentions
- chatchat.mention.personal.block.override - can mention individual people including those with the block permission
- chatchat.mention.everyone.block.override - can mention the entire channel and even people with the block permission will get pinged
hallow wren
#

Update 4/29/2022

Update moved from the general channel into here to be easier to find.

Fixes:

  • Fixed the console just throwing errors when someone sends a message with legacy colors in it. Now those legacy colors are removed.
#

Changes:

  • Formats are now maps. This means the format can look something like this now:
formats:
  default:
    parts:
      some-part-name:
        - '<red>Prefix'
      name:
        - ' %player_name%'```
    Yes the format parts can be infinite and named anything (as long as its a valid yaml key). And also if you don't want this just make it 1 big part.

- Added a way to toggle private messages: `/togglemsg` - `chatchat.pm.toggle`
- Switched recipient placeholders from `%recipient_PLACEHOLDER-WITHOUT-BRACKETS%` to `<recipient:PLACEHOLDER-WITHOUT-BRACKETS>`. This is to use the better parser offered by minimessage and for more consistency. `<recipient>` is also a placeholder and will just return the recipient's name.
- Added more PlaceholderAPI placeholders. `%chatchat_channel_message_prefix%`, `%chatchat_social_spy_enabled%`, `%chatchat_private_messages_enabled%` and `%chatchat_private_messages_recipient%`. This means there's full parity with DeluxeChat + extra.
- Some PlaceholderAPI placeholders work without a target as well.
- Last messaged user expires after 5 minutes and also when the last messaged user vanishes (unless the player can still see the last messaged user). Also if a vanished user messages a player that can not see them, the player will be able to reply to the vanished user as they intentionally gave away the fact they are online.
- Switched last hard coded messages to configurable ones. (except for the version message of course).
- No more tab completing the vanished users. This currently works with SuperVanish, PremiumVanish, EssentialsX and any other vanish plugin that uses spigot's API to hide a player from another.
- Mentions are silent when a vanished player is mentioned. This means the sender sees the message as if the vanished user was offline, the vanished user receives no ping (sound) but in chat the message is formatted as a ping for the vanished user.

**Feedback and questions are welcomed in [#chat-chat-beta](/guild/164280494874165248/channel/960861557095530566/)!**
arctic oak
#

Update 12/7/2022 (mm/dd/yyyy format better)

Fixes:

  • Fixed towny channels and possible other hooks not correctly registering.
  • Fixed radius option not working with towny channels.
  • Fixed duplicate message being set to console. This is done by adding a new console format in formats.yml. The way this new format works means you can also use %1$s and %2$s in your format and they'll be replaced by player display name and the message respectively. You are also not allowed to use % anywhere else in the format itself.
console-format:
  parts:
    channel:
      - '%chatchat_channel_prefix% '
    prefix:
      - '<gray>[<color:#40c9ff>Chat<color:#e81cff>Chat<gray>] '
    name:
      - <white>%player_name%
    message:
      - ' <gray>» <white><message>'
  • Fixed some channel values not being optional. Now if there's a radius missing, it will default to -1, if there's a channel prefix missing, it will default to no channel prefix, and if there's a message prefix missing it will default to no message prefix.
  • Fixed channel types being case sensitive. Now "towny_town" and "TOWNY_TOWN" are the same (they're no longer case sensitive).
  • Fixed typo in "toglepms" command.
  • Fixed error sometimes being thrown when attempting to register the toggle commands.
  • Fixed error being thrown if message sent by player contained %.

New:

  • Added a config message for when a player has permission to use a channel but is not in a town (for towny channels).
  • Added the ability to use multiple toggle commands for a channel. This means the toggle-command option is now a list. ```yml
    toggle-command:
    • 'global'
    • 'g'```

As always, feedback is welcomed!