← Назад к ресурсам

Styled Chat

Style your server's chat as you want!

Modrinth management social utility

Описание

![Logo](https://i.imgur.com/QxkDhm0.png) # Styled Chat It's a simple mod that allows server owners to change how their chat looks! It adds support for [modern chat formatting](https://placeholders.pb4.eu/user/text-format/) supported by Minecraft, but ignored by many chat mods/plugins. It's also compatible with any mods using [Placeholder API](https://placeholders.pb4.eu/user/general/). It also supports changing style per player with permissions (supports LuckPerms and PlayerRoles) *This mod works only on Fabric Mod Loader and compatible!* If you have any questions, you can ask them on my [Discord](https://pb4.eu/discord) [Also check out my other mods and project, as you might find them useful!](https://pb4.eu) ![Example image](https://i.imgur.com/HPSMaS8.png) ![Example image2](https://i.imgur.com/mSWzIV4.png) ## Commands (and permissions): - `/styledchat` - Main command (`styledchat.main`, available by default) - `/styledchat reload` - Reloads configuration and styles (requires `styledchat.reload`) - `/styledchat set ` - Changes personal 's style of to (requires `styledchat.set`) - `/styledchat get ` - Sends 's style of (requires `styledchat.get`) - `/styledchat clear ` - Clears 's style of (requires `styledchat.clear`) ## Configuration: You can find config file in `./config/styled-chat.json`. [Formatting uses Simplified Text Format](https://placeholders.pb4.eu/user/text-format/). It supports usage of placeholders from [Placeholder API](https://placeholders.pb4.eu/user/general/). Additionally, every message type has few own local variables. ```json5 { "CONFIG_VERSION_DONT_TOUCH_THIS": 3, "_comment": "Before changing anything, see https://github.com/Patbox/StyledChat#configuration", "text_formatting": { // Enables parsing of links in chat "parse_links": true, // Enables markdown "markdown": true, // Enables support for legacy (&x) codes in chat (only when typed by player) "legacy_formatting": false, // Enables formatting from other mods (might break StyledChat one, if mod implements it incorrectly) "formatting_from_other_mods": false }, "chat_preview": { // Sends full message (entire formatting surrounding it) in chat preview "send_full_message": false, // Require chat preview for formatting, disabling it otherwise "require_for_formatting": false }, "auto_completion": { // Enables autocompletion for tags (for example , ) "tags": false, // Enables autocompletion for tag aliases (for example , ) "tag_aliases": false, // Enables autocompletion for emoticons (for example :pos:, :item:) "emoticons": false }, // Default style settings "default": { // Display name (local variables: ${default}, ${name}) "display_name": "${default}", // Style of messages "message_formats": { // Chat message style (local variables: ${player}, ${message}) "chat": " ${message}", // Join message (local variables: ${player}) "joined_the_game": "", // Join message after name change (local variables: ${player}, ${old_name}) "joined_after_name_change": "", // Join message for players joining for first time (local variables: ${player}) "joined_for_first_time": "", // Player leaving server (local variables: ${player}) "left_game": "", // Player death message (local variables: ${player}, ${default_message}) "base_death": "${default_message}", // Finishing advancement task (local variables: ${player}, ${advancement}) "advancement_task": "", // Finishing advancement challenge (local variables: ${player}, ${advancement}) "advancement_challenge": "", // Finishing advancement goal (local variables: ${player}, ${advancement}) "advancement_goal": "", // Team message, visible to player sending it (local variables: ${team}, ${displayName}, ${message}) "sent_team_chat": "", // Team message, visible to other team members (local variables: ${team}, ${displayName}, ${message}) "received_team_chat": "", // Private message, visible to player sending (local variables: ${receiver}, ${sender}, ${message}) "sent_private_message": "", // Private message, visible to others (local variables: ${receiver}, ${sender}, ${message}) "received_private_message": "", // Output of /say command (local variables: ${player}, ${message}) "say_command": "[${player}] ${message}", // Output of /me command (local variables: ${player}, ${message}) "me_command": "", // Death message send when player's pet dies (local variables: ${default_message}, ${pet}) "pet_death": "${default_message}" }, // Style of link (local variables: ${link}, ${url}) "link_style": "${link}", // Style of spoilers (local variables: ${spoiler}) "spoiler_style": "${spoiler}", // Spoiler symbol used in spoiler style "spoiler_symbol": "▌", // Formatting accessible to players "formatting": { // "formatting tag": true/false "dark_red": true, "green": true, "underline": true, "dark_green": true, "black": true, "yellow": true, "bold": true, "italic": true, "dark_blue": true, "dark_purple": true, "gold": true, "red": true, "aqua": true, "gray": true, "light_purple": true, "blue": true, "white": true, "dark_aqua": true, "dark_gray": true, "spoiler": true, "strikethrough": true }, // List of emoticons accessible to players (:name: in chat). Supports placeholders "emoticons": { // "name": "value" "potion": "🧪", "item": "[%player:equipment_slot mainhand%]", "trident": "🔱", "rod": "🎣", "shrug": "¯\\_(ツ)_/¯", "bow": "🏹", "bell": "🔔", "heart": "❤", "bucket": "🪣", "sword": "🗡", "shears": "✂", "pos": "%player:pos_x% %player:pos_y% %player:pos_z%", "fire": "🔥", "table": "(╯°□°)╯︵ ┻━┻", // Since 2.2.1+1.20.1 you can also import from files, using this syntax. "$emojibase:builtin:joypixels": "${emoji}", // value is the same as in others, just ${emoji} is replaced with read emojis (so you can apply fonts for example) // Format looks like this $TYPE:SOURCE:PATH // TYPE is "emojibase" for Emojibase.dev shorthand, "cldr" for Unicode cldr-json annotation // or "default" for same style as this file (excluding imports) // SOURCE points what type of storage it is, where PATH targets the file // "builtin" loads it from json bundled with mod ("joypixels" or "emojibase") // "from_file" loads it from file relative to config dir (for example "emoji.json" points to "[SERVER]/config/emoji.json) } }, // List of styles with some requirements, applied from top do bottom "styles": [ { // A requirement of style to apply to player "require": { "type": "...", // See information about these here: https://github.com/Patbox/PredicateAPI/blob/master/BUILTIN.md }, /* Rest is the same as in "default" field, except all fields are fully optional */ } ] } ``` ## In chat formatting If player has a required permissions (`styledchat.format.[tag_name]`, where `[tagname]` is Text Parser tag), then they can use Simplified Text tags from within their chat. Additionally, you can enable markdown and legacy (&X) formatting in the config ## Example config ```json { "CONFIG_VERSION_DONT_TOUCH_THIS": 3, "_comment": "Before changing anything, see https://github.com/Patbox/StyledChat#configuration", "text_formatting": { "legacy_formatting": true, "parse_links": true, "markdown": true, "formatting_from_other_mods": true }, "chat_preview": { "send_full_message": false, "require_for_formatting": false }, "auto_completion": { "tags": false, "tag_aliases": false, "emoticons": true }, "default": { "display_name": "${vanillaDisplayName}", "message_formats": { "chat": "${player} » ${message}", "joined_the_game": "✚ ", "joined_after_name_change": "✚ ", "joined_for_first_time": "", "left_game": "☁ ", "base_death": "☠ ${default_message}", "advancement_task": "", "advancement_challenge": "", "advancement_goal": "", "sent_team_chat": "", "received_team_chat": "", "sent_private_message": "[PM → ${receiver}] » ${message}", "received_private_message": "[PM ← ${sender}] » ${message}", "say_command": "[${player}] ${message}", "me_command": "* ${player} ${message}", "pet_death": "Oh no! ${default_message}" }, "link_style": "${link}", "spoiler_style": "${spoiler}", "spoiler_symbol": "▌", "formatting": { "dark_red": true, "underline": true, "yellow": true, "italic": true, "dark_blue": true, "dark_purple": true, "gold": true, "red": true, "aqua": true, "gray": true, "light_purple": true, "white": true, "pos": true, "dark_gray": true, "spoiler": true, "strikethrough": true, "st": true, "b": true, "item": true, "green": true, "dark_green": true, "black": true, "i": true, "bold": true, "blue": true, "dark_aqua": true }, "emoticons": { "potion": "🧪", "trident": "🔱", "rod": "🎣", "shrug": "¯\\_(ツ)_/¯", "bow": "🏹", "bell": "🔔", "heart": "❤", "bucket": "🪣", "sword": "🗡", "shears": "✂", "fire": "🔥", "table": "(╯°□°)╯︵ ┻━┻" } }, "styles": [ { "require": { "type": "permission", "permission": "group.admin", "operator": 4 }, "display_name": "[Admin] ${vanillaDisplayName}", "message_formats": { "chat": "${player} » ${message}", "base_death": "" }, "formatting": {}, "emoticons": {} }, { "require": { "type": "permission", "permission": "group.default" }, "display_name": "[Player] ${vanillaDisplayName}", "message_formats": {}, "formatting": {}, "emoticons": {} }, { "require": { "type": "permission", "permission": "group.vip", "operator": 3 }, "message_formats": {}, "formatting": {}, "emoticons": { "potato": "Potato" } } ] } ```