# 📢 Announcer

It supports multiple announcement types, including chat, title, actionbar, bossbar, sound, toast, and command-based announcements.

***

### What It Does

The Announcer module provides a flexible announcement system for your network.

It can be used for:

* Automatic announcements
* Manual announcements
* Chat announcements
* Title announcements
* Actionbar announcements
* Bossbar announcements
* Sound announcements
* Toast announcements
* Command-based announcements
* Announcement previews
* Player announcement toggles
* Forced announcements
* Optional Redis synchronization

***

### When To Enable It

Enable this module if you want NexusProxy to manage network announcements from the proxy.

This module is useful for:

* Server tips
* Store messages
* Discord promotion
* Rule reminders
* Event announcements
* Maintenance warnings
* Feature promotions
* Staff broadcasts
* Scheduled information messages

***

### Requirements

The Announcer module can work without external dependencies.

Some features may require optional dependencies.

| Dependency     | Required           | Purpose                                                   |
| -------------- | ------------------ | --------------------------------------------------------- |
| Redis          | Optional           | Can synchronize manual announcement sends across proxies. |
| MySQL          | No                 | Not required.                                             |
| MongoDB        | No                 | Not required.                                             |
| PacketEvents   | Required for toast | Needed for toast announcements.                           |
| Discord        | No                 | Not required.                                             |
| PlaceholderAPI | No                 | Not required.                                             |

{% hint style="warning" %}
PacketEvents is required if you want to use toast announcements.
{% endhint %}

{% hint style="info" %}
Redis is recommended for multi-proxy networks if you want manual announcements to sync across proxies.
{% endhint %}

***

### Configuration File

The Announcer module configuration file is located at:

```
plugins/NexusProxy/modules/announcer/announcer.yml
```

This file can contain settings for:

* Module status
* Command names
* Command aliases
* Permissions
* Automatic announcement interval
* Announcement groups
* Announcement types
* Chat messages
* Titles
* Actionbars
* Bossbars
* Sounds
* Toasts
* Command actions
* Toggle behavior
* Receive permissions
* Redis synchronization

{% hint style="warning" %}
Command names and aliases may be configurable in the module file.

The commands shown here are the default commands.
{% endhint %}

***

### Default Commands

| Command              | Description                                                  |
| -------------------- | ------------------------------------------------------------ |
| `/announcer toggle`  | Toggles receiving announcements, depending on configuration. |
| `/announcer preview` | Previews an announcement.                                    |
| `/announcer send`    | Sends a manual announcement.                                 |
| `/announcements`     | Alias for the announcer command.                             |

***

### Permissions

| Permission                             | Description                                                        |
| -------------------------------------- | ------------------------------------------------------------------ |
| `nexusproxy.command.announcer`         | Allows access to the main announcer command.                       |
| `nexusproxy.command.announcer.toggle`  | Allows usage of `/announcer toggle`.                               |
| `nexusproxy.command.announcer.preview` | Allows usage of `/announcer preview`.                              |
| `nexusproxy.command.announcer.send`    | Allows usage of `/announcer send`.                                 |
| `nexusproxy.announcer.receive`         | Allows receiving normal announcements, depending on configuration. |
| `nexusproxy.announcer.force_receive`   | Forces receiving announcements, depending on configuration.        |

***

### Recommended LuckPerms Setup

#### Default players

```
/lp group default permission set nexusproxy.announcer.receive true
/lp group default permission set nexusproxy.command.announcer.toggle true
```

#### Staff

```
/lp group staff permission set nexusproxy.command.announcer true
/lp group staff permission set nexusproxy.command.announcer.preview true
```

#### Admin

```
/lp group admin permission set nexusproxy.command.announcer.send true
/lp group admin permission set nexusproxy.announcer.force_receive true
```

{% hint style="warning" %}
Only give manual send permissions to trusted staff or administrators.

Manual announcements can broadcast messages to the whole network.
{% endhint %}

***

### Announcement Types

The Announcer module can support multiple announcement output types depending on your configuration.

| Type      | Description                                               |
| --------- | --------------------------------------------------------- |
| Chat      | Sends a message in chat.                                  |
| Title     | Sends a title and subtitle to players.                    |
| Actionbar | Sends a message above the hotbar.                         |
| Bossbar   | Shows a bossbar announcement.                             |
| Sound     | Plays a sound with the announcement.                      |
| Toast     | Sends a toast notification. Requires PacketEvents.        |
| Commands  | Executes configured commands as part of the announcement. |

***

### Chat Announcements

Chat announcements are standard text messages sent to players.

Example concept:

```yaml
announcements:
  discord:
    type: "chat"
    messages:
      - "&9&lDiscord &8» &fJoin our Discord server!"
      - "&7discord.example.net"
```

Use chat announcements for:

* Tips
* Links
* Store messages
* Discord promotion
* Rule reminders

***

### Title Announcements

Title announcements appear in the center of the player's screen.

Example concept:

```yaml
announcements:
  event:
    type: "title"
    title: "&6&lEvent"
    subtitle: "&fA new event is starting soon!"
```

Use title announcements for important messages that should be highly visible.

***

### Actionbar Announcements

Actionbar announcements appear above the player's hotbar.

Example concept:

```yaml
announcements:
  tip:
    type: "actionbar"
    message: "&eTip: &fUse /hub to return to the lobby."
```

Use actionbar announcements for short tips or lightweight reminders.

***

### Bossbar Announcements

Bossbar announcements display a bossbar at the top of the screen.

Example concept:

```yaml
announcements:
  sale:
    type: "bossbar"
    message: "&6Store sale active now!"
    duration: 10
```

Use bossbar announcements for important but non-intrusive messages.

***

### Sound Announcements

Sound announcements can play a configured sound when the announcement is sent.

Example concept:

```yaml
sound:
  enabled: true
  name: "minecraft:block.note_block.pling"
  volume: 1.0
  pitch: 1.0
```

Use sounds carefully.

Too many sounds can annoy players faster than a creeper behind your back.

***

### Toast Announcements

Toast announcements show a Minecraft toast notification.

{% hint style="warning" %}
Toast announcements require PacketEvents installed on the Velocity proxy.
{% endhint %}

Example concept:

```yaml
announcements:
  reward:
    type: "toast"
    title: "&6Reward"
    description: "&fClaim your daily reward!"
```

Use toast announcements for:

* Rewards
* Store notices
* Achievements
* Special events

***

### Command Announcements

Command announcements can execute configured commands when an announcement is sent.

Example concept:

```yaml
commands:
  - "alert The event has started!"
```

Use command actions carefully, especially if the commands affect players or server state.

{% hint style="danger" %}
Only use trusted commands in announcement actions.

A bad command configuration can affect the whole network.
{% endhint %}

***

### Automatic Announcements

Automatic announcements are sent on a configured interval.

They are useful for repeating informational messages without staff intervention.

Example use cases:

* Discord invite
* Store link
* Vote reminder
* Rules reminder
* Feature tips
* Event schedule

Example concept:

```yaml
automatic:
  enabled: true
  interval: 300
```

***

### Manual Announcements

Manual announcements are sent by staff using the announcer command.

Default command:

```
/announcer send
```

Example concept:

```
/announcer send discord
```

This can be used to immediately broadcast a configured announcement.

***

### Previewing Announcements

Staff can preview announcements before sending them.

Default command:

```
/announcer preview
```

Example concept:

```
/announcer preview discord
```

This helps verify formatting before broadcasting a message to the entire network.

***

### Announcement Toggle

Players may be able to toggle receiving announcements, depending on your configuration.

Default command:

```
/announcer toggle
```

Alias:

```
/announcements toggle
```

{% hint style="info" %}
Forced announcements may ignore player toggle settings depending on your configuration.
{% endhint %}

***

### Redis Synchronization

Redis can synchronize manual announcement sends across multiple Velocity proxies.

This is useful for networks with more than one proxy.

With Redis synchronization, a manual announcement sent from one proxy can be replicated to the rest of the network, depending on configuration.

{% hint style="info" %}
For multi-proxy networks, make sure all proxies use the same Redis settings and each proxy has a unique `cluster.proxy_id`.
{% endhint %}

***

### Common Use Cases

#### Toggle announcements

```
/announcer toggle
```

***

#### Preview an announcement

```
/announcer preview discord
```

***

#### Send a manual announcement

```
/announcer send discord
```

***

#### Use the alias

```
/announcements toggle
```

***

### Setup Tips

* Use chat announcements for general messages.
* Use titles for important messages.
* Use actionbars for short reminders.
* Use bossbars for visible but clean announcements.
* Install PacketEvents before using toast announcements.
* Use Redis if manual announcements should sync across multiple proxies.
* Give send permissions only to trusted staff.
* Test announcements with `/announcer preview` before using `/announcer send`.
* Keep automatic announcements spaced out to avoid spam.
* Check `announcer.yml` if you want to change command names or aliases.

***

### Common Issues

#### Announcements do not send

Check that:

* The Announcer module is enabled.
* The announcement exists in `announcer.yml`.
* The command sender has the correct permission.
* The announcement type is configured correctly.
* NexusProxy was reloaded or restarted after editing the config.

***

#### Toast announcement does not work

Check that:

* PacketEvents is installed on the Velocity proxy.
* PacketEvents is compatible with your setup.
* The toast announcement is configured correctly.
* The Announcer module is enabled.
* The proxy was restarted after installing PacketEvents.

***

#### Manual announcements do not sync across proxies

Check that:

* Redis is enabled.
* All proxies use the same Redis settings.
* All proxies use the same `channel_prefix`.
* Every proxy has a unique `cluster.proxy_id`.
* Redis sync is enabled for the Announcer module, if configurable.
* `/nexusproxy storage` shows Redis as connected.

***

#### Player does not receive announcements

Check that:

* The player has `nexusproxy.announcer.receive`, if required.
* The player has not disabled announcements with `/announcer toggle`.
* The announcement is not restricted to another group.
* The player is connected to the correct proxy/server target.
* The announcement is not blocked by configuration filters.

***

#### Player still receives announcements after toggling them off

Check that:

* The announcement is not configured as forced.
* The player does not have `nexusproxy.announcer.force_receive`.
* Toggle behavior is enabled in `announcer.yml`.

***

#### Announcement formatting looks wrong

Check that:

* Color codes or formatting tags are valid.
* Placeholders are typed correctly.
* The announcement type supports the formatting you are using.
* The module was reloaded after editing the config.

***

### Summary

The Announcer module provides automatic and manual announcement tools for NexusProxy.

It is recommended for networks that want configurable announcements through chat, title, actionbar, bossbar, sound, toast, or command actions.


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://nexusproxy.nemesismc.net/modules/announcer.md?ask=<question>
```

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

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