Server polish and display suite: holograms, menus, scoreboards, tablist, emoji chat, chat bubbles, damage indicators and display-backed drops — in one plugin.
- Holograms — TextDisplay-based floating text with per-player placeholder rendering, hotloadable JSON files, native display scaling and full command management.
- Scoreboards — JSON-defined sidebars with primary/world defaults, permission-gated boards and per-group defaults.
- Tablist — configurable header/footer and per-group player list names.
- Emoji —
:emoji:and trigger replacement in chat with tab completion and per-emoji permissions. - Chat bubbles — messages float above the speaker's head, stack, and fly away as they expire.
- Damage indicators — floating damage and healing numbers measured from actual applied health deltas, with exact Paper critical-hit conditions and a hot-reloading JSON profile for formats, continuous ballistic motion, spin, scale, fade, limits and per-viewer filters.
- Menus and previews — packet-only holographic menus, persistent world panels and look-at container previews.
- Dropped items — configurable labels plus optional display-backed block and item models while the native item remains authoritative.
- Animations — frame-based text animations usable in any hologram, board or tablist line via
|animation.<id>|. - MOTD — randomized, color-filtered server list MOTD.
Rendered text supports bounded {{ ... }} expressions with native player.* and server.* values. PlaceholderAPI remains optional: papi(...) and papiNumber(...) use it when installed, while the standard player and server keys resolve from Gloss itself when it is absent.
Container-preview discovery uses a fair, deduplicated queue capped at ten players per tick. Open previews keep entity-tick target tracking, while stationary viewers are added through a 100-tick fallback sweep.
- A 26.1.2 – 26.2 server: Paper, Purpur, Leaf, Folia, Canvas or Spigot.
- Java 25.
- Optional: PlaceholderAPI (placeholders in any rendered line), Vault (permission-group tablist names and default boards).
/gloss (aliases gl, glo, gg) is the root; /hologram (holo, h) and /board (sb, bd) jump straight into their subtrees. Run /gloss help in game for the full paged menu.
./gradlew build # full gate: tests + spigot-compatibility compile + shaded jar
./gradlew shadowJar # just the plugin jar
Java 25 is required. The local VolmLib sibling checkout is resolved automatically as a composite build; pass -PuseLocalVolmLib=false to resolve it remotely instead.
Gloss never creates a folder it has nothing to put in. Only the commented gloss.toml, the sparse
language.yml message override, and the shipped defaults of enabled features exist after a first
boot; every other folder appears the moment something is written into it, and stays gone otherwise.
plugins/Gloss/
├── gloss.toml language, metrics and global runtime controls; always
├── language.yml sparse message overrides only; always
├── tablist.json shipped default, while tablist is enabled
├── motd.json shipped default, while motd is enabled (off by default)
├── boards/<id>.json 2 shipped defaults, while boards are enabled
├── emoji/<id>.json shipped defaults, while emoji is enabled
├── animations/<id>.json 10 shipped defaults, while animations are enabled
├── bubbles/<id>.json shipped default, while chat bubbles are enabled
├── damage-indicators/default.json shipped default, while damage indicators are enabled
├── real-drops/default.json shipped default, while real drops are enabled
├── previews/<name>.json 14 shipped defaults, while container previews are enabled
├── holograms/<id>.json on the first hologram
├── menus/default.json shipped starter menu, while menus are enabled
├── menus/<path>.json additional authored menus
├── images/<path> when an operator drops an image in
├── panels/<path>.json on the first panel
├── editor-sync-transactions/ during an editor sync publication
├── editor-sync-backups/<id>/ on the first completed editor sync publication
└── import-backups/<timestamp>/ on a legacy data import that has something to migrate
Configuration, localization and content documents hotload. Edit them on disk and the change applies in game without a restart. Deleting a folder is safe: Gloss reads what is there and recreates only what it writes. Panel files also apply stable edits, additions and deletions automatically, retaining the last working definition when an edit is invalid.