/ deep dives
Complete guides for the tools every server admin needs. Click a lesson below or scroll through.
LuckPerms is the industry-standard permission plugin for Minecraft. Every serious server uses it. This guide covers every command you'll ever need.
First install: drop the LuckPerms jar in your plugins folder, restart the server. That's it. The plugin works out of the box with sensible defaults.
| Command | What It Does |
|---|---|
/lp creategroup <name> | Create a new permission group (e.g. Member, Mod, Admin) |
/lp deletegroup <name> | Permanently delete a group |
/lp listgroups | List all existing groups on the server |
/lp group <group> info | View all info about a group — permissions, parents, meta |
/lp group <group> setdisplayname <name> | Set a display name shown in tab/list (supports color codes) |
/lp group <group> setweight <number> | Higher weight = higher priority when a player has multiple groups |
| Command | What It Does |
|---|---|
/lp group <group> permission set <node> true | Grant a permission to a group |
/lp group <group> permission set <node> false | Explicitly deny a permission (overrides parent groups) |
/lp group <group> permission unset <node> | Remove a permission entry |
/lp group <group> permission clear | Remove ALL permissions from a group (use carefully) |
/lp group <group> permission info | List all permissions a group has |
/lp user <player> permission set <node> true | Grant a permission directly to a specific player (overrides group) |
/lp user <player> permission info | See all permissions a specific player has (includes inherited) |
| Command | What It Does |
|---|---|
/lp group <child> parent add <parent> | Make child group inherit all permissions from parent group |
/lp group <child> parent remove <parent> | Remove inheritance link |
/lp group <child> parent info | Show all parent groups this group inherits from |
Example: /lp group Mod parent add Member — Mods inherit all Member permissions automatically.
| Command | What It Does |
|---|---|
/lp user <player> parent add <group> | Add a player to a group (they inherit all its permissions) |
/lp user <player> parent remove <group> | Remove a player from a group |
/lp user <player> parent set <group> | Set a player's ONLY group (removes all others) |
/lp user <player> parent info | List all groups a player belongs to |
/lp user <player> promote <track> | Promote player to next group on a track |
/lp user <player> demote <track> | Demote player to previous group on a track |
| Command | What It Does |
|---|---|
/lp user <player> parent add <group> <duration> | Add to a group temporarily (e.g. 7d, 24h, 30m) |
/lp user <player> permission set <node> true <duration> | Grant a permission for a limited time |
/lp user <player> permission expirecheck | Check when a temp permission expires |
Duration format: 30m (30 minutes), 2h (2 hours), 7d (7 days), 1mo (1 month).
| Command | What It Does |
|---|---|
/lp createtrack <name> | Create a new promotion track |
/lp track <track> append <group> | Add a group to the end of the track |
/lp track <track> insert <group> <position> | Insert a group at a specific position (1 = first) |
/lp track <track> remove <group> | Remove a group from the track |
/lp track <track> info | Show the full track order |
Example — create a staff track: /lp createtrack staff, then /lp track staff append Helper, /lp track staff append Mod, /lp track staff append Admin. Then promote with /lp user PlayerName promote staff.
Permissions can be scoped to specific worlds, servers, or times. This is incredibly powerful:
| Command | What It Does |
|---|---|
/lp group <g> permission set <node> true server=<name> | Permission only applies on a specific proxy server |
/lp group <g> permission set <node> true world=<name> | Permission only applies in a specific world |
/lp user <p> permission set <node> true server=<s> world=<w> | Combine contexts for precise control |
Example: give fly only in the hub world: /lp group Member permission set essentials.fly true world=hub
| Command | What It Does |
|---|---|
/lp group <g> meta setprefix <value> | Set prefix shown before player name (supports & color codes) |
/lp group <g> meta setsuffix <value> | Set suffix after player name |
/lp group <g> meta add <key> <value> | Add custom metadata (used by other plugins) |
/lp group <g> meta remove <key> | Remove metadata entry |
/lp group <g> meta info | View all metadata for a group |
Color code example: &a[Member]&r shows a green [Member] prefix. Use /lp group Member meta setprefix "&8[&aMember&8]&r "
| Command | What It Does |
|---|---|
/lp user <player> checkpermission <node> | Check why a player has or doesn't have a permission — shows the source group |
/lp verbose on | Toggle permission check logging — see every permission check in real-time in console |
/lp verbose record <player> | Record all permission checks for a player, then replay with /lp verbose replay |
/lp search <query> | Search all groups and users for a permission node |
/lp sync | Force-sync permissions across all servers (if using a messaging service) |
/lp info | View LuckPerms version, storage type, and server info |
/lp reload | Reload config files without restarting the server |
| Plugin | Node | Effect |
|---|---|---|
| EssentialsX | essentials.fly | Allow /fly |
| EssentialsX | essentials.gamemode | Allow /gamemode |
| EssentialsX | essentials.ban | Allow /ban |
| EssentialsX | essentials.kick | Allow /kick |
| EssentialsX | essentials.warp | Allow using warps |
| CoreProtect | coreprotect.inspect | Allow /co inspect |
| CoreProtect | coreprotect.rollback | Allow /co rollback |
| WorldEdit | worldedit.* | All WorldEdit commands |
| WorldGuard | worldguard.region.define | Create regions |
| GriefPrevention | griefprevention.claim | Allow claiming land |
| Vault | vault.* | Economy/admin commands |
DiscordSRV bridges your Minecraft server and Discord server. Chat sync, status updates, console alerts, and more.
plugins/DiscordSRV/config.ymlconfig.yml under BotToken: "your-token-here"/discordsrv reload on your Minecraft server/discordsrv link to link your Minecraft account to DiscordIn config.yml, find the DiscordChannels section. Set Discord channel IDs for each function:
To get a channel ID, enable Developer Mode in Discord settings (Advanced → Developer Mode), then right-click a channel → Copy ID.
| Command | What It Does |
|---|---|
/discordsrv link | Link your Minecraft account to Discord |
/discordsrv unlink | Unlink your accounts |
/discordsrv reload | Reload config without restart |
/discordsrv status | Check if DiscordSRV is connected to Discord |
/discordsrv broadcast <msg> | Send a message to the linked Discord channel from in-game |
/discordsrv toggledeathmessages | Toggle death message sync for yourself |
Set up specific events to post to your staff channel:
You can run Minecraft commands from Discord using /console <command> if the bot has admin. Great for checking server status, running backups, or whitelisting players from your phone.
A custom Discord bot can do way more than DiscordSRV — verification, suggestions, moderation, server status, custom commands, and anything else you can code.
In the OAuth2 → URL Generator tab:
Basic setup with discord.js (most popular library):
Never hardcode tokens or server IDs. Use environment variables or a config file:
⚠️ Add .env to your .gitignore so you never commit your bot token to GitHub.
| Feature | How |
|---|---|
| Server Status | Ping your MC server IP using minecraft-status npm package or the mcsrvstat.us API |
| Verification | Generate a code, have player run /verify <code> in-game, assign Discord role on success |
| Suggestions | Post submitted suggestions to a channel with embed and upvote/downvote reactions |
| Moderation Logs | Use Discord audit logs + bot events to log kicks/bans/message deletes to a private channel |
| Custom Commands | Slash commands like /rules, /server-ip, /apply — useful for FAQ-style info |
| Whitelist via Discord | Button-click whitelisting — user clicks a button, bot sends a command to MC server via RCON |
Slash commands are the modern standard. Register them with Discord's API:
pm2 so it auto-restartsscreen session or PM2Making your server run buttery smooth — from JVM flags to chunk loading. Every trick in the book.
Not all Minecraft server JARs are equal:
Don't use: Vanilla (no optimization), CraftBukkit (outdated), Spigot (Paper is strictly better).
These JVM arguments control how Java manages memory. Bad flags = lag. Good flags = smooth server:
Explanation of key flags:
-Xms4G -Xmx4G — allocate 4GB initial and max (set these EQUAL, never different)UseG1GC — Garbage-First collector, best for Minecraft (replaces CMS)MaxGCPauseMillis=200 — target max 200ms for garbage collection pausesAlwaysPreTouch — allocate memory at startup instead of as needed (more consistent performance)DisableExplicitGC — prevents plugins from triggering full GC cycles (those freeze the server)MaxTenuringThreshold=1 — moves objects out of survivor space faster, reduces GC overheadMemory rule of thumb: For 1-10 players, 2GB is fine. 10-30 players: 4GB. 30-80 players: 6-8GB. Never allocate more than 12GB without switching to ZGC.
Spark is the #1 tool for diagnosing lag. Install it, and when your server lags, run these:
| Command | What It Does |
|---|---|
/spark profiler start | Start recording CPU usage. Run this for 30-60 seconds during lag |
/spark profiler stop | Stop and get a link to a detailed flamegraph showing exactly what code is using CPU |
/spark health | Quick health report — CPU, memory, TPS, and disk usage |
/spark tps | Show TPS (ticks per second) history — 20.0 is perfect, below 18 is lagging |
/spark gc | Show garbage collection stats — frequency and duration of GC pauses |
/spark heap | Show memory usage breakdown by plugin/feature |
/spark view | Open the web viewer for an active profiler session |
In server.properties, these settings have the biggest impact on performance:
| Setting | Recommended | Why |
|---|---|---|
view-distance | 6-8 | Lower = fewer chunks loaded = less CPU/RAM usage. Default 10 is heavy. |
simulation-distance | 4-6 | How far entities and redstone work. Lower = huge performance gain. |
max-tick-time | -1 | Disable the watchdog crash timer. It force-kills the server if a tick takes too long. |
network-compression-threshold | 256 | Compresses network packets above this size. 256 is a good balance. |
max-players | -1 | Don't limit by server.properties — use a plugin instead for better control. |
/chunky radius 500, then /chunky starthopper-amount: 1 in paper.ymlentity-activation-range in paper.yml makes mobs inactive when players are far awayEssentialsX is the swiss-army knife of Minecraft server plugins. Every command you need for moderation, economy, teleportation, and player utilities.
| Command | What It Does |
|---|---|
/home | Teleport to your home |
/sethome | Set your home location |
/delhome <name> | Delete a named home |
/tpa <player> | Request to teleport to a player |
/tpahere <player> | Request a player teleport to you |
/tpaccept | Accept a teleport request |
/tpdeny | Deny a teleport request |
/warp <name> | Teleport to a warp point |
/setwarp <name> | Create a warp point (admin) |
/delwarp <name> | Delete a warp (admin) |
/back | Teleport to your last location (death or teleport) |
/spawn | Teleport to the spawn point |
/setspawn | Set the server spawn point |
| Command | What It Does |
|---|---|
/bal | Check your balance |
/pay <player> <amount> | Pay another player |
/eco give <player> <amount> | Give money to a player (admin) |
/eco take <player> <amount> | Take money from a player (admin) |
/eco set <player> <amount> | Set a player's balance (admin) |
/baltop | Show the server's richest players |
| Command | What It Does |
|---|---|
/kick <player> [reason] | Kick a player from the server |
/ban <player> [reason] | Ban a player permanently |
/tempban <player> <duration> [reason] | Temporarily ban a player |
/unban <player> | Unban a player |
/mute <player> [duration] | Mute a player in chat |
/unmute <player> | Unmute a player |
/warn <player> [reason] | Warn a player (stored in their record) |
/clearinventory <player> | Clear a player's inventory |
/invsee <player> | View and edit a player's inventory |
/socialspy | Toggle seeing all private messages |
| Command | What It Does |
|---|---|
/msg <player> <message> | Send a private message |
/r <message> | Reply to the last player who messaged you |
/afk | Toggle away-from-key status |
/fly | Toggle flight mode (requires permission) |
/god | Toggle god mode (requires permission) |
/hat | Put the item in your hand on your head |
/top | Teleport to the highest block at your position |
/seen <player> | Check when a player was last online |
/list | List all online players |
| Command | What It Does |
|---|---|
/kit <name> | Claim a kit (if you have permission) |
/kit create <name> <delay> | Create a new kit with your current inventory (delay in seconds) |
/kit remove <name> | Delete a kit |
/kit list | List all available kits |
Example: stand with the items you want in your inventory, run /kit create starter 86400 — creates a starter kit with 24-hour cooldown.
A well-designed spawn area sets the tone for your entire server. Here's how to build and protect it.
/setspawn (EssentialsX) — this sets the exact teleport point/spawn to test it| Command | What It Does |
|---|---|
/mv create <name> normal | Create a new overworld world |
/mv create <name> nether | Create a new nether world |
/mv create <name> end | Create a new end world |
/mv tp <world> | Teleport to a world |
/mv list | List all worlds |
/mv setspawn | Set spawn for a specific world |
/mv import <name> normal | Import an existing world folder |
Example: /mv create creative normal — creates a creative world. Players can switch with /mv tp creative.
| Command | What It Does |
|---|---|
/region define spawn | Create a region named "spawn" (use WorldEdit wand to select area first) |
/region flag spawn pvp deny | Disable PvP in spawn |
/region flag spawn mob-spawning deny | No mobs in spawn |
/region flag spawn fire-spread deny | No fire spreading |
/region flag spawn explosion deny | No explosions (creeper/TNT) |
/region flag spawn build deny | Only allowed players can build |
/region flag spawn use deny | Block all interactions (doors, buttons, etc.) for non-members |
/region addmember spawn <group> | Allow a group to bypass spawn restrictions |
/setwarp survival, /setwarp creativeserver-icon.png in the server root folderProtect your server against griefers, hackers, and general chaos. These plugins and configurations will save you countless headaches.
CoreProtect logs every single block change on your server. When someone griefs, you can undo everything they did in seconds.
| Command | What It Does |
|---|---|
/co inspect | Toggle inspection mode — click any block to see its history |
/co rollback t:2h r:10 p:PlayerName | Rollback everything a player did in the last 2 hours within 10 blocks |
/co rollback t:24h a:+TNT_EXPLOSION | Restore all TNT explosion damage from the last 24 hours |
/co lookup u:PlayerName a:block-break | View every block a player has broken |
/co lookup u:PlayerName a:inventory | View all chest/furnace transactions by a player |
/co lookup t:7d r:100 | See all activity within 100 blocks in the last 7 days |
/co restore t:48h u:PlayerName | RESTORE (undo a rollback) — reverse a rollback if you made a mistake |
Time format: t:30m = 30 minutes, t:2h = 2 hours, t:1d = 1 day, t:7d = 7 days. Action prefixes: a:+block-break = what was broken, a:-block-place = what was placed.
Grim is the best free anti-cheat. It detects kill aura, fly, speed, scaffold, and dozens of other hacks with near-zero false positives.
| Command | What It Does |
|---|---|
/grim alerts | Toggle receiving violation alerts |
/grim profile <player> | View a player's detailed violation profile |
/grim verbose | Show all checks being tested in real-time |
/grim reload | Reload config |
| Command | What It Does |
|---|---|
/region define <name> | Create a region (select area with WorldEdit wand first) |
/region flag <region> <flag> <value> | Set a region flag (pvp, mob-spawning, build, etc.) |
/region addmember <region> <player> | Add a player as region member |
/region addowner <region> <player> | Add a region owner (can edit flags) |
/region remove <name> | Delete a region |
/region list | List all regions |
/region info <name> | View region details |
Example: /region flag spawn pvp deny — disables PvP in the spawn region.
| Flag | Values | What It Controls |
|---|---|---|
pvp | allow / deny | Can players fight each other? |
mob-spawning | allow / deny | Can mobs spawn naturally? |
explosion | allow / deny | Can TNT/creepers explode? |
fire-spread | allow / deny | Can fire spread? |
build | allow / deny | Can non-members build? |
use | allow / deny | Can non-members use doors/buttons/levers? |
sleep | allow / deny | Can players sleep in beds? |
enderpearl | allow / deny | Can ender pearls be thrown? |
vehicle-destroy | allow / deny | Can vehicles (boats/minecarts) be destroyed? |
greeting | text | Message shown when entering the region |
farewell | text | Message shown when leaving the region |
| Command | What It Does |
|---|---|
/ncp | Main NoCheatPlus info command |
/ncp reload | Reload NCP config |
/ncp player <player> | Check a player's violation levels |
More lessons coming as I write them. If there's something specific you want covered, open a ticket and yell at me.