The update from v2.2.0 to v2.3.0 focuses on major enhancements to customization and interactivity, integrating the Text Placeholder API, overhauling the mention notification system, and adding new interactive style types.
Integration & System Changes
- Text Placeholder API Integration: The mod now integrates with the Text Placeholder API, allowing for dynamic text in various parts of the mod.
- Placeholders (e.g.,
%player:displayname%) can be used in thetitlefield of mention rules. - Placeholders are also parsed in style rule
presetvalues and user-provided options.
- Placeholders (e.g.,
- New Style Types (Interaction): Three new style types have been added to create interactive text:
CLICK_COMMAND_RUN: Executes a command when the text is clicked.CLICK_COMMAND_SUGGEST: Suggests a command in the player's chat bar when clicked.HOVER_TEXT: Displays a custom tooltip text on hover.
Command Changes
- The primary administrator command has been renamed for consistency:
/embellish_chat(with an underscore) is now/embellish-chat(with a hyphen). - The maximum count for the
/embellish-chat test stresscommand has been increased from 500 to 1000.
Configuration (config.json) Changes
- Mention Notification Overhaul: The global
mentionSound,mentionPitch,mentionTitlePrefix, andmentionTitleSuffixfields have been removed from the config root. - These settings (
sound,pitch,title) are now configured individually within each rule in thementionRuleslist. This allows for rule-specific notifications (e.g., a different sound for@everyonevs.@team). - Notification Command Control: A new boolean field,
notificationCommandEnable, has been added. This allows server administrators to control whether players can use the/ec notificationcommand to toggle their own mention alerts. - Color Format: Color values in the config (e.g.,
urlColor,mentionColor) are now stored as hex strings (e.g.,#FF55FF) and internally parsed asjava.awt.Colorobjects, rather than the previous hex integer format.
Improvements and Bug Fixes
- Performance Optimization: The
bannedPlayerListhas been converted from aListto aHashSet. This provides more efficient O(1) lookups, improving performance when checking every message. - Stress Test Correction & Performance: This version corrects an issue where previous stress tests were measuring performance inaccurately, causing results to appear better than they were. With the test methodology now fixed, internal algorithm optimizations in v2.3.0 have ensured that performance remains similar, with a notable reduction in maximum latency under heavy load.
- Updated Performance Data: New latency test results (CSV and graph) reflecting these optimizations and the corrected measurements have been provided for v2.3.0.
Embellish Chat v2.2.0 Changelog
The update from v2.1.0 to v2.2.0 enhances stability and functionality, featuring strengthened LuckPerms integration, new testing and user convenience features, and the introduction of a version management system for the configuration file.
-
New Commands Added:
- Test commands have been added for server administrators (OP level 2):
/embellish_chat test regex <regex> <test>: Compiles and tests if the regular expression matches the test string./embellish_chat test stress <count> <test>: Tests the mod's performance (load) by sending a fake message the specified number of times.
- The
/ec notificationcommand has been added, available to all players.- This command allows players to set whether they receive notifications (sound and title) when mentioned.
- This feature only works if LuckPerms is installed on the server.
- Test commands have been added for server administrators (OP level 2):
-
Command Changes:
- The existing
/ec help_mentionand/ec help_stylecommands have been changed to/ec help mentionand/ec help style.
- The existing
-
LuckPerms Integration & Notification System:
- A new utility class (
LuckPermsUtil.java) has been added to utilize the LuckPerms API. - The value set by the
/ec notificationcommand is stored in the user's LuckPerms metadata (embellish-chat-notification). - Before sending a mention notification, the mod now checks if the target player has notifications enabled (
LuckPermsUtil::getNotification). Mention notifications (sound, title) will not be sent to users who do not have LuckPerms or have disabled notifications. - The
LUCK_PERMS_GROUPmention type (@group(...)) has been added as a default rule in the configuration file.
- A new utility class (
-
Configuration (config.json) Changes:
- A
versionfield has been added toconfig.json. - When the mod loads, it compares the
config.jsonversion with the mod's version. If they do not match, the config file is considered incompatible, and the default config is loaded with a warning. - The default keys (permission nodes) for
stylingRulesandmentionRuleshave been changed to a namespaced format (e.g., "chat" -> "embellish_chat.chat", "command" -> "embellish_chat.command_argument"). - The default
delimiterfor separating multiple style options has been changed from-(hyphen) to,(comma).
- A
-
Improvements and Bug Fixes:
- Improved exception handling in
StyleRegistry. When processingCOLOR_HEX,COLOR_RAINBOW,COLOR_SHADOW, etc., invalid values (null or incorrect format) will now log a warning instead of crashing the server.
- Improved exception handling in
Fixed a bug where /ec help_mention could not be used.
This version cannot use the shadow feature.Important: This version uses LuckPerms’ built-in permission system instead of the Fabric Permissions API. Therefore, the LuckPerms mod is required. Fixed a bug where /ec help_mention could not be used.
Embellish Chat v2.1.0 Changelog
From v2.0.0 to v2.1.0, the mod's core architecture has been completely redesigned into a Rule-Based System based on the config.json file. As a result, almost all features have been changed to be customizable.
-
Major Overhaul of Configuration System and Architecture:
- The existing hard-coded mention system in v2.0.0 (e.g., logic for
@everyone,@here,@team) has been completely replaced with a system that definesMentionRuledirectly inconfig.json. - The
StylingRulerecord in v2.0.0 had a(Pattern, StyleType, String option)structure, but in v2.1.0, it has been changed to a(Pattern, List<StyleAction> styles)structure. - Due to this change, it is now possible to apply multiple styles (e.g., bold + underline + color) simultaneously to a single regex pattern using a list of
StyleAction. - Most of the hard-coded configuration values in
Config.java, such asmentionEnabled,groupMentionOpOnly,offlineColorEnabled, andhereRadius, have been removed and integrated into the rule definitions inconfig.json.
- The existing hard-coded mention system in v2.0.0 (e.g., logic for
-
Support for Fabric Permission System:
- Integration with the Fabric Permissions API and LuckPerms has been added.
- The keys in the
stylingRulesandmentionRulesmaps inconfig.json(e.g., "chat", "command", "mention") now represent permission nodes. - The mod checks the player's permissions and applies all rules for the permissions they possess, stacking them in the order defined in
config.json.
-
New Features Added:
- Four new
StyleTypes have been added:REPLACE: Replaces the text with a different string.MASK: Masks the text with a specific character.UPPER: Converts the text to uppercase.LOWER: Converts the text to lowercase.
- A new
MentionType,LUCK_PERMS_GROUP, has been added, allowing mentions to target specific LuckPerms groups. - New commands,
/ec help_mentionand/ec help_style, have been added for players to check the rules applicable to them (no OP level required).
- Four new
-
Detailed Improvements and Miscellaneous Changes:
-
A
delimitersetting has been added toconfig.json. It is used to separate multiple style options (e.g., rainbow saturation and font ID) when received from a single pattern. -
A
timestamp(timestamp format) setting has been added toconfig.json. Users can now specify the time format displayed for theMETADATAstyle. -
The
Timestamp.javautility class has been removed in v2.1.0. Its logic has been integrated intoStyleRegistryand uses the newtimestampsetting. -
The
TeamColor.javautility has been refactored. In v2.0.0, it had a direct dependency onConfigManager, but in v2.1.0, it now accepts anInteger presetas a parameter, removing the dependency and becoming a pure utility class. -
The
COLOR_RAINBOWstyle has been improved to accept an option, allowing saturation to be adjusted via apresetvalue (e.g., "0.7"). -
The content copied when clicking the
METADATAstyle has been improved to include the (configurable) timestamp and the original message content. -
New documentation files,
StyleWiki.mdandMentionWiki.md, have been added to explain the new features and rule system. -
TPS latency test results for v2.1.0 (
Latency per message v2.1.0.xlsx - Sheet1.csv) have been added. -
The regex has been improved, and the character-corruption bug from v2.0.0 has been fixed. (Previously, when parsing text where FONT or URL appeared after COLOR_HEX, the URL was applied incorrectly and caused characters to break.)
-
For more details, see the README.
-
Major Overhaul of Configuration System and Architecture:
- The existing hard-coded mention system (e.g.,
@everyone,@here) has been completely replaced with aMentionRule-based system defined directly inconfig.json. - The structure of
StylingRulehas been changed to use aList<StyleAction>, allowing multiple styles (e.g., bold + color) to be applied simultaneously with a single regex pattern.
- The existing hard-coded mention system (e.g.,
-
New Features Added:
- New style types have been added, including
REPLACE(text replacement),MASK(text masking),UPPER(uppercase), andLOWER(lowercase). - Added
LUCK_PERMS_GROUPmention type. - Added
/ec help_mentionand/ec help_stylecommands for players to check applicable rules.
- New style types have been added, including
-
supports the permission features of the Fabric Permissions API. he keys in stylingRules and mentionRules represent each permission (such as chat, command, mention, etc.). These keys are default keys, and the system works even if they are not explicitly defined.The mod checks from top to bottom and applies the rules registered for each permission.
-
Miscellaneous:
- Added
delimitersetting for distinguishing multiple options in rules.
- Added
more detale README
This version does not support the text shadow feature.


