Tags
Creators
Details
1.16.4
Compatibility
Changes
ChatColor2 v1.16.4
Chat plugin compatibility release. Includes the ZelChat support from 1.16.3. Verified against a live Folia 26.1.2 server.
Fixed
-
No colour at all with EssentialsX Chat, LPC and similar chat plugins (regression in 1.16.2).
- 1.16.2 moved colouring onto Paper's modern chat event only. Chat formatters that cancel the legacy chat event and send the message themselves therefore captured the message before ChatColor had coloured it, so nothing was coloured.
- Colouring now happens on the chat event again, as it did in 1.16.1 and earlier.
-
EssentialsX stripping the colour by permission.
- EssentialsX sanitises the chat message against the sender's permissions at LOWEST priority.
- Because ChatColor's colour lives in the message text, it was treated as something the player typed and removed — all of it for players without "essentials.chat.color", and hex/gradients for players without "essentials.chat.rgb".
- ChatColor now also re-applies the colour when the chat line is rendered, after every other plugin has run, so there is nothing left to strip.
- Messages that still carry colour are left untouched, so plugins that handle colour themselves keep working and nothing is coloured twice.
-
Gradient, rainbow and hex colours not working with ZelChat.
- ZelChat builds the chat line from the raw message plus its own format and ignores the Bukkit/Paper chat events entirely, so colours written to the chat event were discarded before players saw them.
- Plain colour codes survived because ZelChat parses those itself, which is why only gradients, rainbows and hex colours appeared broken.
- ChatColor now applies the colour through ZelChat's own module API ("ModulePriority.HIGHEST", so it runs after ZelChat's internal modules).
- Your chat format, prefixes and tags are left untouched — only the player's message is coloured.
Notes
- Players' own colour codes are still respected exactly as before; the "color-override" setting is unchanged.
- "/chatcolor pause" is respected by the render-time pass too.
- The ZelChat integration is automatic and takes precedence when ZelChat is installed.
- If ZelChat is present but too old to provide its API, ChatColor logs a warning and uses the chat events instead.
- Messages that ZelChat or another module cancelled, filtered or rewrote are left alone.
- "use-modern-chat-event" now controls the render-time pass rather than which chat event is used. Leave it on unless you specifically want the old chat-event-only behaviour.
- Run "/chatcolor debug" to see which path is active and which plugins are on the chat events.
- Nothing changes for servers without ZelChat or a permission-based chat plugin.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:tYCQRgzB:EF72cWw5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:tYCQRgzB:EF72cWw5"
}

