Official Documentation

CraftersStaff

CraftersStaff is the ultimate all-in-one moderation suite designed for Spigot, Paper, and BungeeCord/Velocity networks. It unifies your staff team's workflow, from moderation mode to report tracking, eliminating the need for multiple disconnected plugins.

Staff Mode Absolute Vanish Freeze & Chat Reports UI MySQL / Proxy

Getting Started

Installation & Initial Setup

CraftersStaff is designed to work standalone on a single server, or synchronized across an entire network using shared databases (MySQL) and Proxy messaging.

For single servers (Spigot/Paper)

  1. Download the latest version of CraftersStaff.jar.
  2. Place the file inside your server's plugins/ folder.
  3. Start the server to generate the plugins/CraftersStaff/ configuration folder.
  4. By default, the plugin uses an embedded local database (H2). It is ready to use!

For networks (Velocity / BungeeCord)

  1. Place CraftersStaff.jar in the plugins/ folder of all your backend servers (Spigot/Paper).
  2. Optionally, place it in your Proxy (Velocity/BungeeCord) to enable network-wide alerts (Global Staff Chat).
  3. In the config.yml file of each backend server, configure your MySQL credentials. Make sure all servers point to the same database.
  4. Set bungee-mode: true or velocity-mode: true accordingly.
  5. Restart your network.

Smart System

Translation & Messages (Merge System)

Unlike other plugins where losing your translations is a constant risk during updates, CraftersStaff utilizes a non-destructive merge system.

All messages are centralized in language.yml. When you update the plugin, any new messages added by the developer are automatically inserted into your file, but your existing translations and customizations are never overwritten.

The plugin includes native pre-translated support for over 10 languages.

Core Features

Main Modules

1. Staff Mode & Vanish

By executing /staff, the moderator's inventory, XP level, health, and position are safely saved to the database. The player enters creative mode, receives interactive moderation items in their hotbar, and automatically enters Vanish.

The Vanish system hides the staff member from the TabList, the visual world, and commands from other plugins, guaranteeing truly silent investigations.

2. Freeze System

Allows you to immobilize a suspicious player using /freeze <player>. During this state:

  • The player cannot move, attack, chat publicly, drop items, or execute unauthorized commands.
  • A FreezerChat opens automatically: a private, direct channel between the player and the staff team to request AnyDesk/Discord screenshares.
  • If the player attempts to evade by disconnecting, the staff team receives a critical network-wide alert.

3. Notes and Reports

Notes: Administrators can add notes to a player's history using /notes. Notes support tracking statuses (PENDING, IN_PROGRESS, RESOLVED), allowing the team to manage long-term disciplinary cases.

Reports: When a user executes /report, the case is sent to a centralized GUI (/reports). Moderators can "claim" the report (to prevent two staff members from handling the same issue), teleport to the scene, or archive it with a click.

Reference

Commands List

Command Alias Description
/staff /mod, /sm Toggles moderation mode. Saves and restores state.
/vanish /v Hides or reveals the player visually and from the tablist.
/freeze <player> /ss Immobilizes the player and activates the private review chat.
/reports - Opens the active reports management GUI.
/report <player> <reason> - Player command. Sends a report to the staff team.
/notes <player> /nota Opens the notes and disciplinary history interface for a player.
/staffchat <message> /sc Sends a message to the team's private channel. Supports cross-server.
/craftersstaff reload /cs reload Reloads YAML files without needing a server restart.

Security

Permission Nodes

All commands and actions are protected by granular permissions so you can assign exact hierarchies (e.g., Helper, Mod, Admin).

Permission Granted Access
craftersstaff.admin Total access. Allows reloading the plugin and managing everything.
craftersstaff.staff Allows using /staff and receiving general alerts.
craftersstaff.vanish Allows using the /vanish command.
craftersstaff.vanish.see Allows seeing other staff members who are hidden.
craftersstaff.freeze Allows freezing and unfreezing suspicious players.
craftersstaff.reports.view Allows opening the reports GUI and receiving new report alerts.
craftersstaff.notes.edit Allows creating, editing, and deleting player notes.
craftersstaff.chat Allows reading and writing in the Staff Chat (/sc).

Customization

config.yml Example

The configuration is designed to be intuitive and predictable. Here is a glimpse of the key options available in the plugin's core:

# Global CraftersStaff Configuration
database:
  type: H2 # Options: H2, MYSQL
  mysql:
    host: "localhost"
    port: 3306
    database: "server_db"
    user: "root"
    password: ""

staff-mode:
  # Should staff automatically enter Vanish when enabling Staff Mode?
  auto-vanish: true
  # Saves inventory to the database to prevent absolute loss
  secure-inventory-save: true
  
freeze:
  # Commands that a frozen player IS allowed to execute
  allowed-commands:
    - "/msg"
    - "/r"
    - "/helpop"
  
network:
  # Enable support for proxy networks
  bungee-mode: false
  # Synchronize Staff Chat between servers connected to the same DB
  sync-staffchat: true

For Developers

Developer API

CraftersStaff provides a robust API for developers to interact with the Staff Mode, Vanish, and Freeze systems. You can access the API statically through the CraftersStaffAPI class.

Maven Repository

<repository>
    <id>crafters-repo</id>
    <url>https://repo.craftersdevelopment.net/releases</url>
</repository>

<dependency>
    <groupId>net.craftersdevelopment</groupId>
    <artifactId>CraftersStaff-API</artifactId>
    <version>8.5.9</version>
    <scope>provided</scope>
</dependency>

API Examples

Here are some common examples of how to utilize the API within your own plugins.

import com.craftersstaff.api.CraftersStaffAPI;
import org.bukkit.entity.Player;

public class StaffHook {

    // Check if a player is currently in Staff Mode
    public boolean isStaffMode(Player player) {
        return CraftersStaffAPI.isStaffMode(player.getUniqueId());
    }

    // Check if a player is currently Vanished
    public boolean isVanished(Player player) {
        return CraftersStaffAPI.isVanished(player.getUniqueId());
    }

    // Check if a player is currently Frozen
    public boolean isFrozen(Player player) {
        return CraftersStaffAPI.isFrozen(player.getUniqueId());
    }

    // Broadcast a network-wide alert to all staff members
    public void alertStaff(String message) {
        CraftersStaffAPI.sendNetworkAlert(message);
    }
}

Events

You can also listen to custom events such as StaffModeChangeEvent, StaffVanishEvent, PlayerFreezeEvent, and PlayerUnfreezeEvent.

import com.craftersstaff.api.events.StaffModeChangeEvent;

@EventHandler
public void onStaffMode(StaffModeChangeEvent event) {
    Player player = event.getPlayer();
    if (event.isEnteringStaffMode()) {
        player.sendMessage("You entered Staff Mode!");
    } else {
        player.sendMessage("You left Staff Mode!");
    }
}