Embellish Chat

Enhance Minecraft chat with item and inventory showcases, mentions, and formatting.

2,53k

Embellish Chat

<div align="center"> <img src="https://hanhy06.github.io/embellish-chat-wiki/assets/logo.svg" alt="Embellish Chat" width="460"> </div>

<div align="center"> <a href="https://modrinth.com/mod/embellish-chat"> <img alt="Download" src="https://img.shields.io/modrinth/dt/embellish-chat?label=Modrinth&logo=modrinth"> </a> <a href="https://www.curseforge.com/minecraft/mc-mods/embellish-chat"> <img alt="CurseForge Downloads" src="https://img.shields.io/curseforge/dt/1415027?label=CurseForge&logo=curseforge&color=F16436"> </a> <a href="https://hanhy06.github.io/embellish-chat-wiki/"> <img alt="Wiki" src="https://img.shields.io/badge/wiki-pages-blueviolet?logo=github"> </a> <a href="https://hanhy06.github.io/embellish-chat-wiki/config-generator"> <img alt="Config Generator" src="https://img.shields.io/badge/config-generator-teal?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IC00IDMyIDMyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgZmlsbD0ibm9uZSIgY2xhc3M9Im92ZXJmbG93LXZpc2libGUiPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJidWJibGVHcmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRGNDZFNSIvPgo8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM5MzMzRUEiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJzcGFya2xlR3JhZCIgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSI+CjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNGNTlFMEIiLz4KPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjRjQzRjVFIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxmaWx0ZXIgaWQ9Imdsb3ciIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIyMDAlIiBoZWlnaHQ9IjIwMCUiPgo8ZmVEcm9wU2hhZG93IGR4PSIwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyLjUiIGZsb29kLWNvbG9yPSIjRjQzRjVFIiBmbG9vZC1vcGFjaXR5PSIwLjQiLz4KPC9maWx0ZXI+CjwvZGVmcz4KPHBhdGggZD0iTTggOGgxMmEyIDIgMCAwIDEgMiAydjdhMiAyIDAgMCAxLTIgMmgtMS41bC0zLjUgM3YtM0g4YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIDItMnoiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxLjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE2IDRINGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxLjV2My41TDkgMTZoN2EyIDIgMCAwIDAgMi0yVjZhMiAyIDAgMCAwLTItMnoiIHN0cm9rZT0idXJsKCNidWJibGVHcmFkKSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTYgOWg3IiBzdHJva2U9InVybCgjYnViYmxlR3JhZCkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik02IDEzaDQiIHN0cm9rZT0idXJsKCNidWJibGVHcmFkKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTE5IDFsMS41IDMuNUwyNCA2bC0zLjUgMS41TDE5IDExbC0xLjUtMy41TDE0IDZsMy41LTEuNXoiIHN0cm9rZT0idXJsKCNzcGFya2xlR3JhZCkiIHN0cm9rZS13aWR0aD0iMS44IiBmaWxsPSJ1cmwoI3NwYXJrbGVHcmFkKSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsdGVyPSJ1cmwoI2dsb3cpIi8+CjxwYXRoIGQ9Ik00IDFsLjcgMS44TDYuNSAzLjUgNC43IDQuMiA0IDZsLS43LTEuOEwxLjUgMy41bDEuOC0uN3oiIHN0cm9rZT0idXJsKCNzcGFya2xlR3JhZCkiIHN0cm9rZS13aWR0aD0iMS41IiBmaWxsPSJ1cmwoI3NwYXJrbGVHcmFkKSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjIgMTNsLjUgMS41IDEuNS41LTEuNS41LS41IDEuNS0uNS0xLjUtMS41LS41IDEuNS0uNXoiIHN0cm9rZT0idXJsKCNzcGFya2xlR3JhZCkiIHN0cm9rZS13aWR0aD0iMS41IiBmaWxsPSJ1cmwoI3NwYXJrbGVHcmFkKSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4="> </a> </div>

---

Embellish Chat enhances Minecraft chat with item and inventory showcases, built-in icons, mentions, and rich formatting. Players can show off gear, open showcased inventories, and use more expressive chat features without requiring the mod on their client.

---

✨ Key Features

* Item and Inventory Showcases Showcase your held item, inventory, or ender chest directly in chat with `[i]`, `[inv]`, and `[end]`, allowing other players to inspect them interactively.

* Built-in Chat Icons Use `:name:` syntax to insert built-in Minecraft-based icons into messages.

* Rich Chat Formatting Style messages with bold, italic, underline, strikethrough, custom fonts, hex colors, gradients, presets, and rainbow effects.

* Smart Mention System Mention players, `@here`, `@team(name)`, `@world(name)`, or `@everyone` with clear notifications. LuckPerms group mentions are also supported.

* Useful Chat Utilities Hover messages to see exact timestamps and click them to copy their content with the timestamp.

---

🛠️ Styling System

Use the following patterns directly in the chat window to apply styles:

| Feature | Syntax | Example | Showcase | |:-----------------|:------------------------|:--------------------------------------------------------------|:------------------------------------------------------------------------------------------| | Bold | `You really need to read this!` | `You really need to read this!` | You really need to read this! | | Italic | `Text` | `This is top secret...` | Text | | Underline | `__Text__` | `__Check this out__` | This is top secret... | | Strikethrough | `~~Text~~` | `~~We don’t talk about this anymore~~` | %%MD3%% | | Obfuscated | `||Text||` | `||Unreadable text||` | %%MD4%% | | Color (Hex) | `[Text]<#RRGGBB>` | `[Blue]<#0000FF> like the deep ocean` | %%MD5%% | | Color (Gradient) | `[Text]<#RRGGBB #R...>` | `[Grraaaaaaadieeeeent]<#ffaaaa #aaaaff #aaffaa>` | %%MD6%% | | Color (Preset) | `[Text]<preset>` | `[pink]<pink> pig` | %%MD7%% | | Color (Rainbow) | `[Text]<RAINBOW>` | `look at this [rainbow]<RAINBOW>` | %%MD8%% | | Link | `%%MD16%%` | `Download it %%MD17%%` | %%MD9%% | | Font | `[Text]{path}` | `[Blorp Zorp]{minecraft:alt}` | %%MD10%% | | Item | `[i]` | `Look at my [i]` | %%MD11%% | | Inventory | `[inv]` | `Look at my [inv]` | %%MD12%% | | Ender Chest | `[end]` | `Look at my [end]` | %%MD13%% | | Icon | `:name:` | `I :love: you` | %%MD14%% | | Mention | `@PlayerName` | `Hello, @User` | %%MD15%% |

> More Info: > > * More Info: The built-in default link rules only match `https://` URLs. > * More Info: Presets (e.g., `pink`) are defined in `presets.json/color`. > * More Info: The `path` requires a namespaced ID (e.g., `minecraft:alt`). > * More Info: Icon presets and item sprite rendering use atlas-backed components, so they are not supported on older Minecraft versions. > * More Info: For advanced syntax, style combinations, and detailed rules, refer to `/embellish-chat help style` or the More Info:.

---

🗣️ Mention System

| Target | Behavior | |:---------------|:------------------------------------------------------------------------------------------| | `@PlayerName` | Mentions a specific player. | | `@team(name)` | Mentions all players in the specified team. | | `@group(name)` | Mentions all players in the specified 64 blocks group. | | `@world(name)` | Mentions all players in the specified world. | | `@everyone` | Mentions every player on the server. | | `@here` | Mentions players within a configurable radius (default: 64 blocks) in the same world. |

> More Info: > > * More Info: Successful mentions send a notification sound to the target and automatically tint the text (e.g., to the team color). > * More Info: `@group` requires More Info:. Without it, the mention will be ignored. > * More Info: `@team` and `@Player` mentions start from the `team_color` value in `config.json`, then use the target's team/display styling when available. If `team_color` is `null`, the mention text is left uncolored. > * More Info: The notification sound uses the More Info: category (falls back to the More Info: category on Minecraft 1.21.5 and earlier). > * More Info: For a full list of mention types and advanced usage, refer to More Info:.

---

⌨️ Commands

Admin Commands

> Requires OP Level 2 (or `GAMEMASTERS_CHECK` on 1.21.11+).

* `/embellish-chat regex_test <regex> <text>` Reloads all configuration files under `/config/embellish-chat/` immediately. * `/embellish-chat regex_test <regex> <text>` Blocks or restores a player's access to all mod features. * `/embellish-chat regex_test <regex> <text>` Repeatedly simulates `<count>` messages for `<ticks>` to stress-test the server's message-processing performance. * `/embellish-chat regex_test <regex> <text>` Tests the provided `<regex>` against `<text>` and highlights capture groups to analyze the match result.

User Commands

> Available to all players (no permission required).

* `/embellish-chat notification` Opens the last shared inventory/ender/item of the specified player. * `/embellish-chat notification` Displays the mention rules available to you based on your permissions. * `/embellish-chat notification` Displays the styling rules available to you based on your permissions. * `/embellish-chat notification` Displays available icon presets from `presets.json/icon` in `name - icon` format. * `/embellish-chat notification` Toggles your personal mention notification preferences. *(Enabled/disabled globally by `notify_command_enabled` in the config).*

---

⚙️ Configuration

Embellish Chat provides powerful functionality through the use of regular expressions. Because regular expressions are inherently difficult, it is recommended to leverage various AI tools for rule creation and optimization.

Config

The configuration file is located at `config/embellish-chat/config.json`. ``` { //version "version": "current mod version",

//setting "delimiter": ",", "timestamp": "yyyy-MM-dd HH:mm:ss", "command_alias": "ec", "url_color": "#0000EE", "team_color": "#FF55FF", "notify_command_enabled": true, "notify_mention_enabled": true, "require_same_channel": true, "disable_vanilla_chat_format": false,

//player list "banned_players": [], "notify_off_players": [] } ```

* The `version` field must not be modified manually. * `ConfigManager` writes `config.json`, `styles.json`, `mentions.json`, and `presets.json` separately, then merges them into one runtime `Config` when loading. * Missing sections are restored from the built-in defaults during that merge step. * If the stored `version` does not match the running mod version, the mod keeps the current in-memory configuration and ignores the mismatched load. * The core configuration logic is defined in `style_rules` and `mention_rules`. * Rules are processed from top to bottom, so placing a catch-all rule earlier may override more specific rules defined below. * The `delimiter` value is internally handled as a regular expression; special characters such as `|` must be properly escaped. * `command_alias` registers an additional root command that redirects to `/embellish-chat` when the config is loaded with a non-blank value. * `team_color` is the base color used when styling `@team` and `@Player` mentions. * If `team_color` is missing or set to `null`, those mentions are left without an automatic color. * `require_same_channel` limits `ADVANCED_CHAT_CHANNEL` mentions to the sender's current Advanced Chat channel when enabled. * Reloading the config refreshes the runtime style and mention processors, so updated `style_rules`, `mention_rules`, `timestamp`, `url_color`, `whitelist`, `color`, `icon`, and `item` values take effect immediately. * To avoid JSON syntax errors and ensure valid configurations, using the Web Config Generator is strongly recommended.

Styling

The configuration file is located at `config/embellish-chat/styles.json`. ``` { "style_rules": { "embellish-chat.chat": [ { "pattern": " ... ", "comment": "...", "styles": [ { "styleType": " ... ", "preset": " ... " } ] } ... ] } } ```

* `styles`: This is a regular expression for scanning text. It must have two capture groups. * `group 1`: This is text to be styled. * `group 2`: This is text passed as an option. * `styles`: This comment is used in `/embellish-chat help style`. * `styles`: Defines the styles to be applied to captured group 1. * `styleType`: This is the style type. You can use all types listed in the `styles`. * `preset`: This is a preset value. If a value is provided, it is always used; if it is empty, the content of the user's captured group 2 is used instead. * Each top-level key such as `embellish-chat.chat` is also treated as a permission node. * Each `styleType` name must match a handler registered in the runtime `StyleRegistry`.

Mention

The configuration file is located at `config/embellish-chat/mentions.json`. ``` { "mention_rules": { "embellish-chat.mention": [ { "pattern": " ... ", "comment": "...",

"title": " ... ", "sound": { ... },

"cooldown": 0, "onlyTarget": false,

"mentions": [ { "mentionType": " ... ", "preset": " ... " } ], "styles": [ ... ] } ... ] } } ```

* `styles`: This is a regular expression for scanning text. It must have one capture group. * This is the mention option (e.g. team name, LuckPerms group). * `styles`: This comment is used in `/embellish-chat help mention`. * `styles`: This is the title shown on the mentioned player's screen. * `%player:displayname%` is the display name of the player who sent the mention. * `styles`: Defines the notification sound settings. * `id`: Sound identifier. * `category`: Sound category. * `volume`: Sound volume. * `pitch`: Sound pitch. * `styles`: This is the mention cooldown time in seconds. * Set to `0` to disable the cooldown. * `styles`: * When set to `true`, prevents the message from being broadcast globally and sends it only to the target. * `styles`: Defines the mention actions to be executed. * `mentionType`: This is the mention type. You can use all types listed in the `styles`. * `preset`: This is an optional preset value. * `styles`: Defines the styles to be applied when the mention is triggered. * Works the same way as in the styling rules section.

Presets

The configuration file is located at `config/embellish-chat/presets.json`. ``` { "prefix": { " ... ": " ... " }, "whitelist": [ " ... " ], "icon": { " ... ": { "atlas": " ... ", "sprite": " ... " } }, "item": { " ... ": { "atlas": " ... ", "sprite": " ... " } }, "color": { " ... ": " ... " } } ```

* `color`: Uses permission nodes as its keys, and each value is a string parsed as a text component with placeholder tags. * `color`: This is used in the `URL` style type. If left empty, all URLs are allowed. * `color`: This is used by `ICON_PRESET` and `/embellish-chat help icon`. * `color`: This overrides atlas sprites used by `SHOW_ITEM` for specific item IDs. * `color`: This is used in the color presets for styling.

---

📜 Compatibility

✅ Fully Supported

* Minecraft P2P Play * The keys defined in `style_rules` and `mention_rules` directly function as permission nodes. * Rules are evaluated from top to bottom based on the player's permissions. * Minecraft P2P Play * Supports dynamic placeholders in mention titles and style presets. * Minecraft P2P Play Use `%embellish-chat:content%` to access the raw, unparsed chat message. * Minecraft P2P Play * Supports mentioning players by nickname. * Minecraft P2P Play * Minecraft P2P Play for the `@group` mention type. Without it, group mentions will be ignored. * Minecraft P2P Play * Minecraft P2P Play for the `@channel` mention type. Without it, channel mentions will be ignored. * Minecraft P2P Play * Mentions between Java and Bedrock editions work seamlessly. * *Note:* Advanced styling (hover text, click events) may not fully render on Bedrock clients. * Minecraft P2P Play * Compatible with Minecraft P2P play, including 26.2 Snapshot 7+. * Since Embellish Chat is server-side, players can use its chat features without installing the mod on their client.

❗ Known Conflicts

* Performance Tip: * Performance Tip: If installed, Embellish Chat's *styling* features will be overridden. * Performance Tip: The mention and notification system remains functional. * Performance Tip: If you must use both, remove all entries in Embellish Chat's `style_rules` to prevent unnecessary background processing.

---

📜 License & Links

This project is licensed under the Apache License 2.0.

Please download the mod from the official sources below to ensure you have the latest, safest version. Linking to these pages is appreciated; please avoid re‑hosting files.

* Source Code (GitHub): Source Code (GitHub): * Source Code (GitHub): %%MD1%%

---

✨ Feedback & Support

Found a bug or have a feature request? Please open an issue or reach out on the project’s Discord server.

If you want to receive updates sooner, please press the heart ❤️ on our Modrinth page! Your support means a lot!

ADS