ZStaffChatPro - Staff Chat System | Spigot/Bungee/Velocity/Folia • 1.8.x - 1.21.x icon

ZStaffChatPro - Staff Chat System | Spigot/Bungee/Velocity/Folia • 1.8.x - 1.21.x -----

The most powerful and customizable staff chat plugin for your server!







⚠ Delete your old config.yml and messages.yml before updating.

Server-side Bridge addon for ZStaffChatPro. Install on Spigot/Paper/Folia backends to enable cross-server vanish sync, AFK detection, and player activity tracking on BungeeCord/Velocity proxies.

Download Here https://cdn.modrinth.com/data/IsXrdhkA/versions/OIzUqGkw/ZStaffChat-SpigotAddon-0.0.1.jar



New Features


  • Automatic Config Migration — The plugin now tracks config versions internally. When you update, outdated config.yml and messages.yml are automatically backed up (e.g. config.yml.v0.bak) and a fresh
    default is generated. No more manual config deletion needed.

  • Customizable Help Message — /zstaffchat help output is now fully customizable in messages.yml (help-output, help-channel-format) with {channels} placeholder for dynamic channel list.

  • In-Game Activity Log — Staff members now receive join/leave/server-change/vanish/AFK notifications directly in-game through the channel system. Configurable per-event toggles and customizable
    formats in the ingame-activity-log section of config.yml.

  • /staffafk Command — Manual AFK toggle command on all platforms (zstaffchat.afk permission). Activity log messages route through the player's highest priority channel.

  • Player Activity Bridging — Bridge addon now sends movement data (throttled to 30s per player) to the proxy, enabling accurate AFK detection on BungeeCord/Velocity.

  • LuckPerms in Stafflist & Stafftime — {lp_prefix}, {lp_suffix}, {lp_group}, {lp_rank} placeholders now work in stafflist-player-format and stafftime-output on all platforms.

  • Customizable Discord Embeds — Full embed support for both bot and webhook mode: custom colors, titles, descriptions, footers, thumbnails, author fields, and timestamps. Also available for activity
    log events with per-event colors.

  • Discord Role Prefixes — Map Discord role IDs to custom in-game prefixes via role-prefixes config. New {discord_role} and {prefix} placeholders in format-to-minecraft.

  • Bot Presence — Configure bot status (online/idle/dnd/invisible) and activity (playing/watching/listening/competing) in config.

  • JDA 6.3.0 Upgrade — Upgraded Discord bot library from 5.0.0-beta.18 to 6.3.0 with all updated dependencies.

  • Modrinth Update Checker — Update checker now uses Modrinth API. Redesigned console output with box-style formatting.

  • Unified Startup Banner — All platforms now display a consistent startup message showing plugin version, platform, channel count, Discord status, playtime and AFK status.

  • YAML Error Handling — User-friendly error messages when config.yml has syntax errors, instead of raw stack traces.
Improvements


  • Migrated library loading to Libby 1.3.1 — no more Unsafe warnings
  • Bridge addon: ping/pong mechanism for proxy connection confirmation
  • Bridge addon: separate VanishListener to prevent ClassNotFoundException without PremiumVanish
  • Bridge addon: idle threshold for faster AFK cancellation on proxy
  • Reorganized messages.yml with section headers, detailed placeholder docs, and usage examples
  • Graceful JDA shutdown — no more zip file closed errors when stopping the server
Bug Fixes


  • Fixed jackson-annotations version mismatch causing potential runtime errors
  • Fixed JDA shutdown race condition causing IllegalStateException on server stop
  • Removed unused dead code from Bungee/Velocity platforms
----------, Feb 4, 2026

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

New Features:
  • VanishBridge Addon - New companion plugin for Spigot/Paper servers that enables vanish notifications when using PremiumVanish with database sync
  • Plugin Messaging System - VanishBridge sends vanish state changes from backend servers to BungeeCord/Velocity proxy

Why VanishBridge?

When using PremiumVanish with database synchronization across multiple servers, the proxy (BungeeCord/Velocity) doesn't receive vanish events when players use /vanish or /v on backend Spigot servers. This is because PremiumVanish syncs vanish states via database, but doesn't fire proxy-side events for these changes.

VanishBridge solves this by:
  • Listening for PremiumVanish events on backend Spigot servers
  • Sending vanish state changes to the proxy via plugin messaging
  • Enabling Discord activity logging for vanish/unvanish events

Installation:
  1. Install ZStaffChatPro on your BungeeCord/Velocity proxy (as usual)
  2. Install ZStaffChat-VanishBridge on each Spigot/Paper server that has PremiumVanish
  3. Restart all servers

Note: VanishBridge is only needed if:
  • You have ZStaffChatPro only on the proxy (not on backend servers)
  • You use PremiumVanish with database sync across multiple servers
  • You want vanish notifications to appear in Discord

If you have ZStaffChatPro installed on your Spigot servers directly, you don't need VanishBridge.

Supported Platforms:
  • VanishBridge: Spigot, Paper, Folia (1.8.x - 1.21.x)
  • Proxy: BungeeCord, Velocity
  • Vanish Plugins: PremiumVanish, SuperVanish

Bug Fixes:
  • Fixed vanish notifications not working - Vanish/unvanish events now properly trigger Discord activity logs when using /vanish on backend servers
  • Removed debug logging - Cleaned up console output from VanishHook and VanishBridge

Code Cleanup:
  • Removed unused VanishListener from BungeeCord and Velocity modules (vanish commands can only be used on backend servers, not on proxy)
----------, Jan 27, 2026

⚠️⚠️⚠️ IMPORTANT - READ BEFORE UPDATING ⚠️⚠️⚠️

1. BACK UP your config.yml and messages.yml files FIRST!
2. DELETE config.yml and messages.yml from the plugin folder
3. Restart the server to regenerate new config files
4. Re-apply your custom settings from the backup

I apologize for the inconvenience - unfortunately I was unable to implement automatic config migration that would preserve your existing settings while adding the new options. Thank you for your understanding.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

New Features:
  • Server Display in Stafflist - See which server each staff member is on (BungeeCord/Velocity only)
  • New Placeholders - {server} and {server_alias} for player format
  • Discord Activity Logging - Log staff activity (join, leave, server change, vanish, AFK) to Discord
  • Channel Priority System - Configure channel priority for activity logging and stafflist display
  • Stafflist Highest Only - Show players only in their highest priority channel (e.g., Admin with priority 1 instead of showing in Admin, Staff, and Builder)

Discord Activity Logging:
  • Works with both webhook and bot mode
  • Two modes: send to chat channel webhooks OR to a separate dedicated webhook/channel
  • Configurable events: join, leave, server-change, vanish, afk
  • Customizable message formats with placeholders: {player}, {server}, {server_alias}
  • LuckPerms support: {lp_prefix}, {lp_suffix}, {lp_group}, {lp_rank}

New Config - Activity Logging (Webhook Mode):
Code (Text):
discord:
  webhook:
    activity-log:
      enabled: false
      log-permission: "zstaffchat.staff"
      # Option 1: Send to chat channel webhooks
      use-channel-webhooks: false
      # Option 2: Send to separate webhook
      separate-webhook:
        enabled: false
        webhook-url: ""
      events:
        join: true
        leave: true
        server-change: true
        vanish: true
        afk: true
      formats:
        join: " **{player}** joined the server"
        leave: " **{player}** left the server"
        server-change: " **{player}** moved to **{server_alias}**"
        vanish-on: " **{player}** entered vanish"
        vanish-off: "️ **{player}** left vanish"
        afk-on: " **{player}** is now AFK"
        afk-off: "✅ **{player}** is no longer AFK"
New Config - Activity Logging (Bot Mode):
Code (Text):
discord:
  bot:
    activity-log:
      enabled: false
      log-permission: "zstaffchat.staff"
      # Option 1: Send to chat channels
      use-chat-channels: false
      # Option 2: Send to separate channel
      separate-channel:
        enabled: false
        channel-id: ""
      events:
        join: true
        leave: true
        server-change: true
        vanish: true
        afk: true
      formats:
        join: " **{player}** joined the server"
        leave: " **{player}** left the server"
        server-change: " **{player}** moved to **{server_alias}**"
        vanish-on: " **{player}** entered vanish"
        vanish-off: "️ **{player}** left vanish"
        afk-on: " **{player}** is now AFK"
        afk-off: "✅ **{player}** is no longer AFK"
New Config (messages.yml):
Code (Text):
# Format for each player in the staff list (BungeeCord/Velocity only)
# Placeholders: {player}, {server}, {server_alias}
stafflist-player-format: "{player}"

# Examples:
# "{player} &7({server_alias})" -> Steve (Survival), Alex (Lobby)
# "{player} &7[{server}]"       -> Steve [survival-01], Alex [lobby-01]
Placeholders:
  • {player} - Player name
  • {server} - Technical server name from proxy config (e.g., "skywars-01")
  • {server_alias} - Friendly name from config.yml server-aliases (e.g., "SkyWars")

Note: Server display only works on proxy servers (BungeeCord/Velocity). On single servers (Spigot/Paper/Folia), this option is ignored.

Channel Priority System:
  • Each channel now has a configurable priority value (lower number = higher priority)
  • Default priorities: admin=1, staff=2, builder=3
  • Activity logs are sent only to the player's highest priority channel (prevents spam)
  • Optional: Show players only in their highest priority channel in /stafflist

New Config (config.yml):
Code (Text):
features:
  # Show players only in their highest priority channel in /stafflist
  stafflist-highest-only: true

channels:
  admin:
    priority: 1  # Highest priority
  staff:
    priority: 2
  builder:
    priority: 3  # Lowest priority
Bug Fixes:
  • Fixed plugin not loading on Paper 1.20.4 - Fixed IllegalAccessError caused by class loader conflict with Paper's bundled Kyori libraries
  • Fixed config comments - Corrected /spy to /staffspy and /sc toggle to /sc (without arguments)
----------, Jan 27, 2026

Bug Fixes:
  • Stafflist Vanish Visibility - Now uses PremiumVanish/SuperVanish native canSee API instead of permission check

What Changed:
  • Previously, /stafflist used zstaffchat.see-vanished permission to determine who can see vanished players
  • Now it respects PremiumVanish's own visibility logic (vanish levels, see permissions, etc.)

Note: The zstaffchat.see-vanished permission is no longer used for /stafflist when PremiumVanish is installed.

Important: If you prefer the old permission-based behavior, stay on version 1.7.0.
----------, Jan 14, 2026

New Features:
  • PremiumVanish/SuperVanish Integration - Vanished staff are hidden from /stafflist for non-staff players
  • Vanished Prefix - Staff members see [Vanished] prefix for hidden players in /stafflist
  • Per-Channel Discord Webhooks - Each channel can have its own webhook URL (staff → #staff, admin → #admin)

Improvements:
  • Reorganized Discord Config - Clear separation between webhook mode and bot mode settings
  • Vanish Status in About - /zstaffchat about now shows PremiumVanish hook status

New Permission:
  • zstaffchat.see-vanished - Allows seeing vanished players in /stafflist

New Config:
Code (Text):
discord:
  webhook:
    channels:
      staff: "https://discord.com/api/webhooks/..."
      admin: "https://discord.com/api/webhooks/..."
      builder: "https://discord.com/api/webhooks/..."
New Message:
  • stafflist-vanished-prefix - Prefix for vanished players (default: [Vanished])
----------, Jan 8, 2026

New Features:
  • bStats Integration - Anonymous plugin statistics (ID: 28758)
  • AFK Detection - Configurable timeout (default 5 minutes)
  • AFK Prefix in Staff List - [AFK] prefix shown for inactive staff in /stafflist
  • AFK Time Tracking - Track AFK time in /stafftime command

Improvements:
  • HEX Color Formatting - Formatting codes now work with HEX colors: &l{#FF0000}Bold Red
  • Gradient Formatting - Formatting codes work inside gradients: {#FF0000>>#0000FF}&lBold Gradient{/}
  • All Formatting Supported - Bold, italic, underline, strikethrough, obfuscated with colors

New Config Options:
  • afk.enabled - Enable/disable AFK detection (default: true)
  • afk.timeout-minutes - AFK timeout in minutes (default: 5)

New Placeholders in /stafftime:
  • {afk_today} - Today's AFK time
  • {afk_week} - This week's AFK time
  • {afk_total} - Total AFK time

Upgrade Note: For best results, delete your config.yml and messages.yml files to regenerate them with all new options. If you prefer to keep your settings, new config sections will be automatically added at the end of your existing files.
----------, Jan 8, 2026

New Features:

  • Auto-merge Configuration - New config options are automatically added when you update the plugin. No more deleting config files!
  • Global Staff Chat Mode - Optional single channel mode for simpler setups. Enable with staff-chat-global: true. Separate permissions for reading vs sending messages.
  • Server Aliases (Proxy) - Custom display names for servers on BungeeCord/Velocity. Use {server} placeholder in message format.
  • Customizable About Command - The /zstaffchat about output is now fully customizable in messages.yml using a list format.
  • Template-based Staff List - New stafflist-output with {channels} placeholder for complete layout control.
  • Multi-line Messages - All messages in messages.yml now support multi-line format. Single-line and multi-line work interchangeably.

Multi-line Messages Example:
Code (Text):

  # Old single-line format (still works)
  spy-on: "&aSpy mode enabled."

  # New multi-line format
  spy-on:
    - "&a&m─────────────────────"
    - "&aSpy mode enabled!"
    - "&7You can now see all staff chats."
    - "&a&m─────────────────────"

  # Staff list with custom layout
  stafflist-output:
    - "&6╔══════════════════════════════╗"
    - "&6║     &c&lSTAFF ONLINE            &6║"
    - "&6╠══════════════════════════════╣"
    - "{channels}"
    - "&6╚══════════════════════════════╝"
 
New Config Options:
  • staff-chat-global - Enable single channel mode
  • global-channel - Settings for global mode (permissions, format, etc.)
  • server-aliases - Map server names to display names
  • {server} - New placeholder for channel format (proxy only)

New Permissions:
  • zstaffchat.chat - Send messages (global mode)
  • zstaffchat.read - Read messages (global mode)

Note: Existing configs will automatically receive new options on first startup. Your current settings are preserved.
----------, Jan 7, 2026

New Features:
  • Separate JAR file for Folia servers (ZStaffChatPro-Folia.jar)
  • Main JAR now contains Spigot, BungeeCord, and Velocity
  • Folia module uses native Adventure API (smaller file size, better compatibility)

Improvements:
  • Simplified console startup message (removed box decorations)
  • Cleaner console output on all platforms

Downloads:
  • ZStaffChatPro.jar - For Spigot, Paper, BungeeCord, Velocity
  • ZStaffChatPro-Folia.jar - For Folia servers only
----------, Jan 2, 2026

✨ New Features
  • Folia support - Full support for Folia servers (1.19.4+)
  • Dedicated Folia module - Optimized for regionalized multithreading
  • Modern Paper AsyncChatEvent - Non-deprecated API for Folia
Changes
  • Added FOLIA to PlatformType enum
  • Java 17 target for Folia module (required by Folia)
  • folia-supported: true in Folia plugin.yml
----------, Jan 2, 2026


Update v1.2.0

⚠️ UPDATING TO v1.2.0 ⚠️

Backup your old files first!

Please delete your config.yml and messages.yml files before updating.
New configuration options have been added. Backup your old files first!

✨ New Features
  • Discord Webhook mode - Simple one-directional Minecraft → Discord
  • /zstaffchat about - Command showing plugin info and status
  • Command aliases - Configurable aliases per channel
  • Feature toggles - Enable/disable spy-mode, stafflist, chat-prefixes, toggle-mode
  • Update notifier - Configurable messages with placeholders
Changes
  • Changed default /bc to /builderchat to avoid broadcast conflicts
  • Discord integration now supports three modes: bot, webhook, disabled
  • Added platform name and version to about command
Fixes
  • Fixed message separators for in-game display
----------, Jan 1, 2026

New Features:
  • Discord Integration - Connect your staff chat to Discord!
    • Minecraft → Discord: All staff messages appear in Discord channels
    • Discord → Minecraft: Write in Discord, see it in-game
    • Separate Discord channel for each staff chat (Staff, Admin, Builder...)
    • Role-based permissions for Discord users
    • Fully customizable message formats
    • Libraries downloaded automatically on first run
Improvements:
  • Improved LuckPerms detection (no more errors when LuckPerms is not installed)
  • Better error handling during plugin startup/shutdown
Configuration:
Code (YAML):

  discord
:
    enabled
: true
    bot-token
: "YOUR_BOT_TOKEN"
    channels
:
      staff
: "DISCORD_CHANNEL_ID"
      admin
: "DISCORD_CHANNEL_ID"
    format
:
      to-discord
: "**[{channel}]** {player}: {message}"
      to-minecraft
: "&7[&9Discord&7] &7{player}: &f{message}"
 
Delete your old config.yml to get the new Discord settings, or add them manually!
----------, Dec 31, 2025

  • NEW: /stafflist command - View all online staff members grouped by channel
  • NEW: Permission zstaffchat.stafflist
  • NEW: Added support LuckPerms
  • Configurable staff list messages in messages.yml
----------, Dec 30, 2025

Resource Information
Author:
----------
Total Downloads: 197
First Release: Dec 30, 2025
Last Update: Yesterday at 8:36 PM
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings