feat: Bedrock support — typed commands and ASCII labels

Geyser cannot deliver a chat clickEvent to Bedrock, and most emoji render
as tofu boxes there, so Bedrock players could see the reaction row but
neither read nor use it.

Messages carrying buttons are now built twice and sent per player rather
than via Bukkit.broadcast. Each reaction gains a per-platform label plus a
typed shortcut:

    uau: { java: "[😮]", texto: "[UAU]", comando: "wow" }

Typed fallbacks for every clickable interaction: /reagir, /legal, /wow,
/top, /f, /palpite and /votar, all acting on the most recent message so no
message id is needed.

Bedrock detection uses Floodgate's UUID scheme (high 64 bits zero) rather
than the Floodgate API, keeping it an optional runtime dependency.
/canalhandia plataformas lists who is online and on which platform.

Reaction config moves from a flat key->label map to a section per
reaction; the old flat form is still accepted and gets an ASCII fallback
derived from the key.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ActvLGJApdxEAd2yfKPwqv
This commit is contained in:
marcos
2026-08-04 21:31:24 +00:00
parent 18ac5a5d17
commit 987ee13d74
11 changed files with 431 additions and 72 deletions
+26
View File
@@ -26,6 +26,32 @@ commands:
description: Placares do servidor.
usage: /ranking [categoria]
aliases: [rankings, placar]
# Typed fallbacks. Bedrock cannot run a chat clickEvent, so every clickable
# interaction needs a command that can be typed instead. The shortcut names
# below must exist here to be registered; config.yml maps each one to a
# reaction key.
reagir:
description: Reage à última mensagem.
usage: /reagir <chave>
palpite:
description: Palpita na adivinha aberta.
usage: /palpite <nome>
votar:
description: Vota na enquete aberta.
usage: /votar <número>
legal:
description: Reage com "legal" à última mensagem.
usage: /legal
wow:
description: Reage com "uau" à última mensagem.
usage: /wow
aliases: [uau]
top:
description: Reage com "top" à última mensagem.
usage: /top
f:
description: Presta luto pela última morte.
usage: /f
permissions:
# Declared explicitly: an undeclared Bukkit permission falls back to op-only,