> For the complete documentation index, see [llms.txt](https://itzfabb.gitbook.io/fios-config/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itzfabb.gitbook.io/fios-config/home/documentation/plugins/fiochat.md).

# FioChat

### <i class="fa-book" style="color:yellow;">:book:</i> <mark style="color:yellow;">How Modules Are Enabled/Disabled</mark>

FioChat module switches live in `src/main/resources/modules/settings.yml` (and at runtime: `plugins/FioChat/modules/settings.yml`).

<mark style="color:$info;">When a module is disabled:</mark>

* FioChat attempts to unregister standalone commands it owns (example: `/afk`, `/channel`, `/quickchat`) and restore fallback commands from other plugins when possible.
* Listeners/services for that module may remain loaded, but will behave as disabled based on the module switch.

### <i class="fa-percent" style="color:$primary;">:percent:</i> <mark style="color:$primary;">Placeholder System Summary</mark>

<mark style="color:$info;">FioChat registers:</mark>

* `%fiochat_*%` (the main PlaceholderAPI expansion)
* Alias expansions so other plugins can ask FioChat to resolve PlaceholderAPI values consistently:
* `%tab_placeholder_<...>%`, `%tab_papi_<...>%`
* `%scoreboard_placeholder_<...>%`, `%scoreboard_papi_<...>%`
* `%bossbar_placeholder_<...>%`, `%bossbar_papi_<...>%`
* `%fc_placeholder_<...>%`, `%fc_papi_<...>%`

<mark style="color:$info;">These alias expansions return the resolved output, not the literal placeholder text.</mark>

### <mark style="color:$primary;">Module Index</mark>

<mark style="color:$info;">Module configs are shipped in</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`modules/<module>/...`</mark> <mark style="color:$info;"></mark><mark style="color:$info;">.</mark>

#### <i class="fa-trophy" style="color:$primary;">:trophy:</i> <mark style="color:$primary;">advancement-message</mark>

<mark style="color:$info;">Purpose: Custom vanilla advancement announcement messages.</mark>

* Config: `modules/advancement-message/config.yml`
* Commands: none
* Permissions: see `plugin.yml` (advancement message nodes)
* Placeholders: none specific (uses PlaceholderAPI in templates where enabled)

#### <i class="fa-keyboard-down" style="color:$primary;">:keyboard-down:</i> <mark style="color:$primary;">afk</mark>

<mark style="color:$info;">Purpose: AFK state, AFK reason, AFK timers, AFK messages.</mark>

* Config: `modules/afk/config.yml`
* Commands: `/afk`, plus `/fiochat admin afk ...` for staff
* Permissions: `fiochat.afk.*`, `fiochat.admin.afk`
* Placeholders (main): `%fiochat_afk_state%`, `%fiochat_afk_reason%`, `%fiochat_afk_duration%`, `%fiochat_afk_duration_seconds%`

#### <i class="fa-bullhorn" style="color:$primary;">:bullhorn:</i> <mark style="color:$primary;">announcements</mark>

<mark style="color:$info;">Purpose: Scheduled announcements and manual send.</mark>

* Config:
  * `modules/announcements/announce.yml`
  * `modules/announcements/placeholder.yml`
* Commands:
  * `/toggle announcement <message|sound>`
  * `/fiochat admin announcement send ...`
  * `/fiochat admin announce ...`
* Permissions: `fiochat.announcement.*`, `fiochat.admin.module.reload`
* Placeholders: module uses PlaceholderAPI; toggle placeholders include `%fiochat_announcement_message_state%`, `%fiochat_announcement_sound_state%`

#### <i class="fa-icons" style="color:$primary;">:icons:</i> <mark style="color:$primary;">auto-reply</mark>

<mark style="color:$info;">Purpose: Private question auto replies (simple responder).</mark>

* Config: `modules/auto-reply/config.yml`
* Commands: none
* Permissions: module-defined nodes (see config and `plugin.yml` where applicable)
* Placeholders: none specific

#### <i class="fa-tree" style="color:$primary;">:tree:</i> <mark style="color:$primary;">biome-discovery</mark>

<mark style="color:$info;">Purpose: First-time biome discovery notifications (title/subtitle/actionbar/sound).</mark>

* Config: `modules/biome-discovery/config.yml`
* Commands: `/toggle biomediscovery <title|subtitle|sound|actionbar>`
* Permissions: `fiochat.biomediscovery.*`
* Placeholders: `%fiochat_biomediscovery_state%` (state placeholder family)

#### <i class="fa-chart-simple-horizontal" style="color:$primary;">:chart-simple-horizontal:</i> <mark style="color:$primary;">bossbar</mark>

<mark style="color:$info;">Purpose: Bossbar layouts with animations, per-entry conditions, placeholder refresh tuning.</mark>

* Config:
  * `modules/bossbar/bossbar.yml`
  * `modules/bossbar/animations.yml`
  * `modules/bossbar/toggle.yml`
* Commands: `/toggle bossbar [on|off|toggle|status]`
* Permissions: bossbar toggle nodes (see `plugin.yml`)
* Placeholders:
  * `%fiochat_bossbar_state%`
  * Alias placeholders supported inside bossbar text: `%fiochat_papi_<placeholder>%`
  * External access: `%bossbar_placeholder_<placeholder>%`, `%bossbar_papi_<placeholder>%`
* Notes:
  * Supports `papi-refresh:` and `output-papireplace:` sections in `bossbar.yml`.

#### <i class="fa-rocketchat" style="color:$primary;">:rocketchat:</i> <mark style="color:$primary;">chat-channels</mark>

<mark style="color:$info;">Purpose: Chat channels, channel routing (prefix-based), GUI selector, channel placeholders and stats.</mark>

* Config: `modules/chat-channels/config.yml`
* Commands: `/channel` (alias `/channels`), plus `/fiochat channel ...` subcommands
* Permissions:
  * Base: `fiochat.channel.use`, `fiochat.channel.join`, `fiochat.channel.list`
  * Per-channel access: `fiochat.channel.<id>`
* Placeholders:
  * `%fiochat_channel_current%`
  * `%fiochat_channel_current_online%`
  * `%fiochat_channel_current_offline%`
  * `%fiochat_channel_current_members%`
  * `%fiochat_channel_current_chat_per_minute%`

#### <i class="fa-rectangle-history" style="color:$primary;">:rectangle-history:</i> <mark style="color:$primary;">chat-history</mark>

<mark style="color:$info;">Purpose: Stores chat history and provides staff viewing tools/GUI.</mark>

* Config: `modules/chat-history/config.yml`
* Commands: `/fiochat admin history ...`
* Permissions: `fiochat.chathistory` and staff nodes in `plugin.yml`
* Placeholders: none specific
* GUI: `gui/admin/chat-history.yml`

#### <i class="fa-message-bot" style="color:$primary;">:message-bot:</i> <mark style="color:$primary;">chat-management</mark>

<mark style="color:$info;">Purpose: Chat moderation utilities (cooldown, flood, antiunicode, antibot, antirepeat, warn points, grammar, anti-caps, clear chat, antiswear, anti-adv).</mark>

* Config: `modules/chat-management/config.yml`
* Commands: mostly admin-initiated via `/fiochat admin module ...` tooling (depends on sub-feature)
* Permissions: numerous `fiochat.*.bypass` and spy nodes (see `plugin.yml`)
* Placeholders: anti-bot placeholders `%fiochat_antibot_verified%`, `%fiochat_antibot_pending%` are exposed globally

#### <i class="fa-ruler-combined" style="color:$primary;">:ruler-combined:</i> <mark style="color:$primary;">chat-radius</mark>

<mark style="color:$info;">Purpose: Distance-based chat visibility.</mark>

* Config: `modules/chat-radius/config.yml`
* Commands: none
* Permissions: `fiochat.chatradius.*`

#### <i class="fa-align-slash" style="color:$primary;">:align-slash:</i> <mark style="color:$primary;">command-hider</mark>

<mark style="color:$info;">Purpose: Filter command tab completion results (allow/deny/groups), with cached profiles and rebuild triggers.</mark>

* Config: `modules/command-hider/config.yml`
* Commands: none (feature is passive; staff uses perms)
* Permissions:
  * Bypass: `fiochat.commandhider.bypass`
  * Group visibility permissions from config: `fiochat.commandhider.visibility.*`
* Notes:
  * Visibility groups are merged when multiple group permissions match (rank stacking).
  * Supports a stable `null` group as a baseline profile (does not apply unless its permission matches).

#### <i class="fa-text" style="color:$primary;">:text:</i> <mark style="color:$primary;">custom-font</mark>

<mark style="color:$info;">Purpose: Player-selectable chat fonts (formatting/decoration layer).</mark>

* Config: `modules/custom-font/config.yml`
* Commands: `/fonts` (alias `/font`)
* Permissions:
  * UI/use: `fiochat.fonts.use`
  * Per-font permission nodes are dynamically registered based on config.
* Placeholders: `%fiochat_font%`, `%fiochat_font_display%`

#### <i class="fa-calendar-days" style="color:$primary;">:calendar-days:</i> <mark style="color:$primary;">day-counter</mark>

<mark style="color:$info;">Purpose: Day counter notifications (title/subtitle/actionbar/sound).</mark>

* Config: `modules/day-counter/config.yml`
* Commands: `/toggle daycounter <title|subtitle|sound|actionbar>`
* Permissions: `fiochat.daycounter.*`
* Placeholders:
  * `%fiochat_daycounter_state%`
  * `%fiochat_daycounter_day%` (formatted, example `1,000`)

#### <i class="fa-skull" style="color:$primary;">:skull:</i> <mark style="color:$tint;">death-message</mark>

<mark style="color:$info;">Purpose: Custom vanilla death announcements (separate from deathmessage toggle delivery).</mark>

* Config:
  * `modules/death-message/config.yml`
  * `modules/death-message/custom-death-messages.yml`
* Commands: none (message generation)
* Permissions: module-defined nodes (see `plugin.yml`)
* Placeholders: none specific

#### <i class="fa-face-viewfinder" style="color:$primary;">:face-viewfinder:</i> <mark style="color:$primary;">emojis</mark>

<mark style="color:$info;">Purpose: Emoji replacements in chat + emoji browser GUI.</mark>

* Config: `modules/emojis/config.yml`
* Commands: `/emoji list`
* Permissions:
  * `fiochat.emoji.use`, `fiochat.emoji.list`
  * Per-emoji permission nodes are dynamically registered based on config.
* Placeholders: none specific

#### <i class="fa-message-text" style="color:$primary;">:message-text:</i> <mark style="color:$primary;">formats</mark>

<mark style="color:$info;">Purpose: Chat formatting rules/components, conditional checks, hover/click actions, and FioChat number compacting.</mark>

* Config: `modules/formats/config.yml`
* Commands: none (applies to chat pipeline)
* Permissions: depends on placeholders/features used; see `plugin.yml`
* Notes:
  * Supports `*_fc_formatted` placeholder suffix: any placeholder ending with `_fc_formatted` is compacted (K/M/B/Q) using the module’s suffix settings.
  * Checks in conditions support `==` and `!=` for empty/non-empty comparisons (see the module file comments).

#### <i class="fa-tag" style="color:$primary;">:tag:</i> <mark style="color:$primary;">gamertag</mark>

<mark style="color:$info;">Purpose: Overhead gamertag display system.</mark>

* Config: `modules/gamertag/config.yml`
* Commands: `/fiochat gamertag ...` (via root command), module also reacts to join/quit/teleport/world-change/death where applicable.
* Permissions: `fiochat.gamertag.*` (see `plugin.yml`)
* Placeholders: `%fiochat_player_name%` is supported inside gamertag templates (service-level placeholder).

#### <i class="fa-party-horn" style="color:$primary;">:party-horn:</i> <mark style="color:$primary;">giveaway</mark>

<mark style="color:$info;">Purpose: Giveaways.</mark>

* Config: `modules/giveaway/config.yml`
* Commands: `/giveaway` (alias `/giveaways`), `/fiochat admin giveaway ...`
* Permissions: `fiochat.giveaway.*`

#### <i class="fa-triangle-exclamation" style="color:$primary;">:triangle-exclamation:</i> <mark style="color:$primary;">inventory-full-alert</mark>

<mark style="color:$info;">Purpose: Inventory full alerts + prewarn alerts, threshold controls, world blacklist support (when configured).</mark>

* Config: `modules/inventory-full-alert/config.yml`
* Commands:
  * `/toggle inventoryalert <full|prewarn> [on|off|toggle|status]`
  * `/toggle inventoryalert threshold [<1-99>|reset|status]`
* Permissions: inventory alert toggle nodes (see `plugin.yml`)
* Placeholders:
  * `%fiochat_inventory_alert_state%`
  * `%fiochat_inventory_alert_full_state%`
  * `%fiochat_inventory_alert_prewarn_state%`
  * `%fiochat_inventory_alert_threshold%`

#### <i class="fa-label" style="color:$primary;">:label:</i> <mark style="color:$primary;">item-displays</mark>

<mark style="color:$info;">Purpose: Click-preview GUIs for chat item displays:</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[item]`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[i]`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[inventory]`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[inv]`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[enderchest]`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`[ec]`</mark><mark style="color:$info;">, and custom displays.</mark>

* Config:
  * `modules/item-displays/config.yml`
  * `modules/item-displays/menu.yml`
* Commands: `/itemdisplay list`, `/itemdisplay open <display> <owner>`
* Permissions:
  * Base: `fiochat.itemdisplays.*` (see `plugin.yml`)
  * Custom display perms: `fiochat.itemdisplays.custom.<id>`
* Notes:
  * GUI layout is owned by `menu.yml` in the module folder (not `resources/gui/...`).

#### <i class="fa-wifi" style="color:$primary;">:wifi:</i> <mark style="color:$primary;">joinquit</mark>

<mark style="color:$info;">Purpose: Join/Quit message + sound + particle presets; GUI selection.</mark>

* Config: `modules/joinquit/config.yml`
* Commands: `/join`, `/quit`, plus `/toggle join ...` and `/toggle quit ...`
* Permissions: `fiochat.joinquit.*` and per-preset nodes
* Placeholders:
  * State: `%fiochat_join_message_state%`, `%fiochat_join_sound_state%`, `%fiochat_quit_message_state%`, `%fiochat_quit_sound_state%`
  * Active selections: `%fiochat_join_preset%`, `%fiochat_quit_preset%`, `%fiochat_join_sound%`, `%fiochat_quit_sound%`, `%fiochat_join_particle%`, `%fiochat_quit_particle%`, `%fiochat_join_style%`, `%fiochat_quit_style%`

#### <i class="fa-at" style="color:$primary;">:at:</i> <mark style="color:$primary;">mentions</mark>

<mark style="color:$info;">Purpose: Mentions (</mark><mark style="color:$info;">`@player`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`@here`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`@everyone`</mark><mark style="color:$info;">) with cooldowns and notifications.</mark>

* Config: `modules/mentions/config.yml`
* Commands: `/toggle mentions`
* Permissions: `fiochat.mentions.*`
* Placeholders: `%fiochat_mentions_state%`

#### <i class="fa-message-sms" style="color:$primary;">:message-sms:</i> <mark style="color:$primary;">messages</mark>

<mark style="color:$info;">Purpose: Private messages:</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`/msg`</mark><mark style="color:$info;">,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`/reply`</mark><mark style="color:$info;">, social controls, toggles.</mark>

* Config: `modules/messages/config.yml`
* Commands: `/msg`, `/reply`
* Permissions: `fiochat.message.*`
* Placeholders: `%fiochat_message_state%`, `%fiochat_player_msg_state%`

#### <i class="fa-volume-slash" style="color:$primary;">:volume-slash:</i> <mark style="color:$primary;">mutechat</mark>

<mark style="color:$info;">Purpose: Global or per-channel mute chat controls.</mark>

* Config: `modules/mutechat/config.yml`
* Commands: `/fiochat mutechat ...`, `/fiochat admin mutechat ...`, `/fiochat admin channel mutechat ...`
* Permissions: `fiochat.admin.mutechat`, `fiochat.admin.channel.mutechat`

#### <i class="fa-globe" style="color:$primary;">:globe:</i> <mark style="color:$primary;">per-world-chat</mark>

<mark style="color:$info;">Purpose: World-scoped chat visibility.</mark>

* Config: `modules/per-world-chat/config.yml`
* Commands: none
* Permissions: `fiochat.perworldchat.bypass`

#### <i class="fa-memory" style="color:$primary;">:memory:</i> <mark style="color:$primary;">player-motd</mark>

<mark style="color:$info;">Purpose: Player MOTD delivery (join MOTD, verification MOTD pipeline).</mark>

* Config:
  * `modules/player-motd/motd.yml`
  * `modules/player-motd/placeholder.yml`
* Commands: `/toggle motd message`
* Permissions: MOTD toggle nodes (see `plugin.yml`)
* Placeholders: `%fiochat_motd_message_state%`

#### <i class="fa-comment-pen" style="color:$primary;">:comment-pen:</i> <mark style="color:$primary;">quickchat</mark>

<mark style="color:$info;">Purpose: Shortcut Quick Chat editor and</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`#<keyword>`</mark> <mark style="color:$info;"></mark><mark style="color:$info;">expansion in chat and supported commands.</mark>

* Config: `modules/quickchat/config.yml`
* Commands: `/quickchat` (alias `/qc`)
* Permissions:
  * Base: `fiochat.quickchat.use`
  * Max limits: from `permissions.max` and `fiochat.quickchat.max.<number>` patterns (registered on reload; default FALSE)
* Placeholders:
  * `%fiochat_quickchat_max%`, `%fiochat_quickchat_used%`, `%fiochat_quickchat_remaining%`

#### <i class="fa-barcode-read" style="color:$primary;">:barcode-read:</i> <mark style="color:$primary;">redeem-code</mark>

<mark style="color:$info;">Purpose: Redeem code rewards and logging.</mark>

* Config: `modules/redeem-code/config.yml`
* Commands: `/redeem <code>`, `/fiochat admin code ...`
* Permissions: `fiochat.redeem.*` (see `plugin.yml`)

#### <i class="fa-reply-all" style="color:$primary;">:reply-all:</i> <mark style="color:$primary;">replying-message</mark>

<mark style="color:$info;">Purpose: Public clickable “reply to chat message” formatting and recording previous message metadata for hover.</mark>

* Config: `modules/replying-message/config.yml`
* Commands: none (uses click/suggest and chat parser hooks)
* Permissions: module-defined nodes (see config and `plugin.yml` where applicable)

#### <i class="fa-file" style="color:$primary;">:file:</i> <mark style="color:$primary;">reports</mark>

<mark style="color:$info;">Purpose:</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`/report`</mark> <mark style="color:$info;"></mark><mark style="color:$info;">submission flow,</mark> <mark style="color:$info;"></mark><mark style="color:$info;">`/reports`</mark> <mark style="color:$info;"></mark><mark style="color:$info;">staff GUI, and report review actions.</mark>

* Config: `modules/reports/config.yml`
* Commands: `/report`, `/reports`, `/fiochat report ...`, `/fiochat admin report ...`
* Permissions: `fiochat.report.*`
* GUI: `gui/admin/reports.yml`

#### <i class="fa-tally-1" style="color:$primary;">:tally-1:</i> <mark style="color:$primary;">scoreboard</mark>

<mark style="color:$info;">Purpose: Side scoreboard layouts with animations, sorting via conditions, placeholder refresh tuning, and hex/color translation.</mark>

* Config:
  * `modules/scoreboard/scoreboard.yml`
  * `modules/scoreboard/animations.yml`
  * `modules/scoreboard/toggle.yml`
* Commands: `/toggle scoreboard [on|off|toggle|status]`
* Permissions: scoreboard toggle nodes (see `plugin.yml`)
* Placeholders:
  * `%fiochat_scoreboard_state%`
  * Calendar aliases: `%date%`, `%time%` (see `calendar:` in `scoreboard.yml`)
  * Alias placeholders supported in lines/title: `%fiochat_papi_<placeholder>%`
  * External access: `%scoreboard_placeholder_<placeholder>%`, `%scoreboard_papi_<placeholder>%`

#### <i class="fa-server" style="color:$primary;">:server:</i> <mark style="color:$primary;">server-motd</mark>

<mark style="color:$info;">Purpose: Multiplayer server-list MOTD (server list ping response).</mark>

* Config: `modules/server-motd/config.yml`
* Commands: none
* Permissions: none specific

#### <i class="fa-browser" style="color:$primary;">:browser:</i> <mark style="color:$primary;">tab</mark>

<mark style="color:$info;">Purpose: Tab header/footer layouts, player list formatting, sorting, placeholder refresh tuning, and hide rules.</mark>

* Config:
  * `modules/tab/tab.yml`
  * `modules/tab/animations.yml`
  * `modules/tab/toggle.yml`
* Commands: `/toggle tab [on|off|toggle|status]`
* Permissions: tab toggle nodes (see `plugin.yml`)
* Placeholders:
  * `%fiochat_tab_state%`
  * Alias placeholders supported in header/footer/list name: `%fiochat_papi_<placeholder>%`
  * External access: `%tab_placeholder_<placeholder>%`, `%tab_papi_<placeholder>%`
* Notes:
  * Sorting supports `GROUPS:` and multiple `PAPI:` / `PERMS:` rules.
  * Hide rules exist for vanished players, spectators, and unverified players (viewer-side filtering).

#### <i class="fa-user-dashed" style="color:$primary;">:user-dashed:</i> <mark style="color:$primary;">vanish</mark>

<mark style="color:$info;">Purpose: Vanish mode + interaction blocks (containers, pickup, doors/levers, block place/break, etc).</mark>

* Config: `modules/vanish/config.yml`
* Commands: `/vanish`
* Permissions: `fiochat.vanish.*`
* Placeholders: `%fiochat_vanish_state%`, `%fiochat_vanish_level%`, and interaction placeholders `%fiochat_vanish_interaction_*%`

#### <i class="fa-door-open" style="color:$primary;">:door-open:</i> <mark style="color:$primary;">welcome-screen</mark>

<mark style="color:$info;">Purpose: Join welcome screen effects.</mark>

* Config: `modules/welcome-screen/config.yml`
* Commands: none
* Permissions: module-defined nodes (see config and `plugin.yml` where applicable)
