βοΈ Writing
Four things a player can put in a line of chat beyond the words.
Emoji
emojis.yml. A player types a shortcut and it becomes a picture.
heart:
placeholder: ':heart:'
emoji: '<#eb4b30>β€'
permission: ''
tab_complete: true
tooltip:
- '<#E9FDFB>Type <#f2c42f>%placeholder%<#E9FDFB> in chat'
- '<#95d027>βΈ Click to copy'
click: '[COPY] %placeholder%'
| Key | Decides |
|---|---|
placeholder | What they type |
emoji | What it becomes |
permission | Who may. Empty means everyone |
tab_complete | Whether it is offered while typing |
sound | A sound it makes β see below |
A shortcut ending on a letter is only replaced when it stands as a whole word, so hp is left
alone inside a longer one. One ending on anything else β :hp: and its like β marks its own edges
and is replaced anywhere.
An emoji drawn by a tag keeps its own colours. One written as text takes on the sender's chat colour, like the rest of the message.
Sounds. Give an emoji a sound: block and it plays when somebody sends it. Both the cooldown
and the switch belong to whoever is listening: a message is written once and heard by many, and
each of them decides. Write none as the name to keep one emoji silent while others sound.
/emojis lists what the player asking may actually use β as a book or in chat, set by display.
Sprites and heads
Three tags, one permission each:
| Tag | Draws | Permission |
|---|---|---|
<sprite:name> | A built-in game texture, no resource pack needed | polaroidchat.tag.sprite |
<glyph:name> | A Nexo glyph | polaroidchat.tag.glyph |
<head:Player> | A player's face | polaroidchat.tag.head |
<sprite:β¦> needs Minecraft 1.21.9 or newer; on older servers it renders as nothing and the rest
of the message is unaffected. The prefix can be dropped for any name the catalogue knows, so
<wooden_sword> works.
A head can also be named by the id behind an account, which outlives a name change
(<head:uuid:069a79f4-β¦>), or by a skin handed over directly, belonging to no account
(<head:texture:eyJ0ZXh0β¦>).
/sprites lists what is available on the running version.
Mentions
mentions in config.yml. Writing @Steve marks the name and notifies them.
| Setting | Decides |
|---|---|
prefix | What starts a mention. Empty means a bare name is enough |
highlight | The colour. Empty uses the colour that player already wears |
cooldown | Seconds before the same player may be pinged again by the same sender |
max_per_message | How many one message may land. 0 is no limit |
match_nicks | Whether a player answers to their nick as well as their name |
hover / click | The tooltip and what clicking does |
A mention made too soon is left exactly as typed: not marked, not announced.
notify decides what the mentioned player sees, and shares its shape with private-message
notices β see the notifications block.
Sharing something in chat
interactive in config.yml. A keyword puts a thing in chat that others can open.
| Keyword | Shows |
|---|---|
[item], [i] | The item in their hand, with its real tooltip |
[inv], [inventory] | Their whole inventory, armour and level |
[ender], [e] | Their ender chest |
What is shared is snapshotted as the message is sent, so opening it an hour later shows what was shared, not what they hold now.
Every keyword takes the same shape, written once under interactive.defaults β whether it is on,
how long it stays openable, how long before it may be used again. Each keyword names only what
makes it different.
Your own. Add one under interactive.custom:
coords:
keyword: '[coords]'
name: '[coords]'
description: 'Shares where you are'
regex: false
replacement: '<#E9FDFB>[<#f2c42f>%player_x% β¦<#E9FDFB>]'
hover:
- '<#E9FDFB>World: <#f2c42f>%player_world%'
click: ''
Allowed by polaroidchat.interactive.<name>. PlaceholderAPI resolves in every field. Setting
regex: true reads the keyword as a regular expression and lets what it captures be used as
$1, $2 in the replacement, hover and click.
Commands. A command written inside [β¦] becomes one a reader can click. The wrapper is asked
for so that every command merely mentioned in passing does not become clickable.
Limits worth knowing. max_per_message refuses to send a message carrying too many.
max_shares caps how many stay openable at once, and so caps memory. A lodestone compass is sent
pointing at spawn instead of where it really points, so sharing one does not hand everyone a
location.
Notifications
Mentions and private messages both raise a notice, and both take the same channels: actionbar, title, bossbar, sound and toast.
That shape is written once in config.yml under notifications β which channels are on, their
timings, the sound. Each of the two sites then writes only its own wording, under
chat.msg_notifications and mentions.notify.
A player turns any of them off for themselves with /polaroidchat toggle.
One inconsistency the plugin has always had:
chat.msg_notifications.bossbar.durationcounts in ticks, whilementions.notify.bossbar.durationcounts in seconds.