Description
ChatEmote adds a /me emote command familiar to RP communities. Type /me stretches and nearby players see:
* Kazyyk stretches
Three Ways to Emote
Command: /me stretches — always works, explicit and reliable.
Asterisks: Just type *waves* in chat — ChatEmote detects the classic RP asterisk convention and converts it automatically. You can even swap out the asterisk for another symbol, or support multiple.
Inline: Type Hii! *waves* and ChatEmote splits it for you — "Kazyyk: Hii!" goes out as normal chat, then "* Kazyyk waves" follows as an emote. Mix speech and actions in one message.
Proximity-Aware
Emotes are spatial. Only players within range (default 20 blocks) see them. Optionally, emote text can fade in brightness with distance, so a nearby gesture is vivid and a distant one is subtle. Disabled by default.
Inline emotes create natural RP behavior: the chat portion ("Hii!") is global — everyone hears it. The emote portion ("* Kazyyk waves") is proximity — only nearby players see the gesture. A player across town hears your greeting but doesn't see you wave.
Designed for RP Servers
- Italic light purple text — visually distinct from normal chat, immediately recognizable as an emote
- Freeform text — players write their own actions in third person, no menu to scroll through
- No cooldowns, no spam prevention — trust your players or pair with a moderation mod
- Zero dependencies — works standalone on any server
Works Alongside Murmur
ChatEmote is standalone by design, but it's built to coexist with Murmur (proximity chat). When both are installed, ChatEmote respects Murmur's chat handling — no double messages, no conflicts. Use Murmur for spatial voice (whisper/say/yell) and ChatEmote for spatial actions.
Default emote range (20 blocks) matches Murmur's SAY range so there's no immersion-breaking gap — if you can see someone's wave, you can hear them talk.
Fully Configurable
All settings live in config.json, generated on first run:
| Setting | Default | Description |
|---|---|---|
emoteRange |
20 | How far emotes travel (in blocks) |
emoteColor |
#CC99FF | Base color for emote text |
emoteItalic |
true | Whether emotes render in italic |
emotePrefix |
* | Character before the player name |
fadeColorWithDistance |
false | Dim emotes from far away |
chatColor |
#FFFFFF | Color for the chat portion of inline emotes |
splitNameColor |
false | Use separate color for player names |
nameColor |
#AAAAAA | Player name color (when splitNameColor is on) |
delimiterEmotes |
true | Detect delimiter-enclosed emotes in chat |
emoteDelimiters |
["*"] | Delimiter strings that trigger emote detection |
inlineEmotes |
true | Extract emotes from mixed messages |
commandAliases |
["me"] | Command names (add more or disable) |
Examples
| Input | Chat output (global) | Emote output (nearby only) |
|---|---|---|
/me stretches |
* Kazyyk stretches | |
*waves* |
* Kazyyk waves | |
Hii! *waves* |
Kazyyk: Hii! | * Kazyyk waves |
Nice to meet you *extends hand* |
Kazyyk: Nice to meet you | * Kazyyk extends hand |
**bold text** |
(passes through as normal chat) |


