premium banner
Region protection & land-claim system: protect builds, manage PvP zones, members/owners, and optional world map markers. Similar to WorldGuard

Description

WorldProtect

WorldProtect is a flexible region protection plugin inspired by WorldGuard, designed with modern usability, visual map integration, and a clean flag-based system.

It allows server owners to protect regions, control player interactions, manage building permissions, and visually display regions on the world map — all with fine-grained permissions and customizable messages.

 

Built for the Hytale survival server at play.HolyTale.net

 

Quick Start

  1. Install: Download the latest release and drop the JAR into your server's mods/ folder
  2. Restart your server
  3. Select area: Select two corners of the area you want to protect /pos1 and /pos2
  4. Claim land: Then create the region with /rg claim <name>
  5. See your claims: Open your map (M) - claimed regions show in color!

 


Features

  • Region Map Overlay - Claimed regions appear colored on the world map
  • Interaction Control - Full control over how players interact inside regions
  • Region Flags System - Each region supports multiple independent flags
  • Custom Messages & Localization - Language file support/Colored chat messages
  • Performance & Stability - Optimized cancel handling/Reduced client/server desync warnings

 

Commands

Base command /rg command set:

/rg claim <region> — create a protected claim from your current selection

/rg menu — open the region GUI menu

/rg menu <region> — open a specific region menu

/rg wand — toggle region wand

/rg wand clear — clear your current selection

/rg define <region> — create an admin region from selection

/rg remove <region> — delete a region (owner/admin)

/rg info — info about region (or current)

/rg priority <region> <priority> — set region priority (higher priority wins when regions overlap)

/rg redefine <region> — replace region bounds

/rg select <region> — replace your selection with region bounds

/rg setparent <region> <parent> — set or clear a region parent

/rg addmember <region> <player> — add member

/rg removemember <region> <player> — remove member

/rg addowner <region> <player> — add owner

/rg removeowner <region> <player> — remove owner

/rg flag <region> <flag> allow|deny|none — set region flags

/rg reload — reload configs, messages and regions

 

Permissions

  • dev.worldprotect.worldprotect.command.rg — allows using /rg (base command access)
  • worldprotect.bypass — bypasses all region restrictions and permission checks (admin override)
  • worldprotect.reload — allows using /rg reload (reloads config, messages, and regions)
  • worldprotect.menu.others — allows opening other players using /rg menu <id>
  • worldprotect.addmember — allows using member add commands
  • worldprotect.removemember  — allows using member remove commands
  • worldprotect.addowner  — allows using owner add commands
  • worldprotect.removeowner  — allows using owner remove commands
  • worldprotect.remove  — allows using /rg remove <id> for own regions
  • worldprotect.flag.pvp — allows changing the PvP flag (/rg flag <id> pvp allow|deny)
  • worldprotect.flag.build — allows changing the build flag (/rg flag <id> build allow|deny|none)
  • worldprotect.flag.falldamage — allows changing the fall damage flag (/rg flag <id> falldamage allow|deny)
  • worldprotect.flag.mobdamage — allows changing the mob damage flag (/rg flag <id> mobdamage allow|deny)
  • worldprotect.flag.chestaccess — allows changing the chest-access flag (/rg flag <id> chest-access allow|deny)
  • worldprotect.flag.use — allows changing the use/interact flag (/rg flag <id> use allow|deny)
  • worldprotect.flag.dooraccess — allows changing the door-access flag (/rg flag <id> door-access allow|deny)
  • worldprotect.flag.lightaccess — allows changing the light-access flag (/rg flag <id> light-access)
  • worldprotect.flag.notify — allows changing notifications (/rg flag <id> notify on|off)
  • worldprotect.flag.greeting — allows changing greeting text (/rg flag <id> greeting <text...>)
  • worldprotect.flag.farewell — allows changing farewell text (/rg flag <id> farewell <text...>)
  • worldprotect.flag.map — allows toggling region visibility on the (M) map overlay (/rg flag <id> map on|off)
  • worldprotect.flag.firespread - allows changing the fire spread flag  (/rg flag <id> fire-spread allow|deny)
  • worldprotect.flag.mobspawning — allows changing the mob spawning flag (/rg flag <id> mob-spawning allow|deny)
  • worldprotect.flag.itempickup — allows changing the ground pickup flag (/rg flag <id> item-pickup allow|deny)
  • worldprotect.flag.itemgrab — allows changing the manual pickup (F) flag (/rg flag <id> item-grab allow|deny)
  • worldprotect.flag.entry — allows changing the entry flag (/rg flag <id> entry allow|deny)
  • worldprotect.flag.player-enter-command — allows changing the player-enter-command flag (/rg flag <id> player-enter-command <command...>)
  • worldprotect.flag.server-enter-command — allows changing the server-enter-command flag (/rg flag <id> server-enter-command <command...>)
  • worldprotect.flag.blockedcmds — allows changing the blocked command flag (/rg flag <id> blocked-cmds <commands...>)
  • worldprotect.flag.itemdrop — allows changing the item drop flag (/rg flag <id> item-drop allow|deny)
  • worldprotect.flag.particles — allows toggling region border particle effects (/rg flag <id> particles allow|deny)
  • worldprotect.flag.grassspread — allows changing the grass spread flag (/rg flag <id> grass-spread allow|deny)
  • worldprotect.flag.mushroomspread — allows changing the mushroom spread flag (/rg flag <id> mushroom-spread allow|deny)
  • worldprotect.redefine — allows replacing a region’s bounds with your current selection (/rg redefine <id>)
  • worldprotect.select — allows replacing your current selection with the bounds of a region (/rg select <id>)
  • worldprotect.setparent — allows setting or clearing a region parent (/rg setparent <id> [parent])
  • worldprotect.wand — allows using (/rg wand)
  • worldprotect.wand.clear — allows using (/rg wand clear)
  • dev.worldprotect.worldprotect.command.<COMMAND> — allows using /<COMMAND>
  • hytale.editor.selection.use — allows using region selection tools (set pos1 and pos2 with the selection)

Why download WorldProtect?

If you host a multiplayer server, WorldProtect adds clarity, safety, and control:

  • Protect builds and bases so players can invest time without fear of griefing or theft
  • Easy land claiming with a clean /rg workflow, plus member/owner management for teams and factions
  • Create protected areas instantly (spawn, market, towns, event zones) with admin regions and priorities
  • Control gameplay per region using flags: safe zones, PvP arenas, build-permitted areas, restricted entry zones, and more
  • Map visibility helps players understand borders at a glance (claimed regions appear colored on the world map)
  • Optimized and stable: refactored internals to reduce overhead, bugs, and client/server desync warnings

Configuration

WorldProtect includes a configuration system that lets you fine-tune server rules, including:

  • Block/build protection (prevent breaking/placing where not allowed)
  • PvP protection rules (safe zones, arenas, wilderness logic)
  • Overlap handling & priority rules (which region wins when they intersect)
  • Region limits (claims per player, maximum region size, admin region behavior)
  • Map overlay/marker integration (show/hide regions and adjust display behavior)

For Developers API

WorldProtect includes a public developer API for integrations and extensions.

This allows other mods/plugins to query region data, check protection rules, modify regions, and listen for region changes.

Getting the API

import dev.worldprotect.worldprotect.api.WorldProtectApi;
import dev.worldprotect.worldprotect.api.WorldProtectApiProvider;

WorldProtectApi api = WorldProtectApiProvider.getApi();
if (api == null) {
    return;
}

// Example usage

api.getPrimaryRegionAt(world.getName(), x, y, z).ifPresent(region -> {
    System.out.println("Inside region: " + region.id());
});

boolean canBuild = api.canBuild(player, world, blockPos);
boolean pvpAllowed = api.isPvpAllowed(world.getName(), x, y, z);

// Modify regions

api.addMember(world.getName(), "spawn", playerUuid);
api.setBuildFlag(world.getName(), "spawn", WorldProtectBuildFlag.DENY);
api.setFlag(world.getName(), "spawn", WorldProtectFlag.PVP, false);
api.setGreetingText(world.getName(), "spawn", "Welcome to spawn!");

// Create / delete regions

api.createRegion(world, "market", 0, 60, 0, 32, 90, 32, ownerUuid);
api.deleteRegion(world, "market");

// Region hooks

api.registerListener(new WorldProtectRegionListener() {
    @Override
    public void onRegionCreated(WorldProtectRegionSnapshot region) {
        System.out.println("Created: " + region.id());
    }

    @Override
    public void onRegionChanged(WorldProtectRegionChange change) {
        System.out.println(change.type() + " -> " + change.region().id());
    }
});