KKS Chat

Custom chat with player avatars, whispers, and anti-spam. Fully customizable positioning.

293

KKS Chat

KKS Chat

Custom chat for Minecraft with player avatars, settings, spam protection, and multi-language UI.

---

Main Features

Beautiful Interface

Chat shows player avatars next to messages. Each line is drawn in its own block with adjustable background transparency. You can move the whole chat to different corners or keep it centered (see Positioning).

Hi!

Positioning

In Position, cycle Position to place the chat on screen. Modes:

- Right bottom — default, above the hotbar area - Right bottom - Right bottom / Right bottom - Right bottom / Right bottom

Message blocks align to the chosen side or stay centered.

Anti-Spam System

When enabled, only fully identical consecutive messages are merged and shown with a repeat counter (e.g. `x3`). You can turn anti-spam off in settings; history regroups or splits accordingly.

antispam

Whisper

Private messages are shown with dedicated formatting (sender / receiver).

whisper

Animations

Messages animate in and out of the screen. Choose a separate style for appearance and disappearance in the config:

- None — smooth opacity transition (default) - None — slides in/out from left, right, top, or bottom - None — elastic spring effect on entry - None — instant appear and disappear

---

Settings

Settings are in saved (KKS Chat section). Values are saved to `config/kks-chat.json` and restored after restart.

KKS Chat On / Off

Toggle between KKS Chat and the vanilla chat interface without restarting the game.

Background Transparency

0%–100% opacity for message backgrounds.

Display Time

How long overlay messages stay visible: 1–60 seconds.

Maximum Messages (history)

Stored history size: 50–500 messages (older lines are dropped).

Other Options

- Position — turn custom message formatting on or off - Position — enable or disable identical-message merging - Position — see Positioning above

Settings

---

Supported Languages

The mod ships with English language files (`assets/kks-chat/lang/`). UI strings follow the game language when a matching file exists; otherwise English is used as fallback.

- 🇬🇧 العربية (en_us) - 🇷🇺 العربية (ru_ru) - 🇩🇪 العربية (de_de) - 🇪🇸 العربية (es_es) - 🇵🇹 العربية (pt_br) - 🇵🇹 العربية (pt_pt) - 🇮🇹 العربية (it_it) - 🇵🇱 العربية (pl_pl) - 🇹🇷 العربية (tr_tr) - 🇰🇷 العربية (ko_kr) - 🇯🇵 العربية (ja_jp) - 🇸🇦 العربية (ar_sa)

---

Message History

Press `T` to open chat: full history with scrolling. Grouped repeats can be expanded to show each line.

Chat history

---

Configuration

The config file is created automatically at `config/kks-chat.json` on first launch. All settings are documented with comments inside the file — open it in any text editor.

Icons

Each message type (system, error, whisper, join/leave, etc.) has its own icon. You can change any icon to any valid Minecraft item ID:

```json "iconSystem": "minecraft:stick", "iconWhisper": "minecraft:paper", "iconJoinLeave": "minecraft:oak_door" ```

Background Colors

Set a custom background color per message type:

```json "bgColors": { "SYSTEM": "#000000", "ERROR": "#1A0000", "ACHIEVEMENT": "#001A04", "CHALLENGE": "#1A0028" } ```

Animations

Configure appearance and disappearance animations independently:

```json "animationIn": "BOUNCE", "animationOut": "SLIDE_LEFT" ```

Available values: `FADE`, `SLIDE_LEFT`, `SLIDE_RIGHT`, `SLIDE_UP`, `SLIDE_DOWN`, `BOUNCE`, `NONE`

---

Rules

Rules let you automatically transform messages based on conditions — change icons, colors, text, display time, or hide messages entirely. Rules are defined in `kks-chat.json` under `"rules"`.

Each rule has an `"if"` block (conditions) and a `"then"` block (actions):

```json { "if": { "type": "COMMAND_BLOCK" }, "then": { "hide": true } } ```

Conditions

| Field | Description | |---|---| | `type` | Message type: `PLAYER_CHAT` `WHISPER` `SYSTEM` `ERROR` `SLEEP` `ACHIEVEMENT` `CHALLENGE` `COMMAND_BLOCK` `JOIN_LEAVE` `SCREENSHOT` | | `contains` | Text contains this string | | `startsWith` | Text starts with this string | | `endsWith` | Text ends with this string | | `regex` | Java regex — first capture group becomes `{matched}` | | `matchType` | `"ALL"` (AND, default) or `"ANY"` (OR) |

Actions

| Field | Description | |---|---| | `hide` | Remove the message entirely | | `color` | Tint the full message text — `"#RRGGBB"` | | `colorMatch` | Tint only the matched fragment | | `icon` | Override the icon (Minecraft item ID) | | `displayTime` | Override display time in seconds | | `replaceText` | Replace the entire message text | | `replaceMatch` | Replace only the matched fragment | | `stopAfter` | Stop — do not evaluate further rules |

Variables

Use `{variable}` placeholders inside `replaceText` and `replaceMatch`:

| Variable | Value | |---|---| | `{my_name}` | Your in-game name | | `{sender}` | Sender's name | | `{text}` | Full original message | | `{matched}` | Fragment matched by `contains` or `regex` | | `{type}` | Message type name | | `{time}` | Current time — `HH:mm` | | `{time_s}` | Current time — `HH:mm:ss` | | `{repeat}` | Repeat counter |

Example

```json "rules": [ { "if": { "type": "COMMAND_BLOCK" }, "then": { "hide": true } }, { "if": { "contains": "[VIP]" }, "then": { "icon": "minecraft:gold_ingot", "colorMatch": "#FFD700", "displayTime": 8 } }, { "if": { "type": "JOIN_LEAVE", "contains": "joined" }, "then": { "replaceText": "→ {sender} joined [{time_s}]", "color": "#55FF55" } } ] ```

---

Support

Questions or suggestions: ddev14 on Discord.

ADS