# Introduction

Welcome to Hypera Development's Documentation site!

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>UltraStaffChatPro →</strong></td><td><a href="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2Fk4POhJpm76s3VHKJRO4s%2Fultrastaffchatpro-banner.png?alt=media&amp;token=9ca60465-b807-473d-8603-361581b32388">ultrastaffchatpro-banner.png</a></td><td><a href="/products/ultrastaffchatpro">UltraStaffChatPro</a></td></tr><tr><td><strong>UltraStaffChat BungeeCord →</strong></td><td><a href="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FNg1VH5oq9VPkhAx4KABh%2Fultrastaffchat-banner.png?alt=media&amp;token=1e52abff-2088-4b39-992a-af5d94db9929">ultrastaffchat-banner.png</a></td><td><a href="/products/ultrastaffchat">UltraStaffChat</a></td></tr></tbody></table>


# UltraStaffChatPro

The most advanced and feature packed staff communication plugin for Spigot, Paper, BungeeCord and Velocity.

Supporting Spigot, Paper, BungeeCord and Velocity, UltraStaffChatPro is one of the most popular, advanced and feature packed premium staff communication (or staff-chat) plugins on the market.\
\
We also provide quick and helpful support for anyone needing assistance with the plugin. [Contact us or create a ticket on Discord to receive support.](https://support.hypera.dev/)

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Features →</strong></td><td><a href="/products/ultrastaffchatpro/features">Features</a></td></tr><tr><td><strong>Commands →</strong></td><td><a href="/products/ultrastaffchatpro/commands">Commands</a></td></tr><tr><td><strong>Permissions →</strong></td><td><a href="/products/ultrastaffchatpro/permissions">Permissions</a></td></tr><tr><td><strong>Integrations →</strong></td><td><a href="/products/ultrastaffchatpro/integrations">Integrations</a></td></tr><tr><td><strong>Configuration →</strong></td><td><a href="/products/ultrastaffchatpro/configuration">Configuration</a></td></tr><tr><td><strong>Common issues →</strong></td><td><a href="/products/ultrastaffchatpro/common-issues">Common Issues</a></td></tr><tr><td><strong>Guides →</strong></td><td><a href="/products/ultrastaffchatpro/guides">Guides</a></td></tr><tr><td><strong>Developer API →</strong></td><td><a href="/products/ultrastaffchatpro/api">Developer API</a></td></tr><tr><td><strong>Legal →</strong></td><td><a href="/products/ultrastaffchatpro/legal">Legal</a></td></tr><tr><td><strong>Support →</strong></td><td><a href="https://support.hypera.dev/">https://support.hypera.dev/</a></td></tr></tbody></table>

## Authorised Marketplaces

Authorised marketplaces where you can purchase UltraStaffChatPro. These are the only legal and authorised websites where we sell and distribute UltraStaffChatPro.

<table><thead><tr><th width="220">Marketplace</th><th>Resource Page</th></tr></thead><tbody><tr><td><strong>SpigotMC</strong></td><td><a href="https://www.spigotmc.org/resources/ultrastaffchatpro.80461/">https://www.spigotmc.org/resources/ultrastaffchatpro.80461/</a></td></tr></tbody></table>

{% hint style="danger" %}
Make sure to only download UltraStaffChatPro from a **trusted and authorised marketplace**.\
\
**Do not** download plugins from unauthorised or "pirate" websites, as they often **distribute modified or malware-infected** versions of plugins. Using pirated versions of UltraStaffChatPro not only **violates the plugin's Terms of Service,** but also **jeopardises your server's security and stability.**\
\
Always choose legal and authorised sources to support the developers of the plugins you use, and to ensure you receive the original, secure, and supported version of UltraStaffChatPro.\
\
**If you find an unauthorised website where you can download or purchase UltraStaffChatPro, please** [**contact us on Discord**](https://support.hypera.dev/) **or** [**send us an email**](mailto:contact@hypera.dev)**.**
{% endhint %}


# Features

See all of the features included in UltraStaffChatPro, and why it is one of the most popular premium staff communication plugins on the market.

We try to keep UltraStaffChatPro the most advanced and feature-packed plugin on the market.\
Here are just some of the features included in UltraStaffChatPro.\
\
**Have an idea for another feature?** [**Let us know on Discord!**](https://support.hypera.dev/)

* **Highly customisable** - You can customise almost everything in the configuration files, from most functionality and messages, to the command aliases and permissions. RGB in messages is also supported (`&#aabbcc`, Minecraft 1.16+).

* **Multiple channels** - Set up as many different and separate communication channels as needed. Create separate channels for your moderation team or your admin team to allow for private communication between team members. Each channel has its own set of customisable commands and can have features toggled individually.

* **Discord Integration** - Allows for cross-platform messaging between Discord and Minecraft. Easily communicate with your staff members on your server without leaving Discord. The Discord Bot integration allows for easy two-way communication between Minecraft and Discord. UltraStaffChatPro also supports Discord webhooks, however webhooks are limited to one-way communication, sending messages from Minecraft to Discord.

* **Universal platform support** - UltraStaffChatPro supports [Spigot](https://www.spigotmc.org/wiki/spigot/), [Paper](https://papermc.io/software/paper), [Velocity](https://papermc.io/software/velocity) and [BungeeCord](https://www.spigotmc.org/wiki/bungeecord/). Use the plugin on your proxy for cross-server messages, allowing easy communication between staff members on different servers. If you have a single server, UltraStaffChatPro provides easy and private communication between staff members.

* **Toggle channels** - Toggle a channel to send all your chat messages to the channel until you un-toggle the channel. Run `/sctoggle` to toggle the default staff-chat channel, all of your regular chat messages will be sent to staff-chat until you run `/sctoggle` again.

* **Mute channels** - Temporarily disable receiving messages from a channel, making it easy to hide all private messages from your staff members until you unmute the channel. Run `/scmute` to stop receiving messages sent in staff-chat. When you are ready, run `/scmute` again to start receiving staff-chat messages again. Useful for people who often record videos on their server and don't want to display the private messages of their staff team.

* **Developer API** - Use UltraStaffChatPro's advanced Developer API in your own plugin to easily send or receive messages programmatically. Create your own integrations to make UltraStaffChatPro fit all of your servers needs.

* **RedisBungee Integration** - Support for RedisBungee allows you to have staff messages sent across all of your proxies by just installing UltraStaffChatPro. Support works out-of-the-box without any configuration needed.

* [**Built-in support for many popular plugins**](/products/ultrastaffchatpro/integrations) - Built-in support for LuckPerms, Ultra Permissions, PremiumVanish and more, with extra integrations planned for future versions. Display the rank of your staff members in messages, their vanish status, and more.

* **Staff List** - Display your online staff members on an easy-to-read list so your players can easily find staff members to report issues to. Display staff members grouped by their role or the server they are connected to for easy reading. Includes built-in support for PremiumVanish to hide vanished players, as well as playtime placeholders to show how long the staff member has been online.

* **Event Notifications** - Send notifications when staff members connect, switch servers, mark themselves as AFK, or disconnect. Allows all staff members to keep track of other staff members online, improving communication between your staff members.

* **Configurable command aliases** - Add or remove any custom aliases for UltraStaffChatPro's command, allowing you to create infinite aliases or remove conflicts with other plugins you use.

* **Server display names** - Add custom display names for your servers when running on a proxy, allowing you to customise how the servers are displayed in messages instead of using the default server IDs.

* **Send messages by adding a prefix to your chat messages** - Easily send messages to staff-chat channels by prefixing regular chat messages with a configurable value, allowing you to send messages to a staff-chat channel by simply adding a prefix to the message, e.g. `# hello world!`.

* **Enable or disable features** - Disable any features you don't need, so they don't get in the way of managing your server.

* **Disable the plugin on certain servers** - Prevent staff-chat messages from being sent and other UltraStaffChatPro commands from being used by players on certain servers when running on a proxy.

* **AFK system** - Allow staff members to broadcast their AFK status to other staff members, by marking themselves AFK or no longer AFK by running the `/scafk` command.

* **Global mute** - Temporarily prevent messages from being sent in certain channels by running `/mutesc`, allowing you to make important announcements or prevent spam.&#x20;


# Commands

You can change all command aliases and permissions in the [`config.yml`](/products/ultrastaffchatpro/configuration/main) file.

## Staff-chat commands

<table data-card-size="large" data-view="cards" data-full-width="false"><thead><tr><th>Command</th><th>Default Permission</th><th>Default Aliases</th><th>Description</th><th>Arguments</th></tr></thead><tbody><tr><td><strong><code>/staffchat</code></strong></td><td><code>staffchat.toggle</code></td><td><code>/sc</code>, <code>/staffc</code>, <code>/schat</code></td><td>Toggle sending chat messages to staff-chat. When enabled, all of your chat messages will be sent to staff-chat.</td><td>None</td></tr><tr><td><strong><code>/staffchat</code></strong> <mark style="color:yellow;"><strong><code>&#x3C;message></code></strong></mark></td><td><code>staffchat.talk</code></td><td><code>/sc</code>, <code>/staffc</code>, <code>/schat</code></td><td>Send a message to the staff-chat. All players with the staff-chat read permission will be able to see the message.</td><td><mark style="color:yellow;"><code>&#x3C;message></code></mark>: Message to send in staff-chat (required).</td></tr><tr><td><strong><code>/sctoggle</code></strong></td><td><code>staffchat.toggle</code></td><td><code>/staffchattoggle</code></td><td>Toggle sending chat messages to staff-chat. When enabled, all of your chat messages will be sent to staff-chat.</td><td>None</td></tr><tr><td><strong><code>/scmute</code></strong></td><td><code>staffchat.mute</code></td><td><code>/staffchatmute</code></td><td>Toggle receiving messages from staff-chat. When enabled, you will not receive any messages sent in the staff-chat.</td><td>None</td></tr><tr><td><strong><code>/mutesc</code></strong></td><td><code>staffchat.global-mute</code></td><td><code>/scglobalmute</code></td><td>Toggle global mute for the staff-chat. When enabled, all players will be prevented from sending messages in staff-chat.</td><td>None</td></tr><tr><td><strong><code>/scafk</code></strong></td><td><code>staffchat.afk</code></td><td><code>/staffchatafk</code></td><td>Toggle your AFK status. All players with the AFK read permission will receive a notification.</td><td>None</td></tr><tr><td><strong><code>/stafflist</code></strong></td><td><code>staffchat.list.view</code></td><td><code>/staff</code></td><td>Display a list of online staff members.<br><br>The output format is completely configurable in the <a href="/products/ultrastaffchatpro/configuration/main"><code>config.yml</code></a> and <a href="/products/ultrastaffchatpro/configuration/messages"><code>messages.yml</code></a> files.</td><td>None</td></tr></tbody></table>

## System commands

<table data-card-size="large" data-view="cards"><thead><tr><th>Command</th><th>Default Permission</th><th>Aliases</th><th>Description</th><th>Arguments</th></tr></thead><tbody><tr><td><strong><code>/ultrastaffchatpro</code></strong></td><td>None</td><td><code>/uscp</code></td><td>UltraStaffChatPro's system command.</td><td>None</td></tr><tr><td><strong><code>/ultrastaffchatpro reload</code></strong></td><td><code>ultrastaffchatpro.reload</code></td><td><code>/uscp</code></td><td>Reload UltraStaffChatPro's configuration files.</td><td>None</td></tr><tr><td><strong><code>/ultrastaffchatpro debug</code></strong> <mark style="color:purple;"><strong><code>[--a]</code></strong></mark> <mark style="color:purple;"><strong><code>[--f]</code></strong></mark></td><td><code>ultrastaffchatpro.debug</code></td><td><code>/uscp</code></td><td>Display useful debug information. This information will likely be requested if you contact us for support.</td><td><mark style="color:purple;"><code>[--a]</code></mark>: Create advanced debug log file. Contains more debug information.<br><mark style="color:purple;"><code>[--f]</code></mark>: Save advanced debug log to file only.</td></tr></tbody></table>


# Permissions

{% hint style="info" %}
If you are running UltraStaffChatPro on a proxy, you will need a proxy permissions plugin such as [LuckPerms](https://luckperms.net).
{% endhint %}

## Command Permissions

<table data-full-width="false"><thead><tr><th width="261.3333333333333">Command</th><th width="282">Permission</th><th>Description</th></tr></thead><tbody><tr><td><code>/staffchat &#x3C;message></code></td><td><code>staffchat.talk</code></td><td>Send message in staff-chat. <strong>Staff members must have the <code>staffchat.read</code> permission to receive staff-chat messages.</strong></td></tr><tr><td><code>/staffchat</code></td><td><code>staffchat.toggle</code></td><td>Toggle sending chat messages to staff-chat.</td></tr><tr><td><code>/sctoggle</code></td><td><code>staffchat.toggle</code></td><td>Toggle sending chat messages to staff-chat.</td></tr><tr><td><code>/scmute</code></td><td><code>staffchat.mute</code></td><td>Toggle receiving messages sent in staff-chat.</td></tr><tr><td><code>/mutesc</code></td><td><code>staffchat.global-mute</code></td><td>Toggle global mute for staff-chat. Prevents all staff members, except those with the bypass permission, from sending staff-chat messages.</td></tr><tr><td><code>/scafk</code></td><td><code>staffchat.afk</code></td><td>Toggle your AFK status. A broadcast message will be sent to staff members with the <code>staffchat.afk.read</code> permission.</td></tr><tr><td><code>/stafflist</code></td><td><code>staffchat.list.view</code></td><td>Display the staff list. Staff members must have the <code>staffchat.list</code> permission to  be displayed.</td></tr><tr><td><code>/ultrastaffchatpro reload</code></td><td><code>ultrastaffchatpro.reload</code></td><td>Reload UltraStaffChatPro's configuration files and integrations.</td></tr><tr><td><code>/ultrastaffchatpro debug</code></td><td><code>ultrastaffchatpro.debug</code></td><td>View useful debugging information.</td></tr></tbody></table>

Debugging information will likely be requested if you contact us for support.\
`<>` = required, `[]` = optional

## Event Permissions

<table data-full-width="false"><thead><tr><th width="148">Event</th><th width="325">Permission</th><th>Description</th></tr></thead><tbody><tr><td><strong>Chat</strong></td><td><code>staffchat.read</code></td><td>Receive messages sent in the staff-chat.</td></tr><tr><td><strong>Join</strong></td><td><code>staffchat.join</code></td><td>Send a notification when the player connects to the server.</td></tr><tr><td><strong>Join</strong></td><td><code>staffchat.join.read</code></td><td>Receive notifications when players with the notify permission connect to the server.</td></tr><tr><td><strong>Switch</strong></td><td><code>staffchat.switch</code></td><td>Send a notification when the player switches server (Proxy only).</td></tr><tr><td><strong>Switch</strong></td><td><code>staffchat.switch.read</code></td><td>Receive notifications when players with the notify permission  switch servers (Proxy only).</td></tr><tr><td><strong>Leave</strong></td><td><code>staffchat.leave</code></td><td>Send a notification when the player disconnects from the server.</td></tr><tr><td><strong>Leave</strong></td><td><code>staffchat.leave.read</code></td><td>Receive notifications when players with the notify permission disconnects from the server.</td></tr><tr><td><strong>AFK</strong></td><td><code>staffchat.afk.read</code></td><td>Receive notifications for when a player marks themselves as AFK using <code>/scafk</code>.</td></tr><tr><td><strong>Global Mute</strong></td><td><code>staffchat.global-mute.read</code></td><td>Receive a notification when the staff-chat is muted globally.</td></tr><tr><td><strong>Update</strong></td><td><code>ultrastaffchatpro.update</code></td><td>Receive notification when an update for UltraStaffChatPro is available.</td></tr></tbody></table>

## Other Permissions

<table data-full-width="false"><thead><tr><th width="244">Description</th><th>Permission</th><th data-hidden></th></tr></thead><tbody><tr><td>Bypass global mute</td><td><code>staffchat.global-mute.bypass</code></td><td></td></tr><tr><td>Display on Staff List</td><td><code>staffchat.list</code></td><td></td></tr><tr><td>View vanished players on Staff List (requires supported Vanish plugin)</td><td><code>staffchat.list.view-vanished</code></td><td></td></tr></tbody></table>


# Integrations

All integrations supported by UltraStaffChatPro.

## Discord Bot

The Discord Bot integration allows for two-way communication between Discord and Minecraft.

## Discord Webhook

The Discord Webhook integration allows for one-way communication, sending messages from Minecraft to Discord. Sending messages from Discord to Minecraft **is not supported**, if you want two-way communication then use the [**Discord Bot Integration**](#discord-bot)**.**

## LuckPerms

The LuckPerms integration provides the following placeholders:

<table><thead><tr><th width="190">Name</th><th width="228">Placeholder</th><th width="100">Context</th><th>Description</th></tr></thead><tbody><tr><td>LuckPerms prefix</td><td><code>{lp_prefix}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td><p>Displays the LuckPerms prefix of the player. </p><p><a href="https://luckperms.net/wiki/Prefixes,-Suffixes-&#x26;-Meta">LuckPerms Documentation</a></p></td></tr><tr><td>LuckPerms suffix</td><td><code>{lp_suffix}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the LuckPerms suffix of the player. <a href="https://luckperms.net/wiki/Prefixes,-Suffixes-&#x26;-Meta">LuckPerms Documentation</a></td></tr><tr><td>LuckPerms group</td><td><code>{lp_group}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the name of the player's highest priority LuckPerms group.</td></tr><tr><td>LuckPerms display</td><td><code>{lp_group_display}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the display name of the player's highest priority LuckPerms group.</td></tr><tr><td>LuckPerms meta</td><td><code>{lp_&#x3C;meta_key>}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the value of the meta key for the player.<br><br>Replace <code>&#x3C;meta_key></code> with the LuckPerms metadat akey you wish to display the value of.<br><br><a href="https://luckperms.net/wiki/Prefixes,-Suffixes-&#x26;-Meta">LuckPerms Documentation</a></td></tr></tbody></table>

## Ultra Permissions

<table><thead><tr><th width="190">Name</th><th width="228">Placeholder</th><th width="100">Context</th><th>Description</th></tr></thead><tbody><tr><td>Ultra Permissions prefix</td><td><code>{lp_prefix}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the Ultra Permissions prefix of the player</td></tr><tr><td>Ultra Permissions suffix</td><td><code>{lp_suffix}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the Ultra Permissions suffix of the player</td></tr></tbody></table>

## PremiumVanish

The PremiumVanish integration provides the following placeholders:

<table><thead><tr><th width="214">Name</th><th width="144">Placeholder</th><th width="100">Context</th><th>Description</th></tr></thead><tbody><tr><td>PremiumVanish Status</td><td><code>{vanish}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the vanish status of the player. The value of this placeholder can be customised in the <a href="/products/ultrastaffchatpro/configuration/main">config.yml</a> file.</td></tr></tbody></table>

## RedisBungee

The RedisBungee integration allows UltraStaffChatPro to send messages across multiple proxies (or multi-proxy). For this to work, UltraStaffChatPro **must** be installed on all proxies. The ProxioDev fork of RedisBungee, [ValioBungee](https://github.com/ProxioDev/ValioBungee), should also work with UltraStaffChatPro.

**Note: When using the Discord integrations with RedisBungee, only setup the Discord integration on one proxy.**

<table><thead><tr><th width="218">Name</th><th width="142">Placeholder</th><th width="100">Context</th><th>Description</th></tr></thead><tbody><tr><td>RedisBungee Proxy ID</td><td><code>{proxy_id}</code></td><td><mark style="color:green;"><strong>User</strong></mark></td><td>Displays the identifier of the RedisBungee proxy the player is currently connected to.</td></tr></tbody></table>


# Configuration

The UltraStaffChatPro configuration files allow you to customise UltraStaffChatPro to match your server's requirements and style.


# config.yml

UltraStaffChatPro's primary configuration file.

## Default configuration file

{% code title="config.yml" lineNumbers="true" %}

```yaml
#     __  ______             _____ __        ________________          __  ____
#    / / / / / /__________ _/ ___// /_____ _/ __/ __/ ____/ /_  ____ _/ /_/ __ \_________
#   / / / / / __/ ___/ __ `/\__ \/ __/ __ `/ /_/ /_/ /   / __ \/ __ `/ __/ /_/ / ___/ __ \
#  / /_/ / / /_/ /  / /_/ /___/ / /_/ /_/ / __/ __/ /___/ / / / /_/ / /_/ ____/ /  / /_/ /
#  \____/_/\__/_/   \__,_//____/\__/\__,_/_/ /_/  \____/_/ /_/\__,_/\__/_/   /_/   \____/
#
#   UltraStaffChatPro v2.0.17 - config.yml - Main configuration file
#   Copyright (c) 2022-present Joshua Sing <joshua@hypera.dev>. All Rights Reserved.
#
#   Helpful Links
#    - Support        |  https://discord.hypera.dev/
#    - Documentation  |  https://wiki.hypera.dev/ultrastaffchatpro/
#
#   User placeholders
#    - {player}           |  Player's username
#    - {uuid}             |  Player's unique id
#    - {server}           |  Player server's name (Proxy only)
#    - {afk}              |  Player AFK status
#    - {playtime}         |  Player's online time
#    - {playtime_server}  |  Player's server online time (Resets when they switch server)
#
#   User integration placeholders
#    - LuckPerms          |  {lp_prefix}, {lp_group}, {lp_group_display}, {lp_suffix}, {lp_<meta-key>}
#    - Ultra Permissions  |  {up_prefix}, {up_suffix}
#    - PremiumVanish      |  {vanish}
#    - RedisBungee        |  {proxy_id}
#
#   RGB Support
#    - RGB Format  |  `&#aabbcc` (eg. `&#2155cc`)
#
 
# [ UltraStaffChatPro | General Configuration ]
general:
 
  # General | Default console placeholders
  console:
 
    # Placeholder | Name
    name: "Console"
 
    # Placeholder | Unique ID (UUID)
    uuid: "f78a4d8d-d51b-4b39-98a3-230f2de0c670"
 
    # Placeholder | Server
    server: "Global"
 
  # General | Unknown server name
  unknown-server: "Unknown"
 
  # General | Server display names (Proxy only)
  server-display:
    # Original name : Display name
    lobby: "Lobby"
    survival: "SMP"
 
  # General | Disabled servers (Proxy only)
  disabled-servers:
    - "auth"
 
 
 
# [ UltraStaffChatPro | Placeholder Configuration ]
placeholders:
 
  # Placeholder | Vanish
  #  This allows you to change the value of the {vanish} placeholder.
  #  This only works with the PremiumVanish integration.
  vanish:
    vanished: "&7Vanished | "
    not-vanished: ""
 
  # Placeholder | AFK
  afk:
    afked: "&c&lAFK &7| "
    not-afk: ""
 
  # Placeholder | Playtime
  #  Used for {playtime} and {playtime_server}
  #  Format placeholders: {hours}, {minutes}, {seconds}
  #                       {hours_total}, {minutes_total}, {seconds_total}
  playtime:
    enabled: true
    format: "{hours}h, {minutes}m, {seconds}s"
 
 
 
# [ UltraStaffChatPro | Discord Configuration ]
discord:
 
  # Discord | Enabled
  enabled: false
 
  # Discord | Mode
  #  Options: "BOT", "WEBHOOK"
  mode: "BOT"
 
  # Discord | Bot Configuration
  #  Only used if 'mode' is set to "BOT"
  bot:
 
    # Bot | Token
    token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 
    # Bot | Discord guild ID
    guild: "XXXXXXXXXXXXXXXXXX"
 
    # Bot | Discord channel ID
    channel: "XXXXXXXXXXXXXXXXXX"
 
    # Bot | Status
    #  Options: "ONLINE", "IDLE", "DO_NOT_DISTURB", "INVISIBLE"
    status: "ONLINE"
 
    # Bot | Activity
    activity:
 
      # Activity | Enabled
      enabled: true
 
      # Activity | Type
      #  Options: "DEFAULT" (Playing), "WATCHING", "LISTENING"
      type: "WATCHING"
 
      # Activity | Message
      #  Placeholders: {online} (Total online players), {count} (Total online staff / People with the StaffList display permission)
      message: "{online} players on play.example.net"
 
  # Discord | Webhook Configuration
  #  Only needed if 'mode' is set to "WEBHOOK"
  #  Note: Two-way chat requires the use of a bot.
  webhook:
 
    # Webhook | Avatar
    #  Placeholders: {player}, {uuid}
    avatar: "https://crafatar.com/avatars/{uuid}.png"
 
    # Webhook | Username
    username: "{player}"
 
    # Webhook | URL
    url: "https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 
  # Discord | Display
  display:
 
    # Display | Name
    #  How should Discord users display in-game?
    #  Options: "TAG" (Name#1234), "NAME" (Nickname), "USERNAME" (Username)
    name: "TAG"
 
    # Display | Server
    #  What should the {server} placeholder be
    #  replaced with for people talking from Discord?
    server: "Discord"
 
  # Discord | Allowed Mentions
  #  Options: "ALL" (@everyone, @here, users, roles), "ROLES" (users, roles), "USERS" (users), "NONE"
  allowed-mentions: "NONE"
 
 
# [ UltraStaffChatPro | StaffChat Configuration ]
staffchat:
 
  # StaffChat | Prefix
  prefix:
 
    # Prefix | Enabled
    enabled: true
 
    # Prefix | Chat message prefix
    prefix: "#"
 
  # StaffChat | Toggle
  toggle:
    enabled: true
 
  # StaffChat | Mute
  mute:
    enabled: true
    hide-events: false # Should join/switch/leave messages also be hidden?
 
  # StaffChat | Global Mute
  global-mute:
    enabled: true
 
  # StaffChat | AFK
  afk:
    enabled: true
    auto-unafk: true # Should the user be marked as not afk if they send a message in staff chat?
 
  # StaffChat | Join messages
  join:
    enabled: true
 
  # StaffChat | Switch messages
  switch:
    enabled: true
 
  # StaffChat | Leave messages
  leave:
    enabled: true
 
  # StaffChat | Formatting codes
  #  Should players be able to use formatting codes in messages?
  formatting:
    enabled: true
 
  # StaffChat | Console
  console:
 
    # StaffChat | Should console receive staffchat messages?
    receive-messages: true
 
    # StaffChat | Should console bypass `/scmute`?
    bypass-mute: true
 
 
 
# [ UltraStaffChatPro | StaffList Configuration ]
stafflist:
 
  # StaffList | Enabled
  enabled: true
 
  # StaffList | Hide vanished players
  #  Requires PremiumVanish
  hide-vanished: true
 
  # StaffList | Sorting
  sorting:
 
    # StaffList Sorting | Mode
    #  Options:
    #   - GROUP     |  Sorts the StaffList by groups, ordering the groups by how they are listed.
    #                  Placeholders: {group_display}
    #   - SERVER    |  Sorts the StaffList by server name, from A-Z (Proxy only)
    #   - USERNAME  |  Sorts the StaffList by username, from A-Z
    #   - DISABLED  |  Disables sorting, users will be added to the StaffList as returned by the server
    mode: "GROUP"
 
    # StaffList Sorting | Groups
    #  This is only used if `mode` is set to "GROUP"
    groups:
      owner:
        display: "&cOwners"
        permission: "staffchat.group.owner"
      admin:
        display: "&4Administrators"
        permission: "staffchat.group.admin"
      moderator:
        display: "&cModerators"
        permission: "staffchat.group.moderator"
      helper:
        display: "&eHelpers"
        permission: "staffchat.group.helper"
 
 
 
# [ UltraStaffChatPro | MultiChannel Configuration ]
multichannel:
 
  # MultiChannel | Enabled
  enabled: true
 
  # MultiChannel | Channels
  channels:
 
    # Helper Chat (Example channel)
    #  This key is used as the main command for the channel.
    helperchat:
 
      # MultiChannel | Command aliases
      #  Set to [] to disable all aliases. Remove line to remove alias.
      aliases:
        chat:
          - "hc"
          - "helperstaffchat"
        toggle:
          - "hctoggle"
        mute:
          - "hcmute"
        global-mute:
          - "mutehc"
          - "hcglobalmute"
 
      # MultiChannel | Prefix
      prefix:
 
        # Prefix | Enabled
        enabled: true
 
        # Prefix | Chat message prefix
        prefix: "%"
 
      # MultiChannel | Messages
      messages:
 
        # Message | Format
        #  Placeholders: {message}
        format: "&7[&e&lH&7] &e{player}&7: &c{message}"
 
        # Message | No permission
        no-permission: "&cNo permission."
 
        # Message | Command usage
        usage: "&cUsage: /hc <message>"
 
      # MultiChannel | Toggle
      toggle:
        enabled: true
        messages:
          toggled-on: "&7[&e&lH&7] &aToggled on."
          toggled-off: "&7[&e&lH&7] &cToggled off."
 
      # MultiChannel | Mute
      mute:
        enabled: true
        hide-events: false
        messages:
          muted: "&7[&e&lH&7] &cMuted."
          unmuted: "&7[&e&lH&7] &aUnmuted."
 
      # MultiChannel | Global Mute
      global-mute:
        enabled: true
        messages:
          blocked: "&cHelperChat is currently muted."
          muted: "&7[&e&lH&7] &cHelperChat was muted by {player}"
          unmuted: "&7[&e&lH&7] &aHelperChat was unmuted by {player}"
 
      # MultiChannel | Join messages
      join:
        enabled: true
        message: "&7[&e&lH&7] &e{player} &7joined"
 
      # MultiChannel | Switch messages
      #  Placeholders: {from}, {to}
      switch:
        enabled: true
        message: "&7[&e&lH&7] &e{player} &7switched from &c{from} &7to &a{to}"
 
      # MultiChannel | Leave messages
      leave:
        enabled: true
        message: "&7[&e&lH&7] &e{player} &7left"
 
      # MultiChannel | Formatting codes
      #  Should players be able to use formatting codes in messages?
      formatting:
        enabled: true
 
      # MultiChannel | Console
      console:
 
        # MultiChannel | Should console receive messages?
        receive-messages: true
 
        # MultiChannel | Should console bypass `/hcmute`?
        bypass-mute: true
 
      # MultiChannel | Discord
      #  This is only used if the Discord integration is enabled.
      discord:
 
        # Discord | Enabled
        #  Should the Discord integration be used for this channel?
        enabled: false
 
        # Discord | Guild ID (Server ID)
        guild: "XXXXXXXXXXXXXXXXXX"
 
        # Discord | Channel ID
        channel: "XXXXXXXXXXXXXXXXXX"
 
        # Discord | Webhook configuration
        #  This is only used if the Discord integration is configured to use a webhook.
        webhook:
 
          # Webhook | Avatar
          #  Placeholders: {player}, {uuid}
          avatar: "https://crafatar.com/avatars/{uuid}.png"
 
          # Webhook | Username
          username: "{player}"
 
          # Webhook | URL
          url: "https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 
        # Discord | MultiChannel message format
        message:
          # Discord | Mode
          #  Options: "EMBED", "TEXT"
          mode: "EMBED"
 
          # Discord | Embed
          #  Only needed if 'mode' is set to "EMBED"
          embed:
            author:
              name: "{player}"
              url: ""
              image: "https://crafatar.com/avatars/{uuid}.png"
            title:
              text: ""
              url: ""
            description: "{message}"
            color: "#55FFFF"
            footer:
              text: "UltraStaffChatPro"
              icon: ""
            image: ""
            thumbnail: ""
            fields: {} # To use fields, remove '{}' here and uncomment the following lines.
          #          1:
          #            name: "Field 1"
          #            value: "Test"
          #            inline: true
          #          2:
          #            name: "Field 2"
          #            value: "Test"
          #            inline: true
 
          # Discord | Text
          #  Only needed if 'mode' is set to "TEXT"
          text: "**{player}**: {message}"
 
        # Discord | MultiChannel join message
        join:
          # Discord | Mode
          #  Options: "EMBED", "TEXT"
          mode: "EMBED"
 
          # Discord | Embed
          #  Only needed if 'mode' is set to "EMBED"
          embed:
            author:
              name: "{player}"
              url: ""
              image: "https://crafatar.com/avatars/{uuid}.png"
            title:
              text: ""
              url: ""
            description: "{player} joined the server"
            color: "#55FFFF"
            footer:
              text: "UltraStaffChatPro"
              icon: ""
            image: ""
            thumbnail: ""
            fields: {} # To use fields, remove '{}' here and uncomment the following lines.
          #          1:
          #            name: "Field 1"
          #            value: "Test"
          #            inline: true
          #          2:
          #            name: "Field 2"
          #            value: "Test"
          #            inline: true
 
          # Discord | Text
          #  Only needed if 'mode' is set to "TEXT"
          text: "[**+**] {player}"
 
        # Discord | MultiChannel switch message
        #  Placeholders: {from}, {to}
        switch:
          # Discord | Mode
          #  Options: "EMBED", "TEXT"
          mode: "EMBED"
 
          # Discord | Embed
          #  Only needed if 'mode' is set to "EMBED"
          embed:
            author:
              name: "{player}"
              url: ""
              image: "https://crafatar.com/avatars/{uuid}.png"
            title:
              text: ""
              url: ""
            description: "{player} switched from {from} to {to}"
            color: "#55FFFF"
            footer:
              text: "UltraStaffChatPro"
              icon: ""
            image: ""
            thumbnail: ""
            fields: {} # To use fields, remove '{}' here and uncomment the following lines.
          #          1:
          #            name: "Field 1"
          #            value: "Test"
          #            inline: true
          #          2:
          #            name: "Field 2"
          #            value: "Test"
          #            inline: true
 
          # Discord | Text
          #  Only needed if 'mode' is set to "TEXT"
          #  Placeholders: {from}, {to}
          text: "{player} switched from {from} to {to}"
 
        # Discord | MultiChannel leave message
        leave:
          # Discord | Mode
          #  Options: "EMBED", "TEXT"
          mode: "EMBED"
 
          # Discord | Embed
          #  Only needed if 'mode' is set to "EMBED"
          embed:
            author:
              name: "{player}"
              url: ""
              image: "https://crafatar.com/avatars/{uuid}.png"
            title:
              text: ""
              url: ""
            description: "{player} left the server"
            color: "#55FFFF"
            footer:
              text: "UltraStaffChatPro"
              icon: ""
            image: ""
            thumbnail: ""
            fields: {} # To use fields, remove '{}' here and uncomment the following lines.
          #          1:
          #            name: "Field 1"
          #            value: "Test"
          #            inline: true
          #          2:
          #            name: "Field 2"
          #            value: "Test"
          #            inline: true
 
          # Discord | Text
          #  Only needed if 'mode' is set to "TEXT"
          text: "[**-**] {player}"
 
        # Discord | MultiChannel global mute message
        global-mute:
 
          # Discord | MultiChannel global mute ON message
          muted:
            # Discord | Mode
            #  Options: "EMBED", "TEXT"
            mode: "EMBED"
 
            # Discord | Embed
            #  Only needed if 'mode' is set to "EMBED"
            embed:
              author:
                name: "{player}"
                url: ""
                image: "https://crafatar.com/avatars/{uuid}.png"
              title:
                text: ""
                url: ""
              description: "{player} has globally muted helperchat"
              color: "#55FFFF"
              footer:
                text: "UltraStaffChatPro"
                icon: ""
              image: ""
              thumbnail: ""
              fields: {} # To use fields, remove '{}' here and uncomment the following lines.
            #           1:
            #             name: "Field 1"
            #             value: "Test"
            #             inline: true
            #           2:
            #             name: "Field 2"
            #             value: "Test"
            #             inline: true
 
            # Discord | Text
            #  Only needed if 'mode' is set to "TEXT"
            text: "{player} has globally muted helperchat"
 
          # Discord | MultiChannel global mute OFF message
          unmuted:
            # Discord | Mode
            #  Options: "EMBED", "TEXT"
            mode: "EMBED"
 
            # Discord | Embed
            #  Only needed if 'mode' is set to "EMBED"
            embed:
              author:
                name: "{player}"
                url: ""
                image: "https://crafatar.com/avatars/{uuid}.png"
              title:
                text: ""
                url: ""
              description: "{player} has globally unmuted helperchat"
              color: "#55FFFF"
              footer:
                text: "UltraStaffChatPro"
                icon: ""
              image: ""
              thumbnail: ""
              fields: {} # To use fields, remove '{}' here and uncomment the following lines.
            #           1:
            #             name: "Field 1"
            #             value: "Test"
            #             inline: true
            #           2:
            #             name: "Field 2"
            #             value: "Test"
            #             inline: true
 
            # Discord | Text
            #  Only needed if 'mode' is set to "TEXT"
            text: "{player} has globally unmuted helperchat"
 
      # MultiChannel | Permissions
      permissions:
        talk: "helperchat.talk"
        read: "helperchat.read"
        toggle: "helperchat.toggle"
        mute: "helperchat.mute"
        global-mute:
          toggle: "helperchat.global-mute"
          bypass: "helperchat.global-mute.bypass"
          read: "helperchat.global-mute.read" # Permission required to receive global mute message.
        join:
          send: "helperchat.join"
          read: "helperchat.join.read"
        switch:
          send: "helperchat.switch"
          read: "helperchat.switch.read"
        leave:
          send: "helperchat.leave"
          read: "helperchat.leave.read"
 
 
# [ UltraStaffChatPro | Permission Configuration ]
permission:
 
  # Permission | StaffChat
  staffchat:
    talk: "staffchat.talk"
    read: "staffchat.read"
    toggle: "staffchat.toggle"
    mute: "staffchat.mute"
    global-mute:
      toggle: "staffchat.global-mute"
      bypass: "staffchat.global-mute.bypass"
      read: "staffchat.global-mute.read" # Permission required to receive the global mute broadcast.
 
  # Permission | StaffList
  stafflist:
    view: "staffchat.list.view"
    view-vanished: "staffchat.list.view-vanished"
    display: "staffchat.list"
 
  # Permission | Events
  event:
    afk:
      send: "staffchat.afk"
      read: "staffchat.afk.read"
    join:
      send: "staffchat.join"
      read: "staffchat.join.read"
    switch:
      send: "staffchat.switch"
      read: "staffchat.switch.read"
    leave:
      send: "staffchat.leave"
      read: "staffchat.leave.read"
 
  # Permission | UltraStaffChatPro
  ultrastaffchatpro:
    update: "ultrastaffchatpro.update" # Permission required to receive update notifications.
    reload: "ultrastaffchatpro.reload"
    debug: "ultrastaffchatpro.debug"
 
 
 
# [ UltraStaffChatPro | Command Configuration ]
 
# Command | Aliases
aliases:
 
  # Aliases | StaffChat (/staffchat)
  staffchat:
    - "sc"
    - "staffc"
    - "schat"
 
  # Aliases | StaffChat Toggle (/sctoggle)
  sctoggle:
    - "staffchattoggle"
 
  # Aliases | StaffChat Mute (/scmute)
  scmute:
    - "staffchatmute"
 
  # Aliases | StaffChat Global Mute (/mutesc)
  mutesc:
    - "scglobalmute"
 
  # Aliases | StaffChat AFK (/scafk)
  scafk:
    - "staffchatafk"
 
  # Aliases | StaffList (/stafflist)
  stafflist:
    - "staff"
 
 
 
# [ UltraStaffChatPro | Advanced Configuration ]
advanced:
 
  # Advanced | Update Notifications enabled
  #  This is recommended if you want to keep USCP up-to-date!
  update-notifications: true
 
 
 
# [ UltraStaffChatPro | System Configuration ]
 
# System | Configuration file version
#  Used for making sure this file is up-to-date. - Do not change this!
version: 12
 
 
# - You're done!
# Thank you for purchasing and using UltraStaffChatPro!
# If you have any ideas for UltraStaffChatPro, please suggest them at https://discord.hypera.dev/
```

{% endcode %}


# messages.yml

UltraStaffChatPro's message configuration file.

## Default configuration file

{% code title="messages.yml" lineNumbers="true" %}

```yaml
#     __  ______             _____ __        ________________          __  ____
#    / / / / / /__________ _/ ___// /_____ _/ __/ __/ ____/ /_  ____ _/ /_/ __ \_________
#   / / / / / __/ ___/ __ `/\__ \/ __/ __ `/ /_/ /_/ /   / __ \/ __ `/ __/ /_/ / ___/ __ \
#  / /_/ / / /_/ /  / /_/ /___/ / /_/ /_/ / __/ __/ /___/ / / / /_/ / /_/ ____/ /  / /_/ /
#  \____/_/\__/_/   \__,_//____/\__/\__,_/_/ /_/  \____/_/ /_/\__,_/\__/_/   /_/   \____/
#
#   UltraStaffChatPro v2.0.17 - messages.yml - Message configuration file
#   Copyright (c) 2022-present Joshua Sing <joshua@hypera.dev>. All Rights Reserved.
#
#   Helpful Links
#    - Support        |  https://discord.hypera.dev/
#    - Documentation  |  https://wiki.hypera.dev/ultrastaffchatpro/
#
#   User placeholders
#    - {player}           |  Player's username
#    - {uuid}             |  Player's unique id
#    - {server}           |  Player server's name (Proxy only)
#    - {afk}              |  Player AFK status
#    - {playtime}         |  Player's online time
#    - {playtime_server}  |  Player's server online time (Resets when they switch server)
#
#   User integration placeholders
#    - LuckPerms          |  {lp_prefix}, {lp_group}, {lp_suffix}, {lp_<meta-key>}
#    - Ultra Permissions  |  {up_prefix}, {up_suffix}
#    - PremiumVanish      |  {vanish}
#    - RedisBungee        |  {proxy_id}
#
#   RGB Support
#    - RGB Format  |  `&#aabbcc` (eg. `&#2155cc`)
#
 
 
# [ UltraStaffChatPro | General Configuration ]
 
# General | No permission message
no-permission: "&cNo permission."
 
# General | In-game only message
in-game-only: "&cThis command can only be used in-game."
 
 
 
# [ UltraStaffChatPro | StaffChat Configuration ]
staffchat:
 
  # StaffChat | Format
  #  Placeholders: {message}
  format: "&7[&b&lS&7] &b{player}&7: &f{message}"
 
  # StaffChat | Command usage
  usage: "&cUsage: /sc <message>"
 
  # StaffChat | Toggle messages
  toggle:
    toggled-on: "&7[&b&lS&7] &aToggled on."
    toggled-off: "&7[&b&lS&7] &cToggled off."
 
  # StaffChat | Mute messages
  mute:
    muted: "&7[&b&lS&7] &cMuted."
    unmuted: "&7[&b&lS&7] &aUnmuted."
 
  # StaffChat | Global Mute messages
  global-mute:
    blocked: "&cStaffChat is currently muted."
    muted: "&7[&b&lS&7] &cStaffChat was muted by {player}"
    unmuted: "&7[&b&lS&7] &aStaffChat was unmuted by {player}"
 
  # StaffChat | AFK messages
  afk:
    afk: "&7[&b&lS&7] &c{player} &7is now &c&lAFK"
    no-longer-afk: "&7[&b&lS&7] &a{player} &7is no longer &c&lAFK"
 
  # StaffChat | Join message
  join: "&7[&a&l+&7] &a{player}"
 
  # StaffChat | Switch message
  #  Placeholders: {from}, {to}
  switch: "&7[&b&lS&7] &b{player} &7switched from &c{from} &7to &a{to}"
 
  # StaffChat | Leave message
  leave: "&7[&c&l-&7] &c{player}"
 
  # StaffChat | Discord
  #  This is only used if the Discord integration is enabled.
  discord:
 
    # Discord | StaffChat message format
    message:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{message}"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true
 
      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      text: "**{player}**: {message}"
 
    # Discord | StaffChat join message
    join:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{player} joined the server"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true
 
      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      text: "[**+**] {player}"
 
    # Discord | StaffChat switch message
    #  Placeholders: {from}, {to}
    switch:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{player} switched from {from} to {to}"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true
 
      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      #  Placeholders: {from}, {to}
      text: "{player} switched from {from} to {to}"
 
    # Discord | StaffChat leave message
    leave:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{player} left the server"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true
 
      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      text: "[**-**] {player}"
 
    # Discord | StaffChat AFK messages
    afk:
 
      # Discord | StaffChat AFK ON message
      afk:
        # Discord | Mode
        #  Options: "EMBED", "TEXT"
        mode: "EMBED"
 
        # Discord | Embed
        #  Only needed if 'mode' is set to "EMBED"
        embed:
          author:
            name: "{player}"
            url: ""
            image: "https://crafatar.com/avatars/{uuid}.png"
          title:
            text: ""
            url: ""
          description: "{player} is now AFK"
          color: "#55FFFF"
          footer:
            text: "UltraStaffChatPro"
            icon: ""
          image: ""
          thumbnail: ""
          fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#           1:
#             name: "Field 1"
#             value: "Test"
#             inline: true
#           2:
#            name: "Field 2"
#            value: "Test"
#            inline: true
 
        # Discord | Text
        #  Only needed if 'mode' is set to "TEXT"
        text: "{player} is now AFK"
 
      # Discord | StaffChat AFK OFF messages
      not-afk:
        # Discord | Mode
        #  Options: "EMBED", "TEXT"
        mode: "EMBED"
 
        # Discord | Embed
        #  Only needed if 'mode' is set to "EMBED"
        embed:
          author:
            name: "{player}"
            url: ""
            image: "https://crafatar.com/avatars/{uuid}.png"
          title:
            text: ""
            url: ""
          description: "{player} is no longer AFK"
          color: "#55FFFF"
          footer:
            text: "UltraStaffChatPro"
            icon: ""
          image: ""
          thumbnail: ""
          fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#           1:
#             name: "Field 1"
#             value: "Test"
#             inline: true
#           2:
#             name: "Field 2"
#             value: "Test"
#             inline: true
 
        # Discord | Text
        #  Only needed if 'mode' is set to "TEXT"
        text: "{player} is no longer AFK"
 
    # Discord | StaffChat global mute message
    global-mute:
 
      # Discord | StaffChat global mute ON message
      muted:
        # Discord | Mode
        #  Options: "EMBED", "TEXT"
        mode: "EMBED"
 
        # Discord | Embed
        #  Only needed if 'mode' is set to "EMBED"
        embed:
          author:
            name: "{player}"
            url: ""
            image: "https://crafatar.com/avatars/{uuid}.png"
          title:
            text: ""
            url: ""
          description: "{player} has globally muted staffchat"
          color: "#55FFFF"
          footer:
            text: "UltraStaffChatPro"
            icon: ""
          image: ""
          thumbnail: ""
          fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#           1:
#             name: "Field 1"
#             value: "Test"
#             inline: true
#           2:
#             name: "Field 2"
#             value: "Test"
#             inline: true
 
        # Discord | Text
        #  Only needed if 'mode' is set to "TEXT"
        text: "{player} has globally muted staffchat"
 
      # Discord | StaffChat global mute OFF message
      unmuted:
        # Discord | Mode
        #  Options: "EMBED", "TEXT"
        mode: "EMBED"
 
        # Discord | Embed
        #  Only needed if 'mode' is set to "EMBED"
        embed:
          author:
            name: "{player}"
            url: ""
            image: "https://crafatar.com/avatars/{uuid}.png"
          title:
            text: ""
            url: ""
          description: "{player} has globally unmuted staffchat"
          color: "#55FFFF"
          footer:
            text: "UltraStaffChatPro"
            icon: ""
          image: ""
          thumbnail: ""
          fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#           1:
#             name: "Field 1"
#             value: "Test"
#             inline: true
#           2:
#             name: "Field 2"
#             value: "Test"
#             inline: true
 
        # Discord | Text
        #  Only needed if 'mode' is set to "TEXT"
        text: "{player} has globally unmuted staffchat"
 
 
# [ UltraStaffChatPro | StaffList Configuration ]
stafflist:
 
  # StaffList | Format
  #  Placeholders: {count} (Online staff member count), {total} (Total players online)
  format:
 
    # Format | Header
    #  Placeholders: {count}, {total}
    #  To remove all lines, replace with 'header: []'
    header:
      - "&b&lOnline staff members &7({count}):"
 
    # Format | Lines
    #  Everything after `REPEAT:` will be repeated for each player in that group or server.
    #  Proxy placeholders: {server_count}, {server_total}
    #  To remove all lines, replace with 'lines: []'
    lines:
      - "&r "
      - " &r {group_display}"
      - "REPEAT: &r &r &7- {afk}{player} - {playtime_server}"
 
    # Format | Footer
    #  Placeholders: {count}, {total}
    #  To remove all lines, replace with 'footer: []'
    footer:
      - "&r "
 
  # StaffList | No staff members online message
  no-staff: "&cNo staff members are currently online."
 
 
 
# [ UltraStaffChatPro | System Configuration ]
 
# System | Configuration file version
#  Used for making sure this file is up-to-date. - Do not change this!
version: 12
 
 
# - You're done!
# Thank you for purchasing and using UltraStaffChatPro!
# If you have any ideas for UltraStaffChatPro, please suggest them at https://discord.hypera.dev/
```

{% endcode %}


# Common Issues

Guides to resolve common issues that you may encounter while using UltraStaffChatPro.


# Chat Signing

How to resolve issues caused by the introduction of the "Secure Chat" system in Minecraft 1.19.1+.

The [Minecraft 1.19.1](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-19-1/) update introduced the "Secure Chat" system to Minecraft.

[kennytv wrote an interesting and in-depth article on how this feature works, if you wish to learn more.](https://gist.github.com/kennytv/ed783dd244ca0321bbd882c347892874)

This system introduced several new challenges for Minecraft plugins which need to prevent messages from being sent, particular at the proxy level.

When a signed chat packet is cancelled by a plugin on the proxy, it is prevented from reaching the Minecraft server the player is connected to. When the player later sends another signed chat packet that isn't cancelled, it will be received and verified by the Minecraft server. During this verification process, the signature will be invalid due to the message indexes not matching.

### BungeeCord

If you are running BungeeCord and have players connected with **Minecraft 1.19.1+**, you may have players kicked from your backend servers with the following message:

```
Received chat packet with missing or invalid signature.
```

This kick is caused by the server attempting to validate a signed packet with an invalid signature. This will occur if the player has a message cancelled on the proxy, and then sends another message that does not get cancelled.

#### Known workarounds <a href="#known-workarounds" id="known-workarounds"></a>

We recommend trying the following workarounds to resolve this issue.\
If you find any other workarounds, please [contact us](https://discord.hypera.dev/) so that we can share them here!

1. **Disable chat signing&#x20;**<mark style="color:yellow;">**(Not Recommended)**</mark>\
   There are a few plugins you can use to achieve this, however AntiPopup has been tested to work properly. In order for AntiPopup to work, it **must be installed on all of your servers**.<br>

   **This will cause all chat messages to be unsigned, which will prevent player messages from being reported to Mojang.**<br>

   | Marketplace | Resource Page                            |
   | ----------- | ---------------------------------------- |
   | Modrinth    | <https://modrinth.com/plugin/antipopup/> |
2. **Disable the toggle and message prefix features**\
   These features require UltraStaffChatPro cancelling chat messages, which may cause the kick mentioned above when used with signed chat messages.<br>

   If you do not wish to disable chat signing, we recommend disabling these features in the [`config.yml`](/products/ultrastaffchatpro/configuration/main) file:

   * [Staff-chat toggle enabled](https://wiki.hypera.dev/products/ultrastaffchatpro/configuration/main#:~:text=%23%20StaffChat%20%7C%20Toggle,enabled%3A%20true) - Set `enabled: false`
   * [Staff-chat prefix enabled](https://docs-staging.hypera.dev/ultrastaffchatpro/config/main#:~:text=Prefix%20%7C%20Enabled) - Set `enabled: false`

### Velocity <a href="#velocity" id="velocity"></a>

If you are running Velocity and have players connected with **Minecraft 1.19.1+**, you may have players kicked with the following error printed to console:

```
A plugin tried to cancel a signed chat message. This is no longer possible in 1.19.1 and newer.
```

This kick was [implemented by the Velocity team(opens in a new tab)](https://github.com/PaperMC/Velocity/issues/804) to prevent mismatches on the server, instead opting to kick players from the proxy before this can happen.

#### Known workarounds <a href="#known-workarounds-1" id="known-workarounds-1"></a>

We recommend trying the following workarounds to resolve this issue.\
If you find any other workarounds, please [contact us](https://discord.hypera.dev/) so that we can share them here!

1. **Use SignedVelocity** <mark style="color:blue;">**(Recommended)**</mark>\
   SignedVelocity allows plugins to cancel and modify messages/commands from Velocity without synchronisation issues. In order for SignedVelocity to work, it **must be installed on both Velocity and all of your servers**.<br>

   | Marketplace     | Resource Page                                                 |
   | --------------- | ------------------------------------------------------------- |
   | GitHub Releases | <https://github.com/4drian3d/SignedVelocity/releases/latest/> |
   | Modrinth        | <https://modrinth.com/plugin/signedvelocity/>                 |
2. **Disable chat signing with UnSignedVelocity** <mark style="color:yellow;">**(Not Recommended)**</mark>\
   UnSignedVelocity allows plugins to cancel and modify messages/commands by removing the signed information from chat packets sent by players using Minecraft 1.19.1+.<br>

   You will also need a plugin such as [AntiPopup](https://modrinth.com/plugin/antipopup/) installed on all of your servers to prevent players sending unsigned messages from being kicked by the server.<br>

   **This will cause all chat messages to be unsigned, which will prevent player messages from being reported to Mojang.**

   | Marketplace     | Resource Page                                                   |
   | --------------- | --------------------------------------------------------------- |
   | GitHub Releases | <https://github.com/4drian3d/UnSignedVelocity/releases/latest/> |
   | Modrinth        | <https://modrinth.com/plugin/unsignedvelocity/>                 |
3. **Disable the toggle and message prefix features**\
   These features require UltraStaffChatPro cancelling chat messages, which may cause the kick mentioned above when used with signed chat messages.<br>

   If you do not wish to use SignedVelocity or disable chat signing, we recommend disabling these features in the [`config.yml`](/products/ultrastaffchatpro/configuration/main) file:

   * [Staff-chat toggle enabled](https://wiki.hypera.dev/products/ultrastaffchatpro/configuration/main#:~:text=%23%20StaffChat%20%7C%20Toggle,enabled%3A%20true) - Set `enabled: false`
   * [Staff-chat prefix enabled](https://docs-staging.hypera.dev/ultrastaffchatpro/config/main#:~:text=Prefix%20%7C%20Enabled) - Set `enabled: false`

<br>


# No Permission

The `No permission` error message is displayed when the player does not have the required permissions to execute a command, or perform a certain action.

## Common causes <a href="#common-causes" id="common-causes"></a>

### Missing permissions <a href="#missing-permissions" id="missing-permissions"></a>

The most common cause of this error is the player not having the required permissions. Make sure that you have correctly configured permissions for the player.

Please refer to the [Permissions documentation](/products/ultrastaffchat/permissions) for a list of permissions used by UltraStaffChatPro.

### Proxy permissions missing <a href="#proxy-permissions-missing" id="proxy-permissions-missing"></a>

If you are using UltraStaffChatPro on a **Proxy** server, such as BungeeCord or Velocity, you will need a permissions plugin installed and correctly configured on the proxy.

**We highly recommend** [**LuckPerms**](https://luckperms.net/), an easy-to-use, fast and reliable permission plugin that works on Bukkit, Sponge, Fabric, Forge, Nukkit, Velocity and BungeeCord.

**Why?** Server permissions do not apply to the proxy, and therefore do not exist when UltraStaffChatPro performs a permission check. Please also avoid using `/op` on your backend servers, and instead use a proper permissions plugin such as [LuckPerms](https://luckperms.net/).

<br>


# Guides

Useful guides for setting up and installing UltraStaffChatPro on your Minecraft server.


# Installation

How to install and configure UltraStaffChatPro on your Minecraft server.

{% hint style="info" %}
If you are using a proxy such as Velocity or BungeeCord, you only need to install the plugin on your proxy. Installing the plugin on both your proxy and your backend servers may cause issues.
{% endhint %}

## 1. Download the plugin

Start by purchasing and downloading UltraStaffChatPro from an authorised marketplace.

<table><thead><tr><th width="212">Marketplace</th><th>Resource Page</th></tr></thead><tbody><tr><td><strong>SpigotMC</strong></td><td><a href="	https://www.spigotmc.org/resources/80461/">	https://www.spigotmc.org/resources/80461/</a></td></tr></tbody></table>

{% hint style="danger" %}
Make sure to only download UltraStaffChatPro from a **trusted and authorised marketplace**.\
\
**Do not** download plugins from unauthorised or "pirate" websites, as they often **distribute modified or malware-infected** versions of plugins. Using pirated versions of UltraStaffChatPro not only **violates the plugin's Terms of Service,** but also **jeopardises your server's security and stability.**\
\
Always choose legal and authorised sources to support the developers of the plugins you use, and to ensure you receive the original, secure, and supported version of UltraStaffChatPro.\
\
**If you find an unauthorised website where you can download or purchase UltraStaffChatPro, please** [**contact us on Discord**](https://support.hypera.dev/) **or** [**send us an email**](mailto:contact@hypera.dev)**.**
{% endhint %}

## 2. Install the plugin

Next, install UltraStaffChatPro on your server by placing the downloaded `UltraStaffChatPro-(version).jar` file in your server's `/plugins/` directory.

## 3. Restart your server

After installing the plugin, restart your server to load and start UltraStaffChatPro. Upon startup, UltraStaffChatPro will automatically generate its required configuration files.

## 4. Configure the plugin

Once your server has started, you can find UltraStaffChatPro's configuration files located in the `/plugins/UltraStaffChatPro/` (or `/plugins/ultrastaffchatpro/`) directory. You can customise these files to your liking to make UltraStaffChatPro suit your server's requirements and style.

See the [`config.yml`](/products/ultrastaffchatpro/configuration/main) and [`mesages.yml`](/products/ultrastaffchatpro/configuration/messages) file documentation for further information on configuring UltraStaffChatPro.

## 5. Apply configuration changes

Once you have configured UltraStaffChatPro to your liking, restart your server to apply your configuration changes.

You can also reload the plugin using the `/ultrastaffchatpro reload` command, however restarting your server is the recommended way to apply configuration changes.&#x20;

{% hint style="warning" %}
Reloading your server (using **`/reload`**) to load UltraStaffChatPro or reload UltraStaffChatPro's configuration files **is not supported**, and is known to cause issues with servers. Additionally, using plugins such as PlugMan with UltraStaffChatPro **is not supported.**
{% endhint %}

## 6. You're done!

You have successfully installed and configured UltraStaffChatPro on your server. Thank you for purchasing and using UltraStaffChatPro! If you encounter any issues or need any further assistance, please refer to the plugin's documentation or [contact our Support Team](https://support.hypera.dev/).


# Discord Integration

How to configure the UltraStaffChatPro Discord integration on your Minecraft server.

UltraStaffChatPro's Discord integration supports using a [Discord Bot](#discord-bot) or a [Discord Webhook](#discord-webhook).\
There are benefits and restrictions to each integration, however, we recommend the Discord Bot integration as it allows for two-way communication between Discord and your Minecraft server.

## General configuration

You can customise how the `{player}` and `{server}` placeholders are replaced for messages sent from Discord. You can also change the "allowed mentions" for messages sent to Discord to prevent players in Minecraft from using "@everyone" or similar.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml">  # Discord | Display
  display:
 
    # Display | Name
    #  How should Discord users display in-game?
    #  Options: "TAG" (Name#1234), "NAME" (Nickname), "USERNAME" (Username)
<strong>    name: "USERNAME"
</strong> 
    # Display | Server
    #  What should the {server} placeholder be
    #  replaced with for people talking from Discord?
<strong>    server: "Discord"
</strong> 
  # Discord | Allowed Mentions
  #  Options: "ALL" (@everyone, @here, users, roles), "ROLES" (users, roles), "USERS" (users), "NONE"
<strong>  allowed-mentions: "NONE"
</strong></code></pre>

## Discord Bot

The Discord Bot integration allows two-way communication between staff members on your Minecraft server and in your Discord server. To set up the Discord Bot integration, you must create a Discord application and provide UltraStaffChatPro with the Bot token for your application.

### 1. Create Discord application

Start by creating a Discord application in the Discord Developer Portal. This application will be used by the Discord integration to connect to Discord. You can skip this step if you have already created an application you wish to use.

1. Open the [Discord Developer Portal](https://discord.com/developers/applications/) and log in to your Discord account.
2. Click on the "New Application" button at the top-right of the page.
3. Enter a name for your application and click "Create".

You should see a page similar to this image:

<figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FRULokLZQdJUaOOJpwoPm%2Fdiscord.com_developers_applications_1266640890039107605_information.png?alt=media&amp;token=a353ff77-b2ee-4189-85e3-cdd85eb6fac2" alt="Discord Application page for example &#x22;UltraStaffChatPro&#x22; app"><figcaption><p>Discord Application page for example "UltraStaffChatPro" app</p></figcaption></figure>

### 2. Reset bot token

{% hint style="danger" %}
**Do not share the bot token with anyone, including Hypera staff members.**\
Anyone with access to the bot token can authenticate with Discord as the bot, granting them access to any Discord server the bot is in.\
\
**Hypera staff members will never ask you for your bot token.**\
When providing your `config.yml` file in support tickets, we highly recommend redacting or removing the token.
{% endhint %}

After creating the Discord application, reset the Bot's token by following these steps:

1. Navigate to the application page in the [Discord Developer Portal](https://discord.com/developers/applications/).
2. Click on "Bot"  in the sidebar to view the bot settings.
3. Click "Reset Token" and then "Confirm" in the modal. You may have to re-authenticate with Discord to reset the token.
4. Click the "Copy" button to copy the generated token, then save it securely for later. The token can only be viewed once after being created. If you forget or lose access to the token, you must generate a new one.

<figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FwV2SB1LAhwHuK8jovM9J%2Fdiscord-example-token-reset.png?alt=media&amp;token=2bef23d1-d7d7-45ef-9118-a54fb65e0841" alt="Discord Bot page after resetting the token"><figcaption><p>Discord Bot page after resetting the token</p></figcaption></figure>

#### What is a token?

A Discord token is similar to a password your Bot uses to authenticate with the Discord API and gateway. This allows the bot access to any Discord servers the bot is in, allowing messages to be sent and received by the bot.

### 3. Privileged Gateway Intents

{% hint style="warning" %}
**This step is required for the Discord Bot integration to work correctly.** Without the message content intent, the Discord bot will be unable to read the contents of messages sent on Discord, resulting in blank messages appearing in the staff-chat channels.
{% endhint %}

Once you have created a Discord application and reset the bot token, scroll down on the "Bot" page for your Discord application and enable the "Message Content Intent".\
\
This privileged gateway intent allows your Discord bot to receive the content of messages sent on Discord. Without this intent, the Discord bot will see empty messages.

<figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FEIuRXO0Sys2TN2PEPWmO%2Fimage.png?alt=media&amp;token=8d6a59d3-4847-408d-9bfa-1766010f6b16" alt="Discord Bot message content intent enabled"><figcaption><p>Discord Bot message content intent enabled</p></figcaption></figure>

Click "Save Changes" in the pop-up to save this change.

### 4. Add the Discord bot to your server

After you have created the Discord application, the Discord bot will not be any servers yet. You must add the Discord bot to your server in order for the Discord Bot integration to work.

{% hint style="info" %}
You must have the "Manage Server" permission in the Discord server(s) to which you wish to add the bot.
{% endhint %}

Create an invite link for your Discord bot by following these steps:

1. Navigate to the application page in the [Discord Developer Portal](https://discord.com/developers/applications/).
2. Click "OAuth2" in the sidebar and scroll down to the "OAuth2 URL Generator".
3. Select the `bot` scope under "Scopes".<br>

   <figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FHS3SXpag6jqbvdHWY35m%2Fimage.png?alt=media&amp;token=cbf8a45c-3961-4628-9a0a-55ad709ea86e" alt="OAuth2 URL Generator with &#x22;bot&#x22; scope selected"><figcaption><p>OAuth2 URL Generator with "bot" scope selected</p></figcaption></figure>
4. Configure the bot permissions to your needs. It is recommended to restrict the permissions as much as possible, and only give the Discord bot permission to send and receive messages in the channel(s) for which you wish to use the Discord integration.<br>

   <figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FO8UVVz0F2mXgAYEiCyEe%2Fimage.png?alt=media&amp;token=e7165f6f-2b87-4d5f-acc5-f6c0af9c7a66" alt="OAuth2 URL Generator with &#x22;bot&#x22; scope selected"><figcaption><p>OAuth2 URL Generator with "Send Messages", "Embed Links" and "Read Message History" permissions selected</p></figcaption></figure>
5. Select "Guild Install" under "Integration type".
6. Copy the generated URL and open it in your browser.<br>

   <figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FmgzVNj927cr262uhUm2J%2Fimage.png?alt=media&amp;token=7b84b9a4-76bb-4b15-95ee-37526b822d4c" alt="OAuth2 URL Generator with Generated URL and mouse clicking &#x22;Copy&#x22; button"><figcaption><p>OAuth2 URL Generator with Generated URL and mouse clicking "Copy" button</p></figcaption></figure>
7. Select the server you wish to add the Discord bot to and click "Authorise".
8. Once you have clicked "Authorise", you should see the bot in your server's member list.

<figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FixbX1N1gsc5Bkx048D9w%2Fdiscord-example-invite-authorise.png?alt=media&amp;token=1dc66813-25a2-4bfc-b3e9-9f29e0b9a5e2" alt="Discord application authorisation page"><figcaption><p>Discord application authorisation page</p></figcaption></figure>

### 5. Enable and configure the Discord Bot integration

Once you have created a Discord application, reset the bot token and added the Discord bot to your server, you are ready to configure UltraStaffChatPro to use the Discord bot!\
\
UltraStaffChatPro must also be provided with the ID of your Discord server and channel(s) from which you would like to send and receive messages. If you have Discord Developer Mode enabled, you can do this by right-clicking the server or channel and clicking "Copy ID".

<details>

<summary>Enable Discord Developer Mode</summary>

If you do not already have Discord's Developer Mode enabled:

1. Open the Discord app and click on the Settings button in the bottom-left of the screen.
2. Next, click on "Advanced" in the left sidebar in the Discord settings page.
3. Once you are on the Advanced page, enable the "Developer Mode" toggle to enable developer mode.

</details>

1. Start by enabling the Discord integration and setting the Discord integration mode to "BOT" in your `config.yml` file.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml"># [ UltraStaffChatPro | Discord Configuration ]
discord:
 
  # Discord | Enabled
<strong>  enabled: true # &#x3C;-- Make sure this is set to 'true'
</strong> 
  # Discord | Mode
  #  Options: "BOT", "WEBHOOK"
<strong>  mode: "BOT" # &#x3C;-- Make sure this is set to "BOT"
</strong></code></pre>

2. Once you have enabled the Discord bot integration, you must provide the token you generated in [step 2](#id-2.-reset-bot-token). If you have forgotten or lost your bot's token, you must reset the token again.

<pre class="language-yaml" data-title="config.yml" data-overflow="wrap"><code class="lang-yaml">  # Discord | Bot Configuration
  #  Only used if 'mode' is set to "BOT"
  bot:
 
    # Bot | Token
<strong>    token: "XXXX" # &#x3C;-- Replace with your Discord bot token
</strong></code></pre>

3. Once you have configured the bot token, configure the Discord server and channel messages in the staff-chat should be sent to, and received from.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml">    # Bot | Discord guild ID
<strong>    guild: "XXXX" # &#x3C;-- Replace with the ID of your Discord server
</strong> 
    # Bot | Discord channel ID
<strong>    channel: "XXXX" # &#x3C;-- Replace with the ID of the Discord channel for staff-chat
</strong></code></pre>

4. You can also customise your bot's status and activity.

{% code title="config.yml" %}

```yaml
    # Bot | Status
    #  Options: "ONLINE", "IDLE", "DO_NOT_DISTURB", "INVISIBLE"
    status: "ONLINE"
 
    # Bot | Activity
    activity:
 
      # Activity | Enabled
      enabled: true
 
      # Activity | Type
      #  Options: "DEFAULT" (Playing), "WATCHING", "LISTENING"
      type: "WATCHING"
 
      # Activity | Message
      #  Placeholders: {online} (Total online players), {count} (Total online staff / People with the StaffList display permission)
      message: "{online} players on play.example.net"
```

{% endcode %}

5. You can customise each message sent to Discord in your `messages.yml` file. For each message sent to Discord, there is a separate message configuration where you can fine-tune each message to your liking:

{% code title="messages.yml" %}

```yaml
    # Discord | StaffChat message format
    message:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{message}"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true

      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      text: "**{player}**: {message}"
```

{% endcode %}

5. If you use UltraStaffChatPro's "multi-channel" feature, you can enable the Discord integration per channel, and configure each channel to use a different Discord Webhook URL. Multi-channels are configured in the `config.yml` file.<br>

   <pre class="language-yaml" data-title="config.yml"><code class="lang-yaml">      # MultiChannel | Discord
         #  This is only used if the Discord integration is enabled.
         discord:
    
           # Discord | Enabled
           #  Should the Discord integration be used for this channel?
   <strong>        enabled: true # &#x3C;-- Set to 'true' to enable for this channel
   </strong> 
           # Discord | Guild ID (Server ID)
   <strong>        guild: "XXXXXXXXXXXXXXXXXX" # &#x3C;-- Set to the Discord server ID for this channel
   </strong> 
           # Discord | Channel ID
   <strong>        channel: "XXXXXXXXXXXXXXXXXX" # &#x3C;-- Set to the Discord channel ID for this channel
   </strong></code></pre>

***

## Discord Webhook

{% hint style="warning" %}
Discord Webhooks only allow one-way communication, by sending messages from Minecraft to Discord. Webhooks are unable to receive messages sent on Discord.\
\
**If you want two-way communication, you must use the** [**Discord Bot integration**](#discord-bot)**.**
{% endhint %}

The Discord Webhook integration allows one-way communication between staff members on your Minecraft and Discord server. **Messages can be sent to Discord from Minecraft, but not sent to Minecraft from Discord.**

### 1. Create Discord Webhook

{% hint style="danger" %}
**Do not share the Discord Webhook URL with anyone, including Hypera staff members.** Anyone with access to the Discord Webhook URL can send messages to the channel.\
\
When providing your `config.yml` or `messages.yml` file in support tickets, we highly recommend redacting or removing all Discord Webhook URLs.
{% endhint %}

Start by creating a Discord Webhook for your staff-chat.

1. In the Discord app, locate the channel that you want messages to, then click the "Edit Channel" gear icon.
2. Once you have clicked "Edit Channel", click "Integrations" in the sidebar.
3. On the "Integrations" page, click the "Create Webhook" button to create a new webhook.<br>

   <figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2F7xLvzN8TEk8xncspNiat%2Fimage.png?alt=media&amp;token=9e6279d1-ed96-4321-a81e-85f30e587b7e" alt="Discord channel integration settings"><figcaption><p>Discord channel integration settings</p></figcaption></figure>
4. Click on the created webhook, and click "Copy Webhook URL" to copy the URL.<br>

   <figure><img src="https://3608931769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhuReg1foT0a6aihbvwmH%2Fuploads%2FvAbARst3ZBUbKPI3Qh6z%2Fimage.png?alt=media&amp;token=3e5639a9-f92f-489f-9470-a1843ac14ae1" alt="Created Discord webhook example"><figcaption><p>Created Discord webhook example</p></figcaption></figure>
5. Optionally change the name or avatar of the created webhook. This will be overridden by the settings in UltraStaffChatPro, however it is recommended to label the webhook for easy identification later.

### 2. Enable and configure the Discord Webhook integration

Once you have created a Discord webhook, you can configure UltraStaffChatPro to use the Discord webhook integration!

1. Start by enabling the Discord integration and setting the Discord integration mode to `WEBHOOK` in your `config.yml` file.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml"># [ UltraStaffChatPro | Discord Configuration ]
discord:
 
  # Discord | Enabled
<strong>  enabled: true # &#x3C;-- Make sure this is set to 'true'
</strong> 
  # Discord | Mode
  #  Options: "BOT", "WEBHOOK"
<strong>  mode: "WEBHOOK" # &#x3C;-- Make sure this is set to "WEBHOOK"
</strong></code></pre>

2. Once you have enabled the Discord webhook integration, you must provide a Discord Webhook URL for your staff-chat channel. This webhook URL will be used only for messages sent in the staff-chat, and not multi-channel (see step 5).

<pre class="language-yaml" data-title="config.yml" data-overflow="wrap"><code class="lang-yaml">    # Webhook | URL
<strong>    url: "https://discord.com/api/webhooks/XXXX/XXXX" # &#x3C;-- Replace with the Discord Webhook URL for your staff-chat channel
</strong></code></pre>

3. You can customise the avatar and username for the Discord Webhook in the configuration file, and use placeholders to change the avatar and username for each player.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml">  # Discord | Webhook Configuration
  #  Only needed if 'mode' is set to "WEBHOOK"
  #  Note: Two-way chat requires the use of a bot.
  webhook:
 
    # Webhook | Avatar
    #  Placeholders: {player}, {uuid}
<strong>    avatar: "https://crafatar.com/avatars/{uuid}.png"
</strong> 
    # Webhook | Username
<strong>    username: "{player}"
</strong></code></pre>

4. You can customise each message sent to Discord in your `messages.yml` file. For each message sent to Discord, there is a separate message configuration where you can fine-tune each message to your liking:

{% code title="messages.yml" %}

```yaml
    # Discord | StaffChat message format
    message:
      # Discord | Mode
      #  Options: "EMBED", "TEXT"
      mode: "EMBED"
 
      # Discord | Embed
      #  Only needed if 'mode' is set to "EMBED"
      embed:
        author:
          name: "{player}"
          url: ""
          image: "https://crafatar.com/avatars/{uuid}.png"
        title:
          text: ""
          url: ""
        description: "{message}"
        color: "#55FFFF"
        footer:
          text: "UltraStaffChatPro"
          icon: ""
        image: ""
        thumbnail: ""
        fields: {} # To use fields, remove '{}' here and uncomment the following lines.
#          1:
#            name: "Field 1"
#            value: "Test"
#            inline: true
#          2:
#            name: "Field 2"
#            value: "Test"
#            inline: true

      # Discord | Text
      #  Only needed if 'mode' is set to "TEXT"
      text: "**{player}**: {message}"
```

{% endcode %}

5. If you use UltraStaffChatPro's "multi-channel" feature, you can enable the Discord integration per channel, and configure each channel to use a different Discord Webhook URL. Multi-channels are configured in the `config.yml` file.

<pre class="language-yaml" data-title="config.yml"><code class="lang-yaml">      # MultiChannel | Discord
      #  This is only used if the Discord integration is enabled.
      discord:
 
        # Discord | Enabled
        #  Should the Discord integration be used for this channel?
<strong>        enabled: true # &#x3C;-- Set to 'true' to enable for this channel
</strong> 
        # Discord | Guild ID (Server ID)
        guild: "XXXXXXXXXXXXXXXXXX" # -- Ignored when using Webhook.
 
        # Discord | Channel ID
        channel: "XXXXXXXXXXXXXXXXXX" # -- Ignored when using Webhook.
 
        # Discord | Webhook configuration
        #  This is only used if the Discord integration is configured to use a webhook.
        webhook:
 
          # Webhook | Avatar
          #  Placeholders: {player}, {uuid}
<strong>          avatar: "https://crafatar.com/avatars/{uuid}.png"
</strong> 
          # Webhook | Username
<strong>          username: "{player}"
</strong> 
          # Webhook | URL
<strong>          url: "https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
</strong></code></pre>


# Developer API

## Getting started

{% hint style="info" %}
The current API version is: `2.0.0`
{% endhint %}

### Project Dependency

{% tabs %}
{% tab title="Maven" %}

<pre class="language-xml" data-title="pom.xml"><code class="lang-xml">&#x3C;repositories>
    &#x3C;repository>
    &#x3C;id>hypera-releases&#x3C;/id>
    &#x3C;url>https://repo.hypera.dev/releases/&#x3C;/url>
  &#x3C;/repository>
&#x3C;/repositories>

&#x3C;dependencies>
    &#x3C;dependency>
    &#x3C;groupId>dev.hypera&#x3C;/groupId>
    &#x3C;artifactId>UltraStaffChatPro-API&#x3C;/artifactId>
    &#x3C;version><a data-footnote-ref href="#user-content-fn-1">(version)</a>&#x3C;/version>
  &#x3C;/dependency>
&#x3C;/dependencies>
</code></pre>

{% endtab %}

{% tab title="Gradle (Kotlin)" %}

<pre class="language-kts" data-title="build.gradle.kts"><code class="lang-kts">repositories {
    maven("https://repo.hypera.dev/releases/")
}

dependencies {
    compileOnly("dev.hypera:UltraStaffChatPro-API:<a data-footnote-ref href="#user-content-fn-1">(version)</a>")
}
</code></pre>

{% endtab %}

{% tab title="Gradle (Groovy)" %}

<pre class="language-groovy" data-title="build.gradle"><code class="lang-groovy">repositories {
    maven {
        url 'https://repo.hypera.dev/releases/'
    }
}

dependencies {
    compileOnly 'dev.hypera:UltraStaffChatPro-API:<a data-footnote-ref href="#user-content-fn-1">(version)</a>'
}
</code></pre>

{% endtab %}
{% endtabs %}

### Plugin Dependency

In order to use UltraStaffChatPro's API, you must declare UltraStaffChatPro as a dependency of your plugin. This causes UltraStaffChatPro to be loaded before your plugin, making it possible for your plugin to use UltraStaffChatPro's API.

{% hint style="danger" %}
If you don't declare UltraStaffChatPro as a dependency of your plugin, errors are likely to occur when you attempt to use the API.
{% endhint %}

{% tabs %}
{% tab title="Paper" %}
Declare `UltraStaffChatPro` as a dependency in your `paper-plugin.yml` file.\
[PaperMC Documentation](https://docs.papermc.io/paper/dev/getting-started/paper-plugins#dependency-declaration)

{% code title="paper-plugin.yml" %}

```yaml
dependencies:
  server:
    UltraStaffChatPro:
      load: BEFORE
      required: true # Set to `false` if your plugin does not require UltraStaffChatPro.
      join-classpath: true
```

{% endcode %}
{% endtab %}

{% tab title="Bukkit" %}
Declare `UltraStaffChatPro` as a dependency in your `plugin.yml` file.

{% code title="plugin.yml" %}

```yaml
depend: ["UltraStaffChatPro"]
 
# If your plugin does not require UltraStaffChatPro,
# use 'softdepend' instead of 'depend':
softdepend: ["UltraStaffChatPro"]
```

{% endcode %}
{% endtab %}

{% tab title="Velocity" %}
Declare `ultrastaffchatpro` as a dependency in your `@Plugin` annotation.\
[Velocity documentation](https://docs.papermc.io/velocity/dev/dependency-management)

```java
@Plugin(
  id = "myplugin",
  name = "My Plugin",
  version = "0.1.0",
  dependencies = {
    // Add `optional = true` if your plugin does not require UltraStaffChatPro.
    @Dependency(id = "ultrastaffchatpro")
  }
)
```

{% endtab %}

{% tab title="BungeeCord" %}
Declare `UltraStaffChatPro` as a dependency in your `bungee.yml` (or `plugin.yml`) file.

{% code title="bungee.yml" %}

```yaml
depends: ["UltraStaffChatPro"]
 
# If your plugin does not require UltraStaffChatPro, use 'softDepends' instead of 'depends':
softDepends: ["UltraStaffChatPro"]
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Examples

{% code title="MyPlugin.java" %}

```java
public final class MyPlugin extends JavaPlugin {
 
    @Override
    public void onEnable() {
        // Register your plugin with UltraStaffChatPro's API.
        APIPlugin plugin = UltraStaffChatProAPI.getInstance()
            .registerPlugin("MyPlugin", "0.1.0-SNAPSHOT", "Me, Myself and I");
 
        // Register an event listener
        UltraStaffChatProAPI.getInstance().registerListener(plugin, new MyListener());
    }
 
}
```

{% endcode %}

{% code title="MyListener.java" %}

```java
public final class MyListener implements UltraStaffChatProListener {
 
    @USCPEventHandler
    public void onMessage(UltraStaffChatProMessageEvent event) {
        // Do something with the message...
    }
 
    @USCPEventHandler
	public void onJoinMessage(UltraStaffChatProJoinMessageEvent event) {
		if (event.getUser().getName().equalsIgnoreCase("Steve")) {
			event.setCancelled(true);
		}
	}
 
}
```

{% endcode %}

```java
// Send a message
UltraStaffChatProAPI.getInstance().getMessageManager()
    .sendMessage(MessageBuilder.create(
        UserBuilder.create("Steve", UUID.randomUUID()).build(),
        "Hi, my name is Steve."
    ).build());
 
// Toggle global mute in StaffChat
UltraStaffChatProAPI.getInstance().getStateManager().toggleGlobalMute(null);
```

[^1]: Replace with the version you wish to use.


# Legal


# Terms of Service

Definitions:

* "Plugin" refers to the Java Software distributed under the name "UltraStaffChatPro" and can be found on SpigotMC at <https://spigotmc.org/resources/80461>
* "Binary" refers to the compiled version of the Plugin.
* "Author" refers to the author of this software, Joshua Sing.
* "You" refers to the person(s) that purchased, download or used the Plugin.
* "SpigotMC" refers to the website [https://www.spigotmc.org/](https://www.spigotmc.org).

By purchasing, download or using the Plugin, you accept and agree to the following Terms of Service.

* Do **not** decompile the Plugin or Binary.
* Do **not** redistribute the Plugin or Binary This includes sharing with anyone privately.
* Do **not** claim the Plugin as your own.
* Do **not** modify the Plugin or Binary.
* Do **not** charge-back your purchase.
* Do **not** attempt to reverse engineer the Plugin or Binary.
* Do **not** create or distribute anything that circumvents reverse engineering the Plugin or Binary.

Violating the above Terms of Service may result in your access to the Plugin being revoked.

The Author reserves the right to:

* Change the Terms of Service at any time and without notice, and you agree to comply and follow the latest version.
* Log server information, including but not limited to; IP addresses, SpigotMC user ids, SpigotMC download "nonce"s, and plugin versions.

We may at our sole discretion deny you support for the Plugin, with or without notice for any reason or no reason at all. We do not tolerate disrespect towards our support team members, and being disrespectful or unreasonable will result in no further support being provided.

THE PLUGIN IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE PLUGIN OR THE USE OR OTHER DEALINGS IN THE PLUGIN.


# Privacy Policy

By purchasing, download or using the Plugin, you agree to the following Privacy Policy.

1. **Metrics**

   UltraStaffChatPro uses [https://bstats.org/](https://bstats.org) to collect metrics, such as the amount of servers using the plugin. You can view bStats's Privacy Policy [here](https://bstats.org/privacy-policy). - You can opt-out of this in `/plugins/bstats/config.yml`
2. **External Services**

   &#x20;\- **Maven**\
   &#x20;   UltraStaffChatPro downloads dependencies from several third-party maven repositories.\
   &#x20;\- **SpigotMC**\
   &#x20;    UltraStaffChatPro uses SpigotMC's API to check for updates.\
   &#x20;   You can view SpigotMC's Privacy Policy [here](https://www.spigotmc.org/wiki/spigot-privacy/).
3. **Data Collection**

   UltraStaffChatPro contacts Hypera's API endpoints to validate that the copy of the plugin running is legitimate. This API stores information, including, but not limited to; IP addresses, SpigotMC user ids, SpigotMC download "nonce"s, and plugin versions. Information collected by this API will not be released to anyone unless required by law, and this data is only accessible by Hypera developers.


# UltraStaffChat

A fully customisable staff communication plugin for BungeeCord!

UltraStaffChat supports BungeeCord only, and is one of the most popular and most customisable staff communication (or staff-chat) plugins for BungeeCord.\
\
UltraStaffChat is also [**open source**](https://github.com/HyperaDev/UltraStaffChat) and licensed under the [**GNU General Public License v3**](https://github.com/HyperaDev/UltraStaffChat/blob/main/LICENSE).

We also provide quick and helpful support for anyone needing assistance with the plugin. [Contact us or create a ticket on Discord to receive support.](https://support.hypera.dev/)

{% hint style="info" %}
**Need more features?** [**Check out UltraStaffChatPro**](/products/ultrastaffchatpro), the most advanced and feature packed staff communication plugin for Spigot, Paper, BungeeCord and Velocity.
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Features →</strong></td><td><a href="/products/ultrastaffchat/features">Features</a></td></tr><tr><td><strong>Permissions →</strong></td><td><a href="/products/ultrastaffchat/permissions">Permissions</a></td></tr><tr><td><strong>Installation →</strong></td><td><a href="/products/ultrastaffchat/installation">Installation</a></td></tr><tr><td><strong>Configuration →</strong></td><td><a href="/products/ultrastaffchat/configuration">Configuration</a></td></tr><tr><td><strong>Support →</strong></td><td><a href="https://support.hypera.dev/">https://support.hypera.dev/</a></td></tr></tbody></table>

## Marketplaces

Marketplaces where you can download UltraStaffChat BungeeCord. These are the places where we officially distribute UltraStaffChat.

<table><thead><tr><th width="220">Marketplace</th><th>Resource Page</th></tr></thead><tbody><tr><td>Modrinth</td><td><a href="https://modrinth.com/plugin/ultrastaffchat/">https://modrinth.com/plugin/ultrastaffchat/</a></td></tr><tr><td>GitHub Releases</td><td><a href="	https://github.com/HyperaDev/UltraStaffChat/releases/latest/">https://github.com/HyperaDev/UltraStaffChat/releases/latest/</a></td></tr><tr><td>BuiltByBit</td><td><a href="	https://builtbybit.com/resources/30028/">https://builtbybit.com/resources/30028/</a></td></tr><tr><td>SpigotMC</td><td><a href="	https://www.spigotmc.org/resources/68956/">https://www.spigotmc.org/resources/68956/</a></td></tr></tbody></table>

{% hint style="danger" %}
We highly advise against downloading UltraStaffChat from websites not listed here. Other websites may be distributing modified versions of UltraStaffChat, or versions that have possibly been altered in malicious ways.\
\
If you are unsure about a marketplace being official, please feel free to [contact us on Discord ](https://support.hypera.dev/)or [send us an email](mailto:contact@hypera.dev).
{% endhint %}


# Features

See all of the features included in UltraStaffChat.

{% hint style="info" %}
**Need more features?** [**Check out UltraStaffChatPro**](/products/ultrastaffchatpro), the most advanced and feature packed staff communication plugin for Spigot, Paper, BungeeCord and Velocity.
{% endhint %}

* **Highly customisable** - You can customise almost everything about the plugin, including most of the functionality and messages. RGB in messages is also supported (`&#aabbcc`, Minecraft 1.16+).

* **Send messages to Discord** - Setup a Discord webhook to send all staff-chat messages to Discord from Minecraft. *Two-way communication with a webhook is not possible.* [***UltraStaffChatPro supports the use of a Discord bot, making two-way communication possible.***](/products/ultrastaffchatpro/features)

* **BungeeCord support** - Install and use UltraStaffChat on your BungeeCord proxy, with no further setup required. Easy to install and configure, making it easy to setup private communication between your staff members in a matter of minutes.

* **Toggle channels** - Toggle a channel to send all of your chat messages to the channel until you untoggle the channel. Run `/sctoggle` to toggle the default staff-chat channel, all of your regular chat messages will be sent to staff-chat until you run `/sctoggle` again.

* **Mute staff-chat** - Temporarily disable receiving staff-chat messages, making it easy to hide all private messages from your staff members until you unmute staff-chat. Run `/scmute` to stop receiving messages sent in staff-chat. When you are ready, run `/scmute` again to start receiving staff-chat messages again. Useful for people who often record videos on their server and don't want to display the private messages of their staff team.

* **Basic Staff List** - Display your online staff members on a basic easy-to-read list so that your players can easily find staff members to report issues to. ***Need to hide vanished staff members, display staff ranks or change the layout?*** [***Check out UltraStaffChatPro.***](/products/ultrastaffchatpro/features)

* **Event Notifications** - Send notifications when staff members connect, switch server, or disconnect. Allows all staff members to keep track of other staff members online, improving communication between members.

* **Enable or disable features** - Disable any features that you don't need, so they don't get in the way of managing your server.

* **Global Mute** - Temporarily prevent any messages from being sent to staff-chat by running `/mutesc`, allowing you to make important announcements or prevent spam.


# Installation

A guide to installing UltraStaffChat on your Minecraft server.

{% hint style="warning" %}
**UltraStaffChat only supports BungeeCord.** Attempting to install UltraStaffChat on Spigot, Paper, Velocity or any other server platform will not work and will result in errors occuring during startup.\
\
Additionally, using UltraStaffChat with any resource that loads BungeeCord plugins on Velocity **is not supported, and is known to cause errors.** You will not receive support when attempting to use UltraStaffChat on Velocity.\
\
**Need support for Spigot, Paper, Velocity and more?** [**Check out UltraStaffChatPro**](/products/ultrastaffchatpro)**.**
{% endhint %}

## 1. Download the plugin

Start by downloading UltraStaffChat from an official and trusted marketplace.

<table><thead><tr><th width="240">Marketplace</th><th>Resource Page</th></tr></thead><tbody><tr><td><strong>Modrinth</strong> (recommended)</td><td><a href="https://modrinth.com/plugin/ultrastaffchat/">https://modrinth.com/plugin/ultrastaffchat/</a></td></tr><tr><td><strong>GitHub Releases</strong></td><td><a href="	https://github.com/HyperaDev/UltraStaffChat/releases/latest/">https://github.com/HyperaDev/UltraStaffChat/releases/latest/</a></td></tr><tr><td><strong>BuiltByBit</strong></td><td><a href="	https://builtbybit.com/resources/30028/">https://builtbybit.com/resources/30028/</a></td></tr><tr><td><strong>SpigotMC</strong></td><td><a href="	https://www.spigotmc.org/resources/68956/">https://www.spigotmc.org/resources/68956/</a></td></tr></tbody></table>

{% hint style="danger" %}
We highly advise against downloading UltraStaffChat from websites not listed here. Other websites may be distributing modified versions of UltraStaffChat, or versions that have possibly been altered in malicious ways.\
\
If you are unsure about a marketplace being official, please feel free to [contact us on Discord ](https://support.hypera.dev/)or [send us an email](mailto:contact@hypera.dev).
{% endhint %}

## 2. Install the plugin

Next, install UltraStaffChat on your BungeeCord server by placing the downloaded `UltraStaffChat-(version).jar` file in your BungeeCord server's `/plugins/` directory.

## 3. Restart your BungeeCord server

After installing the plugin, restart your BungeeCord server to load and start UltraStaffChat. Upon startup, UltraStaffChat will automatically generate its required configuration file.

## 4. Configure the plugin

Once your server has started, you can find UltraStaffChat's configuration file located at `/plugins/UltraStaffChat/config.yml`. You can customise this file to make UltraStaffChat suit your server's requirements and style.

## 5. Apply configuration changes

Once you have configured UltraStaffChat, restart your server to apply your configuration changes.

## 6. You're done!

You have successfully installed and configured UltraStaffChat on your server.\
Thank you for using UltraStaffChat. If you encounter any issues or need further assistance, please refer to the plugin's documentation or [contact us on Discord](https://discord.hypera.dev/).


# Permissions

UltraStaffChat's default permissions.

## Command Permissions

| Command                  | Permission              | Description                                   |
| ------------------------ | ----------------------- | --------------------------------------------- |
| `/staffchat <message>`   | `staffchat.talk`        | Send message in staff-chat.                   |
| `/sctoggle [on\|off]`    | `staffchat.toggle`      | Toggle sending chat messages to staff-chat.   |
| `/scmute [on\|off]`      | `staffchat.mute`        | Toggle receiving messages sent in staff-chat. |
| `/mutesc [on\|off]`      | `staffchat.globalmute`  | Toggle global mute for staff-chat.            |
| `/scafk`                 | `staffchat.afk`         | Toggle your AFK status.                       |
| `/stafflist`             | `staffchat.list`        | Display the staff list.                       |
| `/ultrastaffchat reload` | `ultrastaffchat.reload` | Reload UltraStaffChat's configuration files.  |
| `/ultrastaffchat debug`  | `ultrastaffchat.debug`  | View useful debugging information.            |

Debugging information will likely be requested if you contact us for support.\
`<>` = required, `[]` = optional

## Event Permissions

<table data-full-width="false"><thead><tr><th width="148">Event</th><th width="325">Permission</th><th>Description</th></tr></thead><tbody><tr><td><strong>Chat</strong></td><td><code>staffchat.read</code></td><td>Receive messages sent in the staff-chat.</td></tr><tr><td><strong>Join</strong></td><td><code>staffchat.join</code></td><td>Send and receive a notification when a player with this permission connects to the server.</td></tr><tr><td><strong>Switch</strong></td><td><code>staffchat.switch</code></td><td>Send a receive a notification when the player with this permission switches server.</td></tr><tr><td><strong>Leave</strong></td><td><code>staffchat.leave</code></td><td>Send a notification when the player disconnects from the server</td></tr><tr><td><strong>AFK</strong></td><td><code>staffchat.afk</code></td><td>Receive notifications for when a player marks themselves as AFK using <code>/scafk</code>.</td></tr><tr><td><strong>Update</strong></td><td><code>ultrastaffchat.update</code></td><td>Receive notification when an update for UltraStaffChat is available.</td></tr></tbody></table>

## Other Permissions

<table data-full-width="false"><thead><tr><th width="244">Description</th><th>Permission</th><th data-hidden></th></tr></thead><tbody><tr><td>Bypass global mute</td><td><code>staffchat.mutebypass</code></td><td></td></tr><tr><td>Display on Staff List</td><td><code>staffchat.staff</code></td><td></td></tr></tbody></table>


# Configuration

UltraStaffChat's configuration file

## Default configuration file

{% code title="config.yml" %}

```yaml
#     __  ______             _____ __        ________________          __
#    / / / / / /__________ _/ ___// /_____ _/ __/ __/ ____/ /_  ____ _/ /_
#   / / / / / __/ ___/ __ `/\__ \/ __/ __ `/ /_/ /_/ /   / __ \/ __ `/ __/
#  / /_/ / / /_/ /  / /_/ /___/ / /_/ /_/ / __/ __/ /___/ / / / /_/ / /_
#  \____/_/\__/_/   \__,_//____/\__/\__,_/_/ /_/  \____/_/ /_/\__,_/\__/
#
#  UltraStaffChat v5.2.0  -  Main configuration file (config.yml)
#  Copyright (C) 2021-2023 The UltraStaffChat Authors (https://github.com/HyperaDev/UltraStaffChat/blob/main/AUTHORS)
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
#  Helpful Links:
#   Wiki         |   https://wiki.hypera.dev/ultrastaffchat/
#   Support      |   https://support.hypera.dev/
#   Source Code  |   https://github.com/HyperaDev/UltraStaffChat
#
#  Thank you for using UltraStaffChat!
#  If you have any questions or problems, please contact us:
#    https://support.hypera.dev/
#
#  If you wish to support our work, and receive even more features at the same time,
#  please consider taking the time to look at UltraStaffChatPro:
#    https://www.spigotmc.org/resources/80461/
#    - Joshua Sing (@joshuasing)
#

# [ UltraStaffChat | General Configuration ]

# General | No Permission Message
no-permission: "&cNo Permission."

# General | In-game Only Message
ingame-only: "&cThis command can only be used in-game."


# [ UltraStaffChat | Discord Configuration ]

# Discord | Enabled
#  Should we send messages to Discord?
discord-enabled: false

# Discord | Webhook URL
discord-webhook: "https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# Discord | Webhook Username
#  What name do you want the webhook to use?
discord-username: "UltraStaffChat"

# Discord | Webhook Image
#  What image do you want the webhook to use?
discord-image: "https://cdn.discordapp.com/icons/639666139747581955/fa3ffcc73fd3a47054fc575736c812f6.png"

# Discord | Embed
#  Should we use embeds?
discord-embed: true

# Discord | StaffChat Format
#  - Placeholders: Player - {player}, Server - {server}, Message - {message}
discord-format:
  text: "[StaffChat] {server} - **{player}**: {message}" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "" # Embed Title
    title-url: "" # Enbed Title URL
    description: "**{player}**: {message}" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "{player}"
    #    value: "{message}"
    #    inline: true
    #  2:
    #    name: "Server"
    #    value: "{server}"
    #    inline: true
    #  3:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false

# Discord | Staff Join Messages
#  Should Staff Join messages be sent to Discord?
discord-join-messages: true

# Discord | Join Format
#  - Placeholders: Player - {player}, Server - {server}
discord-join-format:
  text: "**{player}** connected to **{server}**" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "{player}" # Embed Title
    title-url: "" # Enbed Title URL
    description: "** + {server} **" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false

# Discord | Staff Leave Messages
#  Should Staff Leave messages be sent to Discord?
discord-leave-messages: true

# Discord | Leave Format
#  - Placeholders: Player - {player}, Server - {server}
discord-leave-format:
  text: "**{player}** disconnected from **{server}**" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "{player}" # Embed Title
    title-url: "" # Enbed Title URL
    description: "** - {server} **" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false

# Discord | Staff Switch Messages
#  Should Staff Switch messages be sent to Discord?
discord-switch-messages: true

# Discord | Switch Format
#  - Placeholders: Player - {player}, From - {from}, To - {to}
discord-switch-format:
  text: "**{player}** switched from **{from}** -> **{to}**" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "{player}" # Embed Title
    title-url: "" # Enbed Title URL
    description: "** {from} -> {to} **" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false

# Discord | AFK Messages
#  Should Staff AFK enable messages be sent to Discord?
discord-afk-enable-messages: true

# Discord | AFK Enable Format
#  - Placeholders: Player - {player}
discord-afk-enable-format:
  text: "**{player}** is now AFK" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "{player}" # Embed Title
    title-url: "" # Enbed Title URL
    description: "has gone AFK" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false

# Discord | AFK Messages
#  Should Staff AFK disable messages be sent to Discord?
discord-afk-disable-messages: true

# Discord | AFK Disable Format
#  - Placeholders: Player - {player}
discord-afk-disable-format:
  text: "**{player}** is no longer AFK" # Only used if 'discord-embed' is disabled.
  embed: # Only used if 'discord-embed' is enabled.
    author: # Embed Author
      name: ""
      url: ""
      image: ""
    title: "{player}" # Embed Title
    title-url: "" # Enbed Title URL
    description: "is no longer AFK" # Embed Description
    color: "#5555FF" # Embed Color
    footer: # Upgrade to UltraStaffChatPro to change the embed Footer
    image: "" # Embed Image URL
    thumbnail: "" # Embed Thumbnail URL
    fields: # Embed Fields (Remove all to have no fields)
    #  1:
    #    name: "Example"
    #    value: "You can keep making more fields"
    #    inline: false



# [ UltraStaffChat | StaffChat Configuration ]

# StaffChat | Format
#  - Placeholders: Player - {player}, Server - {server}, Message - {message}
staffchat-format: "&8[&4&lStaffChat&8] &4{player}&c: &c{message}"

# StaffChat | Usage
staffchat-usage: "&cUsage: /staffchat <message>"

# StaffChat | Muted
staffchat-muted: "&cStaffChat is currently Muted"

# StaffChat | Prefix
#  Allows Staff members to send messages to StaffChat using a prefix before their message.
#  Set to "" to disable.
staffchat-prefix: "#"



# [ UltraStaffChat | Toggle Configuration ]

# Toggle | Enabled
toggle-enabled: true

# Toggle On | Message
toggle-message-on: "&8[&4&lStaffChat&8] &cStaffChat Toggled &aOn&c!"

# Toggle Off | Message
toggle-message-off: "&8[&4&lStaffChat&8] &cStaffChat Toggled &cOff&c!"

# Toggle | Usage
toggle-usage: "&cUsage: /sctoggle <state>"


# [ UltraStaffChat | Mute Configuration ]

# Mute | Enabled
mute-enabled: true

# Mute On | Message
mute-message-on: "&8[&4&lStaffChat&8] &cStaffChat &cMuted&c!"

# Mute Off | Message
mute-message-off: "&8[&4&lStaffChat&8] &cStaffChat &aUnmuted&c!"

# Mute | Usage
mute-usage: "&cUsage: /scmute <state>"

# [ UltraStaffChat | Mute StaffChat Configuration ]

# Mute | Enabled
mute-staffchat-enabled: true

# Mute On | Message
mute-staffchat-message-on: "&8[&4&lStaffChat&8] &cStaffChat has been &cMuted&c!"

# Mute Off | Message
mute-staffchat-message-off: "&8[&4&lStaffChat&8] &cStaffChat has been &aUnmuted&c!"

# Mute | Usage
mute-staffchat-usage: "&cUsage: /mutesc <state>"



# [ UltraStaffChat | AFK Configuration ]

# AFK | Enabled
afk-enabled: true

# AFK | Message
#  - Placeholders: Player - {player}
afk-broadcast: "&7{player} is now &c&lAFK&7."

# AFK | No longer AFK Message
#  - Placeholders: Player - {player}
no-afk-broadcast: "&7{player} is no longer &c&lAFK&7."



# [ UltraStaffChat | Join Message Configuration ]

# Join Message | Enabled
join-enabled: true

# Join Message | Message
#  - Placeholders: Player - {player}, Server - {server}
join-message: "&7[&a&l+&7] &7[{server}] &a{player}"



# [ UltraStaffChat | Leave Message Configuration ]

# Leave Message | Enabled
leave-enabled: true

# Leave Message | Message
#  - Placeholders: Player - {player}
leave-message: "&7[&c&l-&7] &c{player}"



# [ UltraStaffChat | Switch Message Configuration ]

# Switch Message | Enabled
switch-enabled: true

# Switch Message | Message
#  - Placeholders: Player - {player}, From - {from}, To - {to}
switch-message: "&8[&4&lStaffChat&8] &c{player} switched from {from} to {to}"



# [ UltraStaffChat | StaffList Configuration ]

# StaffList | Enabled
stafflist-enabled: true

# StaffList | Header
#  - Placeholders: Staff Count - {count}
stafflist-header: "&7({count}) &c&lOnline Staff Members&7:"

# StaffList | Format
#  - Placeholders: Player - {player}, Server - {server}
stafflist-line: "&4{player} &7- &4{server}"

# StaffList | No staff online
stafflist-offline: "&cNo staff members are online."



# [ UltraStaffChat | Update Notification Configuration ]

# Update Notification | Enabled
update-enabled: true

# Update Notification | Message
#  - Placeholders: New Version - {version}, Current Version - {current}
update-message: "&8[&c&lUltraStaffChat&8] &aVersion {version} is now available."



# [ UltraStaffChat | Permissions ]

# Permission | StaffChat Talk
permission-talk: "staffchat.talk"

# Permission | StaffChat Read
permission-read: "staffchat.read"

# Permission | Toggle
permission-toggle: "staffchat.toggle"

# Permission | Mute
permission-mute: "staffchat.mute"

# Permission | Mute Global
permission-globalmute: "staffchat.globalmute"

# Permission | StaffChat Global Mute Bypass
permission-bypass: "staffchat.mutebypass"

# Permission | AFK
permission-afk: "staffchat.afk"

# Permission | Staff Join
permission-join: "staffchat.join"

# Permission | Staff Leave
permission-leave: "staffchat.leave"

# Permission | Switch
permission-switch: "staffchat.switch"

# Permission | Staff List
permission-list: "staffchat.list"

# Permission | Staff (Permission needed to display on Staff List)
permission-staff: "staffchat.staff"

# Permission | Chat Formatting
permission-chat-format: "staffchat.format"

# Permission | Update Notification
permission-update: "ultrastaffchat.update"

# Permission | Configuration Reload
permission-reload: "ultrastaffchat.reload"

# Permission | Debug
permission-debug: "ultrastaffchat.debug"



# [ UltraStaffChat | System Configuration ]

# System | Configuration Version
#  Used for Internal purposes - Don't edit!
version: 37

# - You're done!
# Thanks for using UltraStaffChat BungeeCord!
```

{% endcode %}


