` | *Everyone* | Checks the Vault balance of an active player. |
| `/eco give ` | **Admin Role ID** | Grants money magically from Discord directly into the player's game wallet! |
**Key Configuration (`modules/economy/config.yml`):**
- `admin-role-id`: Critical security check to see who can use `/eco give`.
- `stats-card-format`: A customizable string array mapping `%papi_tags%` into the Discord Embed!
---
## ⚙️ 5. DevOps Module
The developer's best friend. Track backend errors and control server crashing events before they happen.
| Automation Feature | Security Bypass | Description |
| :--- | :--- | :--- |
| **TPS Watchdog** | *Async Cooldowns* | Pings Discord Admins internally if TPS slips below critical marks. |
| **Log4j2 Console Bridge** | Rate Limit Batching | Hooks into Log4j2 recursively to capture *all* console output. Buffers and flushes smartly every 1.5s to bypass Discord 2000-char limits. Filters out JDA OkHttp noise. |
| **Two-Way Dispatch** | Admin Role ID | Securely allows authorized Discord Admins to execute server console commands directly from the bridge channel. |
| **Auto-Broadcaster** | -- | Synchronized messaging array blasting over Game Chat and Discord simultaneously! |
**Key Configuration (`modules/devops/config.yml`):**
- `dev-channel-id`: Private channel where backend console errors are securely logged.
- `min-tps-alarm`: Warning threshold that triggers when the TPS Watchdog hits its limit (default: 17.5).
---
## 🎁 6. Rewards Module
Gamify your community building! This module measures time spent in Discord Voice Channels and converts it directly into Minecraft loot!
| Gamification | Safety Protocols | Description |
| :--- | :--- | :--- |
| **Voice XP Timer** | `isMuted()`, `isDeafened()` | Computes asynchronous elapsed time in Voice Channels. If users self-mute/deafen, they yield zero rewards! |
| **AFK Evasion** | `getAfkChannel()` | Hard blocks any progression mapping inside registered AFK Voice channels. |
**Key Configuration (`modules/rewards/config.yml`):**
- `reward-interval-minutes`: Consecutive voice minutes required to unlock the drop.
- `reward-commands`: List of Bukkit commands fired by console once the timer successfully hits.
- `reward-message`: Direct Message sent secretly to the player through Discord when they win!
---
## 🌐 7. Network Module (The Global Bridge)
Redefine cross-server networking. Connect all your proxy sub-servers (Skyblock, Lobby, Survival) into one global Staff Chat room using the power of JDA Relays! Absolutely no Redis needed!
| Command | Permission | Description |
| :--- | :--- | :--- |
| `/staffchat ` | `cordsync.staffchat` | Broadcasts an inter-dimensional message to all connected servers. |
| *(Alias)* `/sc` | `cordsync.staffchat` | Same functionality, faster typing. |
**Key Configuration (`modules/network/config.yml`):**
- `server-name`: A unique tag (e.g. `[Skyblock]`) applied to outbounding messages so others know where the message came from.
- `discord-staff-channel-id`: The core hidden Discord channel acting as the "Bridge" connecting the Network. Messages sent here are synchronized identically across the servers playing as listeners (`MessageReceivedEvent`).
---
## 🎫 8. SyncTicket Module (2-Way Ticket System)
The ultimate support pipeline. Let your players communicate with your moderation team seamlessly from the game directly into a dedicated Discord Thread/Channel, and vice-versa!
| Command / Interaction | Permission | Description |
| :--- | :--- | :--- |
| `/ticket create ` | `cordsync.ticket` | Opens a private ticket. Creates a personalized Discord Channel securely tracking the player's TPS and Ping. |
| `/ticket close` | `cordsync.ticket` | Closes the player's active ticket. |
| *(Discord)* **Close Button** | *Channel Perms* | Staff can click the `Button.danger()` attached to the ticket embed to automatically delete the channel and notify the player in-game. |
| *(Discord)* **Staff Reply** | *Channel Perms* | Any normal text sent by a Staff member inside the Ticket channel is asynchronously relayed back to the player in-game! |
**Key Configuration (`modules/ticket/config.yml`):**
- `ticket-category-id`: The Discord Category ID where all new tickets will be generated.
- `messages.discord-reply`: The customizable string format determining how Staff responses look in Minecraft.
---
## 🔨 9. Moderation Module (Interactive Discord Moderation)
Control your server's chat toxicity and execute punishments via Discord **Modal Forms** (Pop-up Dialogs)!
| Interaction Flow | Component | Description |
| :--- | :--- | :--- |
| **1. Chat Filtering** | `AsyncPlayerChatEvent` | Cancels any message containing forbidden strings and sends an alert embed to Discord with 3 action buttons. |
| **2. Button Click** | `ButtonInteractionEvent` | Clicking `[🔇 Mute]`, `[🚷 Kick]` or `[⛔ Ban]` does NOT execute instantly. Instead, a **Modal Pop-up Form** opens on the staff member's screen. |
| **3. Modal Form** | `Modal` + `TextInput` | **Mute/Ban:** The form includes a **Duration** field (e.g. `1h`, `3d`, `permanent`) and a **Reason** field (required, paragraph). **Kick:** Only the **Reason** field appears. |
| **4. Punishment** | `ModalInteractionEvent` | On submit, the plugin dynamically builds the punishment command using `{player}`, `{duration}`, `{reason}` placeholders and dispatches it on the Bukkit main thread. Buttons are then disabled to prevent double-punishment. |
**Key Configuration (`modules/moderation/config.yml`):**
- `log-channel-id`: The channel where flagged chats trigger interactive Action Buttons.
- `forbidden-words`: An array of banned words that trigger the Watchdog.
- `mute-command`: Template with `{player}`, `{duration}`, `{reason}` placeholders (e.g. `mute {player} {duration} {reason}`).
- `kick-command`: Template with `{player}`, `{reason}` placeholders.
- `ban-command`: Template with `{player}`, `{duration}`, `{reason}` placeholders.
---
## 🏆 10. Leaderboard Module
Gamify your server ranking natively in Discord.
| Supported Stats | Mechanism | Description |
| :--- | :--- | :--- |
| **Vault Economy** | `OfflinePlayer` Iterator | Loops through all Offline Players, fetches their Vault Balances asynchronously, and sorts the top 10 into an Embed. |
| **Stat: Kills** | `Statistic.PLAYER_KILLS` | Ranks the server's top 10 PVP players automatically. |
**Key Configuration (`modules/leaderboard/config.yml`):**
- `leaderboard-message-id`: The static message ID that the module will continuously edit with the latest Top 10 data.
- `leaderboard-type`: Set to `VAULT` or `KILLS`.
---
## 🛒 11. Auction Module
Hook your in-game markets straight to your Discord community seamlessly. It provides a raw API command for integration with standard AuctionHouse plugins.
| Command / Hook | Permission | Description |
| :--- | :--- | :--- |
| `/nettyforge ahbroadcast - ` | `cordsync.admin` | Secure command intended to be run by Console via third-party Auction Plugin execution triggers. It dispatches a beautiful "New Auction Listed!" Embed directly to Discord. |
**Key Configuration (`modules/auction/config.yml`):**
- `auction-channel-id`: The dedicated Discord channel tracking live market activity.
- `embed-color`: Specify the HEX color for the broadcast cards!
---
## 🎧 12. Voice Module (Dynamic WorldGuard Integration)
Merge the realms of Minecraft and Discord Voice dynamically *(Soft-Depends on WorldGuard 7+)*.
| Event Flow | Abstraction Level | Description |
| :--- | :--- | :--- |
| **Region Enter** | `PlayerMoveEvent` | When a player enters a monitored WorldGuard Region boundary (e.g. `dungeon_1`), the Voice Module detects the abstract Region ID and creates a temporary JDA Voice Channel named `🔊 dungeon_1`. |
| **Region Leave** | `PlayerQuit` & `Move` | Once the last occupant leaves the applicable WorldGuard Region, the module automatically destroys the temporary Discord Voice Channel to save space. |
**Key Configuration (`modules/voice/config.yml`):**
- `voice-category-id`: The container Category where all dynamic channels will spawn.
- `watched-regions`: A list of all WorldGuard regions that trigger this event (e.g. `['pvp_arena', 'dungeon_boss']`).
---
> "Bridging dimensions, one message at a time." 🚀
> **Crafted with passion by musbabaff (NettyForge Studios)**
> Building the next generation of Minecraft tools & integrations.
>
> [www.nettyforge.com](https://nettyforge.com)