# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://itzfabb.gitbook.io/fios-config/home/documentation/plugins/fiochat.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
