1.2.6
Compatibility
Changes
KKS-chat 1.2.6 (Minecraft 26.1+)
What's New
Rules System
You can now define custom rules in kks-chat.json to automatically transform incoming messages.
Each rule has an "if" block (conditions) and a "then" block (actions).
Conditions — match by message type, text content, prefix, suffix, or a Java regex pattern.
Multiple conditions can be combined with AND (default) or OR logic via "matchType".
Actions — hide the message, change its icon, color the full text or just the matched fragment,
replace the text entirely or only the matched part, override the display time, and more.
Use "stopAfter": true to prevent further rules from processing the same message.
Template Variables
String actions (replaceText, replaceMatch) support {variable} placeholders:
| Variable | Value |
|---|---|
{my_name} |
Your in-game player name |
{sender} |
The message sender's name |
{text} |
The full original message text |
{matched} |
Fragment matched by contains or regex |
{type} |
Message type name (e.g. SYSTEM, PLAYER_CHAT) |
{time} |
Current time — HH:mm |
{time_s} |
Current time — HH:mm:ss |
{repeat} |
Repeat counter (1 if the message is unique) |
Animations
Appearance and disappearance animations are now configured separately via animationIn and animationOut.
Available values: FADE, SLIDE_LEFT, SLIDE_RIGHT, SLIDE_UP, SLIDE_DOWN, BOUNCE, NONE
Background Colors
Each message type can have its own background color, configured under bgColors in the config.
Accepts any hex color string, e.g. "#1A0028".
Configurable Icons
Icons for all message types (system, error, whisper, join/leave, etc.) are now editable directly in the config using any valid Minecraft item ID.
Enable / Disable Toggle
A new button in the ModMenu settings screen lets you switch between KKS Chat and the vanilla chat interface without restarting the game.
Bug Fixes
- Fixed normal chat messages being incorrectly classified as whispers
- Fixed clickable and hoverable text (e.g. from
/tellraw) not working on servers like Hypixel - Fixed commands in click events failing due to an extra
/being sent - Added a dedicated
COMMAND_BLOCKmessage type — command block output is now classified correctly - Config file is now created automatically on first launch with default values
How to Write Rules
"rules": [
// Hide all command block output
{ "if": { "type": "COMMAND_BLOCK" }, "then": { "hide": true } },
// Gold icon and golden color for [VIP] tag
{
"if": { "contains": "[VIP]" },
"then": { "icon": "minecraft:gold_ingot", "colorMatch": "#FFD700", "displayTime": 8 }
},
// Custom join message with sender name and timestamp
{
"if": { "type": "JOIN_LEAVE", "contains": "joined" },
"then": { "replaceText": "→ {sender} joined [{time_s}]", "color": "#55FF55" }
},
// Highlight all numbers in system messages
{
"if": { "type": "SYSTEM", "regex": "(\\d+)" },
"then": { "colorMatch": "#FFFF55" }
}
]
Conditions ("if")
| Field | Type | Description |
|---|---|---|
type |
string | Message type: PLAYER_CHAT WHISPER SYSTEM ERROR SLEEP ACHIEVEMENT CHALLENGE COMMAND_BLOCK JOIN_LEAVE SCREENSHOT |
contains |
string | Message text contains this string |
startsWith |
string | Message text starts with this string |
endsWith |
string | Message text ends with this string |
regex |
string | Java regex — first capture group (...) becomes {matched} |
matchType |
"ALL" / "ANY" |
Combine conditions with AND (default) or OR |
Actions ("then")
| Field | Type | Description |
|---|---|---|
hide |
boolean | Remove the message entirely |
color |
"#RRGGBB" |
Tint the entire message text |
colorMatch |
"#RRGGBB" |
Tint only the matched fragment |
icon |
string | Override icon using a Minecraft item ID |
displayTime |
number | Override display time in seconds for this message |
replaceText |
string | Replace the entire message text (supports variables) |
replaceMatch |
string | Replace only the matched fragment (supports variables) |
noStyle |
boolean | Disable stylization for this message |
stopAfter |
boolean | Stop — do not evaluate any further rules |
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:2tjYaIWP:Dvy5iF2D"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:2tjYaIWP:Dvy5iF2D"
}

