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.
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)
- Download the latest version of
CraftersStaff.jar. - Place the file inside your server's
plugins/folder. - Start the server to generate the
plugins/CraftersStaff/configuration folder. - By default, the plugin uses an embedded local database (H2). It is ready to use!
For networks (Velocity / BungeeCord)
- Place
CraftersStaff.jarin theplugins/folder of all your backend servers (Spigot/Paper). - Optionally, place it in your Proxy (Velocity/BungeeCord) to enable network-wide alerts (Global Staff Chat).
- In the
config.ymlfile of each backend server, configure your MySQL credentials. Make sure all servers point to the same database. - Set
bungee-mode: trueorvelocity-mode: trueaccordingly. - 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!");
}
}