Minecraft Game Modes
A good creative server gives builders space, powerful tools and a world that never gets in the way: no mobs, no weather, no surprise night. It also stops one huge WorldEdit command or one redstone clock from lagging everyone, and it never loses a build that took a hundred hours.
What you'll build: a Paper server with a plot world (or a free-build world), FastAsyncWorldEdit with safe limits per rank, terrain brushes, schematics, a showcase world for finished builds, ranks with exact LuckPerms commands, lag protection and a backup plan.
Time: 2–3 hours for the full setup.
You need: a Paper or Purpur server with 4–8 GB of memory (more for busy servers with big edits), access to the panel at game.crashcrafts.com, and the basics from Paper and Purpur servers. Never installed a plugin? Read Install plugins first.
Pick the layout
| Layout | How it works | Good for | Watch out for |
|---|---|---|---|
| One free-build world | A flat or void world where anyone builds anywhere, often with WorldGuard regions for protection. | A few trusted builders, build teams. | No automatic protection or limits per player. |
| Plot world | PlotSquared gives each player claimed plots on a grid with roads. Each plot is protected, can be merged, cleared and rated. | Public servers, build competitions. | Plot size is fixed when the world is created. |
| Several worlds | Multiverse-Core runs a plot world, a free-build world, a showcase world and a staff world side by side. | Larger servers. | More memory, more backups. |
Most public creative servers end up with several worlds: plots for everyone, a free-build world for trusted builders, and a showcase world for finished work. This guide builds that.
Plot plugin choice
PlotSquared is the standard plot plugin and integrates with FastAsyncWorldEdit. It's a paid download (about US$15) on SpigotMC. IntellectualSites publishes the source and release notes on GitHub, but the ready-made jar comes from the SpigotMC page. If you'd rather not pay, a free-build world with WorldGuard regions works well for smaller servers.
Server settings
Stop the server, then open server.properties on Files and set:
gamemode=creative
force-gamemode=true
difficulty=peaceful
spawn-monsters=false
pvp=false
spawn-protection=0
view-distance=8
simulation-distance=4
allow-flight=true
| Setting | Why |
|---|---|
force-gamemode=true |
Everyone is put back in creative when they join. |
difficulty=peaceful |
No hostile mobs, and no hunger. |
simulation-distance=4 |
Builders mostly look at their build, not machines far away. Lower simulation saves a lot of CPU. |
allow-flight=true |
Stops the server kicking builders for "flying". |
spawn-protection=0 |
Protection plugins handle spawn instead. |
Install the plugins
Install from Minecraft Plugins (or upload the jar on Files → plugins), one at a time, restarting after each and checking the console for errors.
| Plugin | Job | Price |
|---|---|---|
| LuckPerms | Ranks and permissions. | Free |
| FastAsyncWorldEdit (FAWE) | WorldEdit's commands, much faster on huge edits, history on disk, and per-rank limits. Install it instead of WorldEdit, never both. | Free |
| PlotSquared | Plot worlds. Needs FAWE (or WorldEdit). | Paid (SpigotMC) |
| Multiverse-Core | Extra worlds: free-build, showcase, staff. | Free |
| WorldGuard | Region protection for spawn, the showcase world and free-build areas. | Free |
| FastAsyncVoxelSniper | VoxelSniper's long-range brushes, running on FAWE. | Free |
| goBrush / goPaint (or BetterGoPaint) | Heightmap terrain brushes and texture painting. BetterGoPaint is a maintained fork of goPaint. | Free |
| Head Database | Thousands of decorative heads. A paid version on SpigotMC and a free project of the same name on Modrinth exist; pick one. | Varies |
| CoreProtect | Logs every block change so you can roll back griefing. | Free |
| EssentialsX | /spawn, /warp, /tp, /speed, nicknames. |
Free |
| Axiom Paper Plugin (optional) | Server side for Axiom, a client mod with a powerful in-game editor. Players need the Axiom mod (Fabric). | Free |
Arceon (advanced brushes, masks and noise patterns, by the goBrush author) is a paid plugin sold through the author's Patreon, and the author asks for permission before you run it on your own server. Only use it on that basis.
Check they loaded: run plugins in the Console. All should be green.
Create the plot world
Choose plot size and road width first
Plot size and road width are fixed once a world is generated. Changing them later means a new world and moving every build by schematic. Choose generously:
| Server type | Plot size | Road width | Notes |
|---|---|---|---|
| Casual public server | 48 × 48 | 7 | Room for a house and garden. |
| General builders | 64 × 64 | 7 | A common choice. Merge for bigger builds. |
| Serious builders, competitions | 100 × 100 or 128 × 128 | 7–9 | Big builds without merging. |
| Huge projects | 256 × 256 or more | 9 | PlotSquared supports very large plots. |
Merging is the escape hatch: ranks can combine neighbouring plots into one big plot (see step 7), so you don't need huge plots for everyone.
Option A: the main world as the plot world
Stop the server.
On Files, delete the
worldfolder (andworld_netherandworld_the_endon versions before 26.1). This removes the existing world.In
server.properties, setlevel-name=plotworld.At the bottom of
bukkit.yml, add:worlds: plotworld: generator: PlotSquaredStart. PlotSquared generates the plot grid.
Option B: an extra world with Multiverse-Core
Keep your main world (for example as a hub) and create the plot world in the console:
mv create plotworld normal --generator PlotSquared
Or run the guided wizard in-game with /plot setup and follow each prompt.
Set the plot world's layout
Plot world settings live in plugins/PlotSquared/config/worlds.yml. Stop the server before editing, and only change size and width before anyone has claimed plots. Our recommended layout:
worlds:
plotworld:
plot:
height: 62
size: 64
filling: minecraft:stone
floor: minecraft:grass_block
bedrock: true
biome: minecraft:plains
create_signs: true
wall:
height: 62
block: minecraft:smooth_stone_slab
block_claimed: minecraft:sandstone_slab
filling: minecraft:stone
place_top_block: true
road:
height: 62
width: 7
block: minecraft:quartz_block
flags: {}
home:
default: side
nonmembers: side
| Key | What it does |
|---|---|
plot.size |
Plot width and length in blocks. |
road.width |
Road width between plots. |
plot.height, road.height, wall.height |
Ground height. Keep all three the same. |
plot.floor / plot.filling |
Top block and the blocks below it. |
wall.block / wall.block_claimed |
Border block for unclaimed and claimed plots, so players see which plots are free. |
road.block |
The road surface. |
home.default |
Where /plot home puts you: side or center. |
Start the server again. Fly along a road to check the layout looks right.
Optional: plot and road schematics
- Road schematic: build one perfect road section and save it, so every road gets lamps, kerbs or trees. See PlotSquared's road schematic guide.
- Plot schematic on claim: paste a starter floor or border when a player claims a plot. In
worlds.yml, underschematic:, seton_claim: trueandfile:to your schematic's name.
Default flags for every plot
Under the same world in worlds.yml, add flags: that apply to every claimed plot unless the owner changes them:
worlds:
plotworld:
flags:
mob-cap: 20
entity-cap: 200
vehicle-cap: 10
misc-cap: 100
These cap mobs, entities, vehicles and misc entities (armor stands, item frames, items) per plot. They're the single best defence against plot lag.
The other worlds
Free-build world (trusted builders)
mv create freebuild normal --world-type flat
Then protect the whole world from everyone except builders with WorldGuard:
rg flag __global__ -w freebuild build deny
Builders with worldguard.region.bypass.freebuild, or added to regions, can build. Alternatively, give the builder rank membership of a big region.
Showcase world
A showcase world displays finished builds where nobody can break them. Copy builds in with schematics (see step 6), then lock it:
mv create showcase normal --world-type flat
rg flag __global__ -w showcase build deny
rg flag __global__ -w showcase interact deny
Add warps (/setwarp showcase) so players can visit.
World settings in every creative world
Game rules are per world, so set them in each. Minecraft 1.21.11 renamed game rules to lowercase names with underscores. Use the column for your version; if one isn't accepted, type /gamerule and let the autocomplete show your version's name.
| Older name | 1.21.11 and newer | Value | Why |
|---|---|---|---|
doMobSpawning |
spawn_mobs |
false |
No mobs wandering into builds. |
doWeatherCycle |
advance_weather |
false |
Builds always seen in clear weather. Run weather clear too. |
doDaylightCycle |
advance_time |
false |
Fixed time; set it with time set noon. |
doFireTick |
fire_spread_radius_around_player |
false / 0 |
Fire never spreads. On new versions, 0 turns spread off. |
mobGriefing |
mob_griefing |
false |
Nothing breaks blocks on its own. |
randomTickSpeed |
random_tick_speed |
0 |
Crops, leaves, ice and copper stay exactly as placed. |
doInsomnia |
spawn_phantoms |
false |
No phantoms. |
doTraderSpawning |
spawn_wandering_traders |
false |
No wandering traders. |
With Multiverse-Core you can also set world properties: mv modify freebuild set gamemode creative, mv modify freebuild set difficulty peaceful, mv modify freebuild set allow-weather false.
Schematics
Schematics are saved copies of builds. They're how builders move work between worlds, back it up, and share it.
| Command | What it does |
|---|---|
//wand |
Gives the selection wand (left-click corner 1, right-click corner 2). |
//copy |
Copies the selection, relative to where you stand. |
//schem save <name> |
Saves the clipboard to a file. |
//schem list |
Lists saved schematics. |
//schem load <name> |
Loads one into the clipboard. |
//paste |
Pastes the clipboard where you stand. Add -a to skip air. |
/plot download |
Exports your whole plot as a schematic (PlotSquared). |
Schematics are stored in plugins/FastAsyncWorldEdit/schematics/ on Files, where you can download and upload them. To stop players filling the disk, give each player their own folder: in plugins/FastAsyncWorldEdit/config.yml, set per-player-schematics: true, and use schem-file-size-limit and schem-file-num-limit in their limit group (see next step).
Ranks and permissions with LuckPerms
The rank plan
| Group | Weight | Who | Can do |
|---|---|---|---|
default |
0 | New players | 1 plot, basic plot commands, no WorldEdit. |
builder |
10 | Approved players | 3 plots, merge up to 4, WorldEdit in their plots with modest limits, brushes. |
architect |
20 | Proven builders | 10 plots, bigger limits, free-build world, schematics. |
helper |
50 | Staff | Teleport, inspect plots, CoreProtect lookups. |
admin |
100 | Owners | Everything, unlimited edits. |
Create the groups
Run these in the Console (in-game, start each with /):
lp creategroup builder
lp creategroup architect
lp creategroup helper
lp creategroup admin
lp group builder parent add default
lp group architect parent add builder
lp group helper parent add architect
lp group admin parent add helper
lp group default setweight 0
lp group builder setweight 10
lp group architect setweight 20
lp group helper setweight 50
lp group admin setweight 100
lp group builder meta setprefix 10 "&a[Builder] "
lp group architect meta setprefix 20 "&b[Architect] "
lp group helper meta setprefix 50 "&e[Helper] "
lp group admin meta setprefix 100 "&c[Admin] "
Each group inherits everything from the one below, so you only add what's new at each level.
default: basic plots
lp group default permission set plots.permpack.basic true
lp group default permission set plots.plot.1 true
lp group default permission set essentials.spawn true
lp group default permission set essentials.warp true
lp group default permission set essentials.speed true
plots.permpack.basic grants the everyday plot commands (/plot auto, claim, home, add, trust, deny, clear, delete, visit, merge and more). It includes merging up to 4 plots; if you don't want new players merging, also run lp group default permission set plots.merge false.
plots.plot.<number> sets how many plots a player may own.
builder: WorldEdit in their own plots
lp group builder permission set plots.plot.3 true
lp group builder permission set plots.merge true
lp group builder permission set plots.merge.4 true
lp group builder permission set fawe.permpack.basic true
lp group builder permission set fawe.plotsquared true
lp group builder permission set fawe.limit.builder true
fawe.permpack.basicis FAWE's set of WorldEdit permissions considered safe for a creative server.fawe.plotsquaredlets plot owners and trusted players use WorldEdit inside their plot only. FAWE keeps edits inside the plot.fawe.limit.builderselects thebuilderlimit group you create in step 8.- Brush plugins (FastAsyncVoxelSniper, goBrush, goPaint) each have their own permission nodes, listed on their plugin pages. Grant them to
builderthe same way. If you're unsure of a node,lp verbose on(see below) shows the exact one a command checks.
architect: more space, bigger edits
lp group architect permission set plots.plot.10 true
lp group architect permission set plots.merge.16 true
lp group architect permission set fawe.limit.architect true
lp group architect permission set worldguard.region.bypass.freebuild true
FAWE gives a player the highest value of each limit across all their limit groups, so architects get the bigger limits even though they inherit fawe.limit.builder.
helper and admin
lp group helper permission set plots.visit.other true
lp group helper permission set plots.admin.visit.untrusted true
lp group helper permission set coreprotect.inspect true
lp group helper permission set coreprotect.lookup true
lp group helper permission set essentials.tp true
lp group admin permission set * true
Give owners * through LuckPerms rather than op, and give fawe.limit.unlimited (or fawe.bypass) only to admins.
Give ranks to players
lp user Steve parent set builder
lp user Steve parent addtemp architect 30d
lp user Steve info
parent set replaces their group; addtemp gives one for a limited time (useful for competition winners).
Find a missing permission
If a command says no permission, run lp verbose on, have the player try the command, then lp verbose off. LuckPerms prints the exact node that was checked. Prefer clicking? lp editor opens a web editor link.
Set WorldEdit limits per rank
Without limits, one //set across a huge selection can stall the server. FAWE limits are in plugins/FastAsyncWorldEdit/config.yml under limits:. The default group applies to anyone without a specific limit permission. Copy it to make named groups, then grant fawe.limit.<name>.
Stop the server, then edit:
limits:
default:
max-actions: 1
max-changes: 0
max-checks: 0
max-fails: 0
max-iterations: 0
max-entities: 0
max-radius: 0
max-brush-radius: 0
max-blockstates: 0
builder:
max-actions: 1
max-changes: 500000
max-checks: 1000000
max-fails: 500000
max-iterations: 100
max-entities: 50
max-radius: 50
max-super-pickaxe-size: 5
max-brush-radius: 15
max-butcher-radius: 50
max-blockstates: 200
max-history-mb: 256
schem-file-size-limit: 10240
schem-file-num-limit: 20
confirm-large: true
architect:
max-actions: 2
max-changes: 10000000
max-checks: 20000000
max-fails: 10000000
max-iterations: 500
max-entities: 500
max-radius: 200
max-super-pickaxe-size: 10
max-brush-radius: 40
max-butcher-radius: 200
max-blockstates: 1000
max-history-mb: 1024
schem-file-size-limit: 102400
schem-file-num-limit: 100
confirm-large: true
Keep the other keys FAWE already has in each group. These are starting values; raise them if your builders hit them often and the server copes.
| Key | Limits |
|---|---|
max-actions |
How many edits a player can run at once. |
max-changes |
Blocks changed in one edit (for example by //set). |
max-checks |
Blocks examined in one edit (for example //count). |
max-iterations |
Brush iterations, such as //brush smooth. |
max-entities |
Entities an edit can create (pasting a farm full of cows). |
max-radius / max-brush-radius |
Largest sphere, cylinder or brush. |
max-blockstates |
Chests, signs, heads and similar blocks per edit. |
max-history-mb |
Size of each player's undo history. |
schem-file-size-limit / schem-file-num-limit |
Per-player schematic folder size (KB) and count, with per-player-schematics on. |
confirm-large |
Asks for //confirm before very large edits. |
Start and test as a builder: a //set over a too-large selection should be refused with a limit message.
Keep it fast
Creative servers lag for three reasons: entities, redstone and giant edits. Tackle each.
Entities
Plot caps (
mob-cap,entity-cap,misc-cap,vehicle-cap) from step 4.Armor stands: in
config/paper-world-defaults.yml, setentities.armor-stands.tick: falseandentities.armor-stands.do-collision-entity-lookups: false. Decorative armor stands stop costing CPU. (It breaks armor-stand machines, which are rare on creative.)Entity save limit: in the same file,
chunks.entity-per-chunk-save-limitstops chunks saving thousands of loose entities:chunks: entity-per-chunk-save-limit: arrow: 16 experience_orb: 16 snowball: 8 ender_pearl: 8 egg: 8 item: 128
Redstone
- PlotSquared's
plugins/PlotSquared/config/settings.ymlhas aredstone:section.disable-offline: trueturns redstone off in plots whose owners and members are all offline, so abandoned clocks stop.disable-unoccupied: truegoes further and stops it when nobody's in the plot. - Per plot, owners or staff can run
/plot flag set redstone false. - In
config/paper-world-defaults.yml,misc.redstone-implementation: ALTERNATE_CURRENTmakes redstone much cheaper. Test redstone builds; timing can differ slightly from vanilla. - Plugins such as AntiRedstoneClock-Remastered (on Hangar) detect and break fast clocks.
Physics and big edits
/plot flag set disable-physics truestops sand, gravel and water updates in a plot, which helps detailed builds and huge pastes.- FAWE limits from step 8 keep edits bounded.
- Allow 6–8 GB of memory on busy build servers. FAWE stores history on disk by default, which keeps memory down.
- A world border on free-build worlds (
worldborder set 4000in that world) stops endless exploration. Creative players can fly far, fast, generating chunks the whole way. Pre-generate the free-build area.
Measure
Run spark profiler start, wait 5 minutes during a busy time, then spark profiler stop. Open the link: it shows which plots, entities or plugins cost the most. Fix lag
Build competitions
Competitions keep creative servers alive. A simple, fair routine:
- Make a contest world with a smaller plot size (for example 48 × 48) using
mv create contest normal --generator PlotSquared, then set its size inworlds.ymland restart. - Announce a theme, a start and an end time. Use a schedule on Schedules with Send Command
say Build contest ends in 1 hour!for reminders. - Entry: players run
/plot autoin the contest world. Announce a one-plot-per-player rule and have staff remove extra claims with/plot delete. - Freeze the plots at the deadline. Players mark their plot finished with
/plot done; staff can stop edits by removing build permission in that world. - Judge: players vote with
/plot rate; staff check the top entries. - Showcase the winners:
//copyand//schem saveeach winning build, paste it into the showcase world, and give winners a temporary rank (lp user <name> parent addtemp architect 30d). - Back up the contest world and lock the backup before resetting it.
Backups
Creative builds take hundreds of hours, and builders notice a lost evening.
- Schedule a backup every 2–6 hours. On Schedules, create a schedule with a Send Command
save-alltask, then a Create Backup task 10 seconds later. Backup schedules - Lock a backup before every competition, update and world change.
- Download a backup weekly and keep it on your own computer or cloud storage.
- Database: if PlotSquared uses MySQL (
plugins/PlotSquared/config/storage.yml), the plot owners live in the database, which panel backups don't include. Ask us for a dump, or keep PlotSquared on its default SQLite file so it's backed up with everything else. Databases - Single builds: CoreProtect can undo griefing on one plot without a full restore, for example
co rollback u:Griefer t:2h r:#global. PlotSquared's/plot backupcommand (where enabled) saves and restores single plots.
Launch checklist
- [ ] Plot size and road width decided before the plot world was generated.
- [ ] FAWE installed instead of WorldEdit; limit groups set and tested as a builder.
- [ ] Game rules set in every world.
- [ ] LuckPerms groups created; normal players checked from a non-staff account.
- [ ] Plot caps and redstone settings in place.
- [ ] Showcase world protected; warps set.
- [ ] Free-build world bordered and pre-generated.
- [ ] Backup schedule running (check Backups the next day) and a locked "launch" backup.
- [ ]
spark profilerrun with a few builders online.
Common problems
| Problem | Fix |
|---|---|
| Server freezes on a big edit | Use FAWE instead of WorldEdit, and lower that rank's max-changes. |
| You don't have permission in WorldEdit | Missing fawe.permpack.basic or a WorldEdit node. Use lp verbose on to see which. |
| WorldEdit does nothing in a plot | The player isn't owner, trusted or added to the plot, or lacks fawe.plotsquared. |
| Two WorldEdits loaded | WorldEdit and FAWE both installed. Remove WorldEdit.jar. |
| Leaves decay or crops grow | random_tick_speed (randomTickSpeed) isn't 0 in that world. |
| Mobs appear | spawn_mobs (doMobSpawning) is on in that world. Game rules are per world. |
| Plots too small | Size can't change on an existing world. Make a new plot world and move builds with schematics. |
| Plot world generates as normal terrain | The generator isn't set. Check bukkit.yml worlds: → generator: PlotSquared, or recreate with --generator PlotSquared. |
| Lag with few players | An entity pile-up or a redstone clock. Profile with spark and set plot caps. |
| Disk filling up | Free-build world without a border, or unlimited per-player schematics. |
Going further
- Pre-generate free-build areas properly: Better pre-generated worlds.
- Running survival too? Link it with a Velocity proxy. Velocity networks
- Let Bedrock players visit plots: Bedrock crossplay. (Bedrock players can't use most WorldEdit wand features as easily, so give them commands like
//pos1and//pos2.)

