Most ordinary servers need the same basics: commands for players, permissions, land protection, a record of who broke what, and a building tool. Here's a set of proven plugins that have been maintained for years, and for each one the essentials: what it's for, where to download it, what to set right after installing it, and which commands and permissions it uses.
What you'll need
- A Minecraft server of type Paper or Purpur (most of these plugins don't work on Folia)
- Plugin installation covered in the guide Installing plugins
- Operator rights for yourself, see First start
- About 30 minutes to install and set up the whole set
The basic set by server type#
| Plugin | What for | Server with friends | Public survival | Minigames, lobby | Creative |
|---|---|---|---|---|---|
| EssentialsX (+ Chat, Spawn) | Homes, teleports, warps, spawn, messages, kits | Yes | Yes | Spawn and chat | Yes |
| LuckPerms | Groups and permissions | Optional | Yes | Yes | Yes |
| Vault or VaultUnlocked | Connects plugins (economy, prefixes) | As a dependency | Yes | Yes | Yes |
| WorldEdit | Bulk building and terrain editing | Optional | For staff | Yes | Yes |
| WorldGuard | Land protection (spawn, arenas) | Spawn protection | Yes | Yes | Yes |
| CoreProtect | Change log and grief rollback | Yes | Yes | Optional | Yes |
| Chunky | World pre-generation | Yes | Yes | No | Optional |
| Geyser + Floodgate | Bedrock players (mobile, consoles) | As needed | Optional | Optional | Optional |
| spark | Finding the causes of lag | Part of Paper | Part of Paper | Part of Paper | Part of Paper |
Install them one at a time, not all at once. After each plugin, restart the server and check the console. If something breaks, you'll know which plugin caused it.
EssentialsX#
What it does: a set of dozens of useful commands. It gives players homes (/home), teleport requests (/tpa), warps, private messages and a return to their death point (/back). It gives your staff temporary bans, mutes, vanish, kits and an economy.
Where to download: in the Plugins tab › Browse (Modrinth), or at essentialsx.net/downloads.html (opens in a new window). EssentialsX is made of modules, each one a separate file:
| Module | What it adds | Recommendation |
|---|---|---|
| EssentialsX | The core, all the main commands | Required by all other modules |
| EssentialsX Chat | Chat format with LuckPerms prefixes, local chat by distance | Yes, if you want prefixes |
| EssentialsX Spawn | The /spawn and /setspawn commands, spawn for new players, starter kit | Yes |
| EssentialsX Protect | Configurable protection against some events (explosions, fire) | Only if you don't use WorldGuard |
| EssentialsX AntiBuild | Blocks building based on permissions | Usually not needed |
| EssentialsX Discord | Links the server chat with Discord | Optional |
| EssentialsX GeoIP | Looks up a player's country from their IP address | Optional |
Dependencies: none required. It needs Vault for an economy shared with other plugins and for prefixes.
Version support
EssentialsX 2.22.0 (May 2026) is actively developed for Minecraft 26.1.2. Older versions (for example 1.21.11 or 1.20.6) are supported with lower priority (as of October 1, 2026). Releases for newer Minecraft versions come out with a delay. If the catalog doesn't offer it for your version, it hasn't been released yet. EssentialsX doesn't work on Folia.
First EssentialsX setup#
The settings are in plugins/. Edit it while the server is stopped. The most important options:
| Setting | What it does | Recommended value | When to change it |
|---|---|---|---|
locale | The language of the plugin's messages. In the default file the line is commented out (#locale: en), so remove the hash. | cs | en if your players speak English |
teleport-delay | How many seconds pass before a teleport (/home, /spawn, /tpa) happens. If the player moves or gets hit, the teleport is canceled. | 3 on survival (default 0) | 0 on servers without PvP |
teleport-cooldown | How many seconds must pass between two teleports. | 5–30 (default 0) | Higher if players abuse teleports to escape fights |
sethome-multiple | Number of homes per home group. Defaults are default: 3, vip: 5, staff: 10. A player needs the essentials. permission plus essentials.. | Depends on your server | When you want different numbers or another group |
spawn-on-join | Whether the player appears at spawn every time they join. | false | true for lobbies and minigames |
newbies.spawnpoint | Where a new player appears. The default newbies = the spawn set with /setspawn newbies, none = the world spawn. | newbies and set it with /setspawn newbies, or none | If newcomers don't need a special spot, set none |
newbies.kit | The kit a new player gets on first join. Default tools. An empty '' turns it off. | '' or your own kit | When you want starter gear |
newbies.announce-format | The welcome message for new players. | Your own text in your players' language | '' turns it off |
chat.format | The chat message format (only with the EssentialsX Chat module). {DISPLAYNAME} already includes the LuckPerms prefix. | '<{DISPLAYNAME}> {MESSAGE}' (default) | For a custom look, for example '{DISPLAYNAME}&7:&r {MESSAGE}' |
chat.radius | How many blocks away chat can be heard. 0 = the whole server. | 0 | Roleplay servers |
ops-name-color | The color of operators' names (code 0–9, a–f). | 'none' (off) if you use prefixes | Keep '4' (dark red) if you don't have prefixes |
auto-afk | After how many seconds of inactivity a player is marked AFK. Needs the essentials.afk.auto permission. | 300 (default) | -1 turns it off |
starting-balance | The starting balance of new players in the EssentialsX economy. | 0 | When you want starting money |
currency-symbol | The currency symbol. The file must be saved as UTF-8. | '$' or your own | For a custom currency |
An example edit of part of the file:
locale: cs
teleport-delay: 3
teleport-cooldown: 10
sethome-multiple:
default: 2
vip: 5
staff: 10locale: cs– messages will be in Czech.teleport-delay: 3– the teleport happens after three seconds of standing still.teleport-cooldown: 10– the next teleport is possible after ten seconds at the earliest.sethome-multiple– players with theessentials.permission get 2 homes, and with the extrasethome. multiple essentials.permission 5 homes.sethome. multiple. vip
You set the spawn in the game: stand where the spawn should be and type /setspawn. Kits are defined in plugins/, where each kit has a delay (the time between uses in seconds, -1 = only once) and a list of items.
Useful EssentialsX commands#
| Command | What it does | Permission |
|---|---|---|
/sethome [name] | Saves a home at your current location | essentials.sethome |
/home [name] | Teleports you home | essentials.home |
/delhome <name> | Deletes a home | essentials.delhome |
/spawn | Teleports you to spawn (Spawn module) | essentials.spawn |
/tpa <player> | Asks to teleport to a player | essentials.tpa |
/tpaccept / /tpdeny | Accepts or denies a request | essentials.tpaccept / essentials.tpdeny |
/back | Returns you to your previous location | essentials.back |
/warp <name> | Teleports you to a warp; without a name it lists them | essentials.warp, essentials.warp.list |
/setwarp <name> | Creates a warp (staff) | essentials.setwarp |
/msg <player> <message> | Private message | essentials.msg |
/kit [name] | Gives a kit | essentials.kit + essentials.kits.<kit> |
/tempban <player> <time> [reason] | Temporary ban, e.g. /tempban Steve 3d spam | essentials.tempban |
/mute <player> [time] [reason] | Mutes a player | essentials.mute |
/vanish | Makes you invisible to other players | essentials.vanish |
/invsee <player> | Shows a player's inventory | essentials.invsee |
/seen <player> | When the player was last online | essentials.seen |
Times are written as 30m, 12h, 3d, 1w or 1mo. A complete split of permissions into groups is in the article LuckPerms.
LuckPerms#
What it does: manages groups (player, VIP, moderator, admin) and permissions for the commands of all your other plugins. Without it you only have two levels: player and operator.
Where to download: the Plugins tab (Modrinth), or luckperms.net/download (opens in a new window).
Setup: covered in detail in a separate article, LuckPerms: groups and permissions.
Vault (or VaultUnlocked)#
What it does: nothing on its own. It's a bridge that plugins use to share economy, permissions and prefixes. Thanks to it, EssentialsX Chat can show a prefix from LuckPerms, or a shop plugin can work with EssentialsX money.
Where to download: the original Vault is on dev.bukkit.org and SpigotMC (the Vault project). In the Modrinth and Hangar catalogs you'll find VaultUnlocked, a maintained fork its authors describe as a drop-in replacement for Vault. Install only one of them.
When you need it: when another plugin lists it as a dependency (the console then shows Unknown/missing dependency plugins: [Vault]), or when you want LuckPerms prefixes in chat.
Check: after a restart, type vault-info in the console. The output shows which plugin provides the economy, permissions and chat.
WorldEdit#
What it does: bulk world editing: filling an area with blocks, replacing one block with another, copying builds, shaping terrain. It saves hours of work when building a spawn or arenas.
Where to download: the Plugins tab (Modrinth or Hangar), or enginehub.org/worldedit (opens in a new window).
Selecting an area: type //wand to get a wooden axe. Left-click a block to mark the first corner, right-click for the second. The area is the box between them.
| Command | What it does |
|---|---|
//wand | Gives you the selection tool (a wooden axe) |
//pos1, //pos2 | Marks a corner where you're standing |
//set <block> | Fills the selection with a block, e.g. //set stone |
//replace <from> <to> | Replaces blocks, e.g. //replace dirt grass_block |
//walls <block> | Builds walls around the selection (no floor or ceiling) |
//copy, //paste | Copies the selection and pastes it where you are |
//undo | Undoes the last action (//undo 5 undoes five actions) |
//redo | Redoes an undone action |
Blocks are written with their Minecraft names (stone, oak_planks, grass_block). To mix blocks in a ratio, write something like //set 50%stone,50%cobblestone.
Permissions: worldedit.* gives everything. Only give it to staff you trust, because a single command can overwrite a huge part of the world. Individual permissions include worldedit.wand, worldedit.region.set and worldedit.history.undo.
Large edits put load on the server
Operations on millions of blocks can stall the server for a moment. Do big edits when few players are online. WorldEdit only remembers each player's last 15 actions (configurable) and the history is cleared some time after logout. Don't rely on //undo as a backup.
WorldGuard#
What it does: protects chosen areas (regions). In a region you can stop other players from building and turn off PvP, creeper explosions, fire or mob spawning. It typically protects the spawn, lobby and arenas.
Where to download: the Plugins tab, or enginehub.org/worldguard (opens in a new window).
Dependencies: it needs WorldEdit (areas are selected with it).
Protecting the spawn step by step#
In the game, type
//wandand mark two opposite corners of the spawn (left and right click). To make the region cover the full height, expand the selection with//expand vert.Create the region:
In-game chattext /rg define spawnThis creates the region
spawn. From now on, only its owners and members (nobody yet) can build in it.Set the rules (flags):
In-game chattext /rg flag spawn pvp deny /rg flag spawn creeper-explosion deny /rg flag spawn mob-spawning deny /rg flag spawn greeting Welcome to spawn!pvp deny– players can't hurt each other at spawn.creeper-explosion deny– creeper explosions don't destroy blocks.mob-spawning deny– mobs don't spawn at spawn.greeting …– a message shown when entering the region.
Add the staff members who are allowed to build at spawn:
In-game chattext /rg addmember spawn <NICK>Instead of a name, you can add a whole LuckPerms group with the
g:prefix, for example/rg addmember spawn g:admin.Check the region with
/rg info spawn.
| Flag | What it affects |
|---|---|
build | Everything: placing, breaking and using blocks. Setting it to deny blocks all of it. |
block-break, block-place | Only breaking, or only placing blocks |
use | Doors, levers, buttons (not chests) |
chest-access | Access to chests and other inventories |
pvp | Fights between players |
tnt, creeper-explosion, other-explosion | TNT, creeper and other explosions |
mob-spawning | Natural mob spawning |
fire-spread, lava-fire | Fire spreading and lava setting things alight |
entry, exit | Entering and leaving the region |
greeting, farewell | Message on entry and on exit |
You remove a flag by entering it without a value: /rg flag spawn pvp. To set a flag only for non-members, use the -g switch: /rg flag spawn -g nonmembers chest-access deny.
Protecting the whole world#
The special region __global__ covers the whole world. If you want only your staff to build anywhere in the world (for example in a creative lobby), use:
/rg flag __global__ passthrough denyThen only owners and members of the global region (/rg addmember __global__ g:admin) can build, plus members of other regions inside those regions. The WorldGuard documentation explicitly advises against setting the build flag on __global__, because it also breaks pistons and other mechanics.
Operators bypass protection
Operators and players with the * permission automatically bypass protection. The region then looks like it isn't working. Always test protection with an account that isn't an op.
Permissions: for staff, worldguard.region.* (all region commands). Regular players don't need any WorldGuard permissions.
CoreProtect#
What it does: logs every change in the world: who placed or broke a block, who took what from a chest, who killed what. When someone wrecks a build (griefing), you find out who did it and roll the changes back without restoring a whole backup.
Where to download: the Plugins tab (Modrinth or Hangar), documentation at docs.coreprotect.net (opens in a new window).
Important: CoreProtect only logs what happened after it was installed. Install it right at the start.
CoreProtect commands#
| Command | What it does |
|---|---|
/co inspect (short /co i) | Turns on the inspector. Click a block to see its history. The same command turns it off. |
/co lookup <parameters> (/co l) | Searches for changes by parameters |
/co rollback <parameters> (/co rb) | Rolls back changes by parameters |
/co restore <parameters> (/co rs) | Reverses a rollback (puts the changes back) |
/co undo | Undoes the last rollback or restore |
/co near | Changes within 5 blocks |
/co purge t:<time> | Deletes old data (at least 30 days in game, at least 24 hours from the console) |
/co status | Plugin version and status |
| Parameter | Meaning | Example |
|---|---|---|
u:<player> | One or more players | u:Steve or u:Steve,Alex |
t:<time> | How far back in time | t:2h, t:3d, t:1w |
r:<radius> | Radius in blocks around you. r:#global = the whole server, r:#worldedit (short r:#we) = the WorldEdit selection | r:30 |
a:<action> | Only a certain kind of action | a:-block (broken blocks), a:+block (placed) |
i:<blocks> / e:<blocks> | Only these blocks / all except these blocks | i:diamond_ore, e:tnt |
#preview | The rollback only shows what it would do, nothing changes | /co rollback u:Steve t:1h r:20 #preview |
Rolling back grief step by step#
- At the damaged spot, type
/co inspectand click the broken area. You'll see who changed it and when. Turn the inspector off with the same command. - Look at the extent:
/co lookup u:<NICK> t:1d r:30. - Try a dry-run rollback:
/co rollback u:<NICK> t:1d r:30 #preview. - If the preview looks right, run the real rollback:
/co rollback u:<NICK> t:1d r:30. - If you rolled back more than you wanted, use
/co undo.
CoreProtect settings#
The plugins/ file:
| Setting | What it does | Recommended value | When to change it |
|---|---|---|---|
default-radius | The default search radius when you don't enter r: | 10 (default) | Larger for big builds |
max-radius | The largest allowed radius (except #global) | 100 (default) | Lower it if you want to protect performance |
rollback-items | Whether a rollback also restores items in chests | true | Almost never |
rollback-entities | Whether a rollback also restores killed entities (such as animals) | true | Almost never |
player-messages | Logs chat messages | true | false if you don't want to store chat |
player-commands | Logs player commands | true | false to save space |
hopper-transactions | Logs items moved by hoppers | true | false on servers with big farms (less data) |
CoreProtect stores its data in a database in the plugins/CoreProtect folder. On big servers the data grows quickly, so delete old records with /co purge t:30d, or switch to MySQL as described in the article MySQL for plugins.
Permissions: coreprotect.inspect, coreprotect.lookup, coreprotect.rollback, coreprotect.restore, coreprotect.purge, or everything with coreprotect.*. By default only operators have them.
Chunky#
What it does: generates the world ahead of time up to a chosen radius. Generating new chunks is the most demanding thing a server does. When it's done in advance, players don't feel lag while exploring.
Where to download: the Plugins tab (Modrinth or Hangar).
Basic use (from the console):
chunky center 0 0
chunky radius 3000
chunky startchunky center 0 0– the center of the area at X = 0 and Z = 0. In the game you can type just/chunky centerand the center will be where you're standing.chunky radius 3000– a radius of 3,000 blocks from the center.chunky start– starts generating. Progress is shown in the console,chunky pausepauses it andchunky continueresumes it.
Before you start, check your free disk space and set a world border. The full procedure is in the article Performance and optimization.
Geyser and Floodgate#
What it does: Geyser lets Bedrock Edition players (phones, consoles, the Windows version from the Microsoft Store) join a Java server. Floodgate is an add-on that means Bedrock players don't need to sign in with a Java account.
Where to download: geysermc.org/download (opens in a new window).
Setup: Geyser needs a UDP port (19132 by default), which you add in the Network tab at StormHost. The full procedure is in the article Crossplay with Bedrock.
spark#
What it does: a profiler that shows exactly what's loading the server's CPU (a plugin, a type of entity, a farm). It's the most reliable way to find the cause of lag.
Where to download: Paper has included it since version 1.21, so you don't need to install it. On Fabric and NeoForge it's installed as a mod.
Basic use: spark tps shows the server's performance, spark profiler start --timeout 600 runs a ten-minute measurement and prints a link to a clear report at the end. How to read the report is explained in the article Performance and optimization.
Plugins to avoid#
- Plugins promising to “remove lag” by regularly deleting items on the ground, killing mobs or disabling mechanics. They hide the symptom, not the cause, and they delete players' stuff. Find the cause with spark instead.
- Unmaintained plugins. If the latest version came out for a Minecraft release several years old, the plugin most likely doesn't work with the new version or has security holes. Check the date of the last update and the supported versions.
- Several plugins for the same thing. Two permission plugins, two land protection plugins or two economies fight each other. For permissions, use only LuckPerms (not the older PermissionsEx or GroupManager alongside it).
- “Cracked” and “leaked” paid plugins. They often contain code that gives an attacker control of your server.
- Plugins from unknown websites. Download from catalogs (Modrinth, Hangar, SpigotMC) or from the authors' official pages.
Verification#
- After installing all the plugins, restart the server and type
pluginsin the console. All plugins should be in the list (green in the game). - Go through the console from the start and look for
ERRORorWARNlines from individual plugins. - Test the basic commands with an account that isn't an op:
/sethome,/home,/spawnand building on the protected spawn.
Troubleshooting#
/spawn says unknown command#
The EssentialsX Spawn module is missing. Install it (on Modrinth it's a separate project) and restart the server.
Players can't use /home or /tpa#
Players are missing permissions. On a server with LuckPerms, give them to the default group, see LuckPerms. You can check it with lp user <NICK> permission check essentials.home.
WorldGuard won't load: Unknown/missing dependency plugins: [WorldEdit]#
WorldEdit is missing. Install it; both plugins must support your Minecraft version.
The region doesn't protect anything, players build in it#
- You're testing as an operator, or the player has the
*orworldguard.permission. Try with an account that isn't an op.region. bypass… - The player is a member of the region. Check with
/rg info <region>. - The selection didn't cover the full height. Redefine the region with
//expand vertand/rg redefine <region>.
Region members can't build near spawn#
Besides WorldGuard, Minecraft itself protects the area around spawn with the spawn-protection option (a default radius of 16 blocks where only operators can build). If you protect your spawn with WorldGuard, go to the Server properties tab › Players, set Spawn protection to 0 and save with a restart. The option only applies when there's at least one operator on the server.
CoreProtect says it found no data for a block#
The change happened before CoreProtect was installed, or logging for that action is turned off in config.yml. Older changes can only be undone from a backup.
The LuckPerms prefix doesn't show in chat#
Vault (VaultUnlocked) or EssentialsX Chat is missing. After installing both, check the output of vault-info.
The plugin hasn't been released for your Minecraft version yet#
The catalog won't offer it for your version, and an older version uploaded by hand may fail. Wait for an update, or keep the server on a version the plugin supports, see Changing the version and software.
Summary
- The basis of most servers: EssentialsX (+ Chat, Spawn), LuckPerms, Vault, WorldEdit, WorldGuard and CoreProtect.
- Install them one at a time and check the console after each plugin.
- Set up EssentialsX right away: the language (
locale), the teleport delay and the number of homes. - WorldGuard needs WorldEdit. Test protection without op.
- CoreProtect only logs from the moment it's installed, so put it on the server right at the start.
- spark is part of Paper. Avoid plugins that promise to “remove lag”.