Border & zones
Build a real country border for a Minecraft server: preview it on the map, export WorldGuard regions plus per-ring point files plus a ready-to-deploy Skript, and trim the world so it feels infinite but is bounded to the country. You'll find it under Settings as its own Border & zones card, tagged servers, independent of your render settings.
What it is
Border & zones turns one or more real countries into a playable, bounded server world. It draws concentric rings around the land, writes the WorldGuard regions that enforce where players can build, generates a server-side Skript for the live runtime (titles, kill-zone, wall, particle walls), and can trim world generation to the outer ring so everything past the wall stays ungenerated void. Meld produces the geometry, regions, point data, and trim; the server runs the script.
Zones & owners
A zone is a name, one or more countries, a set of WorldGuard owners, and a colour. Countries are typed in with a typeahead drawn from roughly 258 bundled countries. You can add several zones, for example Romania and Moldova, and Meld treats them as one combined landmass, the clump.
Each zone keeps its own actual border for identity (titles and its own WorldGuard region carrying its owners and members). The buffered soft and hard rings, however, are always built around the union of all zones, so you get exactly one soft ring and one hard wall around the whole clump. The wall never runs between two adjacent countries, only around the combined outer edge. Where two zones touch (for example the Romania/Moldova Prut river line), Meld draws an internal line instead.
The rings
Once you preview, the rings appear on the map in distinct colours. Each one means something specific:
| Ring | Colour | Meaning | Build rule |
|---|---|---|---|
| Actual | Cyan | The real country border line, per zone. Identity and titles. | Inside the country: build allowed |
| Soft | Orange (dashed) | The border buffered out by your soft km — the edge of the buildable safe margin. | Build allowed up to here |
| Hard | Yellow | Buffered out by hard km — the outer wall and the no-build line. | The wall; build denied past here |
| Internal line | Lime | Where two zones touch (for example the Prut river line between Romania and Moldova). | Visual + title trigger only (no region) |
| Trim edge | Faint grey | Hard plus a margin — where terrain ends, hidden behind the wall. | Generation boundary only |
Because soft and hard are built around the union of all zones, there is one soft ring and one hard ring around the entire clump, never a wall slicing between two member countries.
Build rules
The exported regions.yml enforces a simple progression of zones as the player moves outward:
- Inside the soft ring (the country plus the few-km safe margin): build is allowed.
- The soft→hard band: no-build, and the kill-zone.
- Outside the hard wall: denied, and void after trimming.
So players build freely across the country and a margin past it, then hit the wall. You set the band widths with the soft km (default 3) and hard km (default 8) controls on the card.
Points & fidelity
The border pts control (range 50–1000, default 700) sets how closely all rings follow the real coast and border. Higher values hug the actual border more tightly and keep the soft and hard buffers smoother.
WorldGuard poly2d regions have no hard point cap — region checks are spatially indexed and only tested when a player is near a region, so a high vertex count costs nothing at rest. At the default ~700 points the ring hugs the real border within a few hundred metres; 1000 is near-exact. Note that the bundled boundary data caps Romania at around 1200 vertices, so the source geometry is the practical ceiling.
What gets exported
Exporting writes everything into <project>/border/:
- Per-ring point files — columns
x,z,lon,lat. One<zone>_actual.txtper zone, plusborder_soft.txt,border_hard.txt, and ashared_<a>_<b>.txtfor each internal line. These feed the particle walls. - A WorldGuard
regions.yml— a global no-build, oneborder_softregion that allows build, oneborder_hardregion that denies it (the wall), plus one identity region per zone carrying that zone's owners and members. - A generated
border.skSkript — the server runtime (optional; toggle it in the Server-script section).
The regions in regions.yml use priorities so the rules layer correctly: the per-zone identity region sits at priority 12, border_soft (allow) at 8, and border_hard (deny, the wall) at 5, under a global deny.
Coordinates are origin-baked. Every x and z value is already in absolute world block coordinates, with Meld's project origin offset applied. There is no separate OFFSET to add on the server — a known coastal point should line up in-game directly.
The server script (border.sk)
Meld writes border.sk; the server runs it. It provides the live runtime on top of the regions and point files:
- Country titles on region enter and exit, driven by WorldGuard region events (never polygon containment tests in Skript).
- The soft→hard kill-zone with escalating damage. By default damage doubles each interval — 1, 2, 4, 8, 16 hearts — and the interval, base, and curve (double or linear) are all configurable.
- The hard wall, which flings the player back with a message plus a teleport backstop for anyone who slips into void.
- Packet-particle walls drawn per-player, near the player only: cyan for actual, orange for soft, yellow for hard, lime for the internal line.
The Server-script section on the card exposes the runtime options: kill interval (seconds, default 60), base hearts (default 1), curve, knockback, particle render radius, wall height, and particle update ticks.
Server plugin requirements
The generated border.sk needs these installed on the server before it will run. Confirm each for your exact Minecraft version:
- WorldGuard — region geometry and the build flags.
- WorldEdit — WorldGuard dependency.
- Skript — the runtime itself.
- A region-event addon —
skript-worldguard, for region enter/exit events. - A packet-particle provider —
skript-particlepreferred, SkBee as a fallback.
Trim world to ring
Trim world to ring sets the generation plan to only the cells inside the trim ring (the country plus the trim margin past the hard wall). Cells outside the ring stay ungenerated void, hidden behind the wall — and the wall bounces the player back before they ever reach the void edge. The trim margin control (default 5 km) sets how much terrain continues past the hard wall; set it to 0 to cut exactly at the wall.
Trimming asks for confirmation, keeps any cells you've already merged, and leaves the plan editable — you can add or remove cells afterward with the normal grid tools.
How to use
- Set the project origin and scale.
- Open the Border & zones card.
- Add your zones and type their countries.
- Set soft/hard/trim km, border pts, owners, and the Server-script options.
- Preview — the coloured rings appear on the map.
- Export to
<project>/border/. - Optionally Trim the world to the ring.
- On the server: load the regions with
/rg load, drop the point files andborder.skinto the Skriptscriptsfolder, install the required plugins, and run/sk reload.