Skip to content

Secure Plots

Territory protection mod with menus, roles, upgrades, rank-based permissions, ambient effects, and a fully configurable visual border system.

Fabric
Loaders
Fabric
Downloads on Modrinth
440
Followers on Modrinth
2
versions
5
Updated
April 3, 2026Apr 3
Published
in 2026

At a glance

Runs on Fabric
For Minecraft 1.21.1–1.21.11
Needed in the game and on the server
Latest version — 1.0.4 from April 3, 2026
License GPL-3.0-only — free
Where it's needed
In gamerequiredOn serverrequired

Needed both in the game and on the server

Game versions1.21.1–1.21.11

Secure Plots

🛡 Secure Plots

Minecraft 1.21.1 — Fabric
Territory protection mod with menus, roles, upgrades, rank-based permissions, ambient effects, and a fully configurable visual border system.

ko-fi


Requirements

  • Minecraft 1.21.1
  • Fabric Loader ≥ 0.15.0
  • Fabric API
  • Java 21+

Installation

  1. Drop the .jar into your mods/ folder on both server and client.
  2. Start the server once to generate config files in config/.
  3. Edit secure_plots.json (server behaviour) and secure_plots_client.json (visual settings).

How it works

Place a Plot Block to claim that area. The block's tier determines how large the protected zone is. Right-click the block or use the Plot Blueprint item to open the management menu.

Plot tiers (all configurable)

TierNameDefault radius
0Bronze15 × 15
1Gold30 × 30
2Emerald50 × 50
3Diamond75 × 75
4Netherite100 × 100

Commands

All commands are available as /sp or /secureplots.

Player commands

CommandDescription
/sp helpShow all commands
/sp listList your plots
/sp info [plot]Show info for the plot you're in, or a named/numbered plot
/sp viewShow the border of your nearest plot
`/sp rename `Rename the plot you're standing in
`/sp add <plot|all>`Add a member to one or all of your plots
`/sp remove <plot|all>`Remove a member from one or all of your plots
`/sp role <member|admin>`Change a member's role in the plot you're standing in
/sp tp [plot]Teleport to a plot by name or number
/sp upgradeUpgrade the plot you're standing in (consumes materials)
/sp myrankShow your current rank perks
/sp flagList available global flags
`/sp flag <true|false> [plot]`Set a global flag
/sp permList available individual permissions
`/sp perm <true|false> [plot]`Set a permission for a member
/sp fly [true|false] [plot]Toggle fly for the plot you're standing in
/sp groupList permission groups of the current plot
`/sp group create `Create a permission group
`/sp group delete `Delete a permission group
`/sp group addmember `Add a member to a group
`/sp group removemember `Remove a member from a group
`/sp group setperm <true|false>`Set a permission for a group
/sp plot particle <type|clear>Set ambient particles on plot entry
/sp plot weather <clear|rain|thunder|none>Override weather inside the plot
`/sp plot time <day|noon|sunset|night|midnight|sunrise||reset>`Override time inside the plot
/sp plot music <sound_id|clear>Play music on plot entry
/sp plot enter <message|clear>Set the entry title message
/sp plot exit <message|clear>Set the exit title message

Plot argument: most commands that accept [plot] accept a plot name, its number from /sp list, or all.

Admin commands

All /sp admin commands require OP level ≥ adminOpLevel (default: 2).

CommandDescription
/sp admin listall [page]List every plot on the server, paginated (10 per page)
`/sp admin search [page]`List all plots owned by a specific player
/sp admin nearby [count] [x y z]Show the N nearest plots to your position or given coordinates
`/sp admin list `Quick list of a player's plots
`/sp admin info `Show full info for another player's plot
`/sp admin tp `Teleport to another player's plot
`/sp admin delete <plot|all>`Delete one or all plots of a player
`/sp admin rename `Rename another player's plot
`/sp admin setowner `Transfer ownership of the plot you're standing in
`/sp admin upgrade `Force-upgrade a plot (no materials consumed)
`/sp admin rank <true|false>`Toggle rank protection (immune to inactivity expiry)
`/sp admin particle `Set particles on any plot
`/sp admin music `Set music on any plot
`/sp admin weather `Set weather on any plot
`/sp admin time `Set time on any plot
`/sp admin enter `Set entry message on any plot
`/sp admin exit `Set exit message on any plot
`/sp admin setrank `Add a rank tag to a player (shortcut for `/tag add `)
`/sp admin removerank `Remove a rank tag from a player
/sp admin reloadReload both config files and re-sync all clients (no restart needed)

Roles & permissions

Roles

RoleDescription
OWNERFull control — can break the block, upgrade, rename
ADMINCan manage members, permissions, and flags
MEMBERDefault trusted player
VISITORAnyone not explicitly added

Global flags (/sp flag)

Global flags affect everyone inside the plot, including visitors.

FlagDefaultDescription
ALLOW_VISITOR_BUILDoffAnyone can place and break blocks
ALLOW_VISITOR_INTERACToffAnyone can use doors, levers, buttons
ALLOW_VISITOR_CONTAINERSoffAnyone can open chests
ALLOW_PVPoffPvP enabled for all players
ALLOW_FLYoffEveryone can fly
ALLOW_TPonAnyone can /sp tp to this plot
GREETINGSonShow enter/exit title messages

Individual permissions (/sp perm)

Assignable per member or per permission group.

Construction: BUILD BREAK PLACE

Interaction: INTERACT CONTAINERS USE_BEDS USE_CRAFTING USE_ENCHANTING USE_ANVIL USE_FURNACE USE_BREWING

Entities: ATTACK_MOBS ATTACK_ANIMALS PVP RIDE_ENTITIES INTERACT_MOBS LEASH_MOBS SHEAR_MOBS MILK_MOBS

Nature: CROP_TRAMPLING PICKUP_ITEMS DROP_ITEMS BREAK_CROPS PLANT_SEEDS USE_BONEMEAL BREAK_DECOR

Explosives: DETONATE_TNT GRIEFING

Misc: TP FLY ENTER CHAT COMMAND_USE

Management: MANAGE_MEMBERS MANAGE_PERMS MANAGE_FLAGS MANAGE_GROUPS


Rank-based permissions

Ranks let you give different players different plot feature limits — without touching individual permissions per player. Ranks use vanilla command tags, assigned with `/tag add `.

How it works

  1. Define ranks in secure_plots.json under rankPerks.
  2. Assign tags to players with `/tag add or the shortcut/sp admin setrank `.
  3. Players with no rank tag use the global defaults.
  4. If a player has multiple rank tags, the most permissive value of each field wins.
  5. The adminTag always bypasses all rank restrictions.

Rank fields

FieldDefaultDescription
tag—The command tag to match
maxPlots0Max plots this rank can own (0 = use global maxPlotsPerPlayer)
maxTier4Highest plot tier (0–4) this rank can place
canRenametrueCan rename their plot
canSetMusictrueCan set plot music
canSetParticlestrueCan set plot particles
canSetWeathertrueCan set a weather override
canSetTimetrueCan set a time override
canSetEnterExittrueCan set enter/exit messages
canTptrueCan use /sp tp to their own plot
canFlytrueCan enable fly on their plot
canUpgradetrueCan upgrade their plot tier
canGroupstrueCan create permission groups
hasRankProtectionfalsePlot is immune to inactivity expiry

Example rank config

"rankPerks": [
  {
    "tag": "basic",
    "maxPlots": 1,
    "maxTier": 0,
    "canSetMusic": false,
    "canSetParticles": false,
    "canSetWeather": false,
    "canSetTime": false,
    "canFly": false,
    "canUpgrade": false,
    "canGroups": false
  },
  {
    "tag": "vip",
    "maxPlots": 5,
    "maxTier": 3,
    "canSetMusic": true,
    "canSetParticles": true,
    "canFly": true,
    "canUpgrade": true
  },
  {
    "tag": "mvp",
    "maxPlots": 10,
    "maxTier": 4,
    "hasRankProtection": true
  }
]

Server config — secure_plots.json

Feature toggles

FieldDefaultDescription
enableProtectiontrueMaster switch for all block/interact protection
enableFlyInPlotstrueAllow fly grants via the FLY permission
enableEnterHudtrueShow plot name in action bar on entry
enableGreetingMessagestrueShow enter/exit title messages
enablePlotParticlestrueAmbient particles on plot entry
enablePlotMusictrueMusic playback on plot entry
enablePlotWeathertruePer-plot weather override
enablePlotTimetruePer-plot time override
enablePlotTeleporttrueAllow /sp tp
enableHologramtrueFloating info display above plot blocks
enablePvpControltrueBlock PvP in plots without ALLOW_PVP flag
enableUpgradestrueAllow tier upgrades
enablePermissionGroupstrueAllow creating permission groups
plotBlocksUnbreakabletrueNon-owners cannot break plot blocks
allowNestedPlotsfalseAllow placing plots inside other plots

General

FieldDefaultDescription
maxPlotsPerPlayer3Default max plots per player (0 = unlimited; overridden by rankPerks)
plotBuffer15Minimum block gap between plots
adminOpLevel2OP level required for /sp admin commands (0–4)
adminTag"plot_admin"Command tag granting full admin override
blockedStructurePrefixes["legendarymonuments:"]Structure ID prefixes that block plot placement

Ambient settings

FieldDefaultDescription
particleCount3Burst particle count on plot entry (1–5)
ambientParticleCount2Continuous particles per interval (1–5)
ambientInterval20Ticks between ambient particle spawns
checkInterval10Ticks between enter/exit detection checks
musicVolume4.0Music volume (0.1–4.0)

Inactivity expiry

"inactivityExpiry": {
  "enabled": false,
  "baseDays": 45,
  "daysPerTier": 5
}

When enabled, a plot expires if the owner hasn't logged in for baseDays + (tier × daysPerTier) days. Plots with hasRankProtection are immune.

Tier configuration

"tiers": [
  { "tier": 0, "displayName": "Bronze",    "radius": 15,  "luminance": 4, "hardness": 50, "blastResistance": 1200 },
  { "tier": 1, "displayName": "Gold",      "radius": 30,  "luminance": 5, "hardness": 50, "blastResistance": 1200 },
  { "tier": 2, "displayName": "Emerald",   "radius": 50,  "luminance": 6, "hardness": 50, "blastResistance": 1200 },
  { "tier": 3, "displayName": "Diamond",   "radius": 75,  "luminance": 7, "hardness": 50, "blastResistance": 1200 },
  { "tier": 4, "displayName": "Netherite", "radius": 100, "luminance": 8, "hardness": 50, "blastResistance": 1200 }
]

Upgrade costs

Each upgrade can require any number of items from any mod.

"upgradeCosts": [
  { "fromTier": 0, "toTier": 1, "items": [{ "itemId": "minecraft:gold_block", "amount": 15 }] },
  { "fromTier": 1, "toTier": 2, "items": [{ "itemId": "minecraft:emerald_block", "amount": 10 }] },
  { "fromTier": 2, "toTier": 3, "items": [{ "itemId": "minecraft:diamond", "amount": 64 }] },
  { "fromTier": 3, "toTier": 4, "items": [{ "itemId": "minecraft:netherite_block", "amount": 1 }] }
]

Default role permissions

Permissions automatically granted when a member is added by role.

"roleDefaults": {
  "admin":   ["BUILD", "INTERACT", "CONTAINERS", "PVP", "MANAGE_MEMBERS", "MANAGE_PERMS", "TP", "ENTER"],
  "member":  ["BUILD", "INTERACT", "CONTAINERS", "TP", "ENTER"],
  "visitor": ["INTERACT", "ENTER"]
}

Default flags for new plots

"defaultFlags": ["ALLOW_TP", "GREETINGS"]

Crafting recipes

Recipes for plot blocks and the blueprint item. Each can be disabled individually ("disabled": true) so the item is only obtainable in creative mode or via /sp admin.

"craftingRecipes": [
  {
    "result": "secure-plots:bronze_plot_block",
    "pattern": ["CBC", "BHB", "CBC"],
    "key": {
      "C": "minecraft:copper_block",
      "B": "minecraft:redstone_block",
      "H": "minecraft:heart_of_the_sea"
    }
  },
  {
    "result": "secure-plots:plot_blueprint",
    "pattern": ["SPS", "PCP", "SPS"],
    "key": {
      "S": "minecraft:amethyst_shard",
      "P": "minecraft:paper",
      "C": "minecraft:compass"
    }
  }
]

Client visual config — secure_plots_client.json

This file lives on the server and is automatically synced to every client on join. Edit it server-side — changes propagate instantly on the next /sp admin reload.

Plot border — thickness

FieldDefaultDescription
edgeThickness0.06Core edge line width
glowThickness0.13Outer glow halo width
scanlineThickness0.025Vertical scanline width
scanlineSpacing1.5Blocks between scanlines
borderHeight25.0Height of the border wall in blocks

Plot border — animation

FieldDefaultDescription
pulseCycleMs2000Duration of one brightness pulse cycle (ms)
pulseMin0.6Minimum brightness (0.0–1.0)
pulseRange0.4Brightness variation range (pulseMin + pulseRange ≤ 1.0)
boltFlickerMs120How often corner lightning bolts regenerate (ms)

Plot border — tier colors

Each tier has 9 color channels (values 0.0–1.0):

"tierColors": [
  {
    "tier": 0,
    "coreR": 1.0, "coreG": 0.55, "coreB": 0.05,
    "glowR": 0.7, "glowG": 0.28, "glowB": 0.0,
    "whiteR": 1.0, "whiteG": 0.88, "whiteB": 0.55
  }
]
Channel groupEffect
coreR/G/BMain edge color
glowR/G/BOuter halo color
whiteR/G/BInner bright core

Hologram

The floating info panel displayed above plot blocks.

FieldDefaultDescription
hologramEnabledtrueShow/hide the hologram
hologramHeight3.0Blocks above the plot block
hologramMaxDistance24.0Max render distance in blocks
hologramScale0.025Text scale
hologramBackgroundOpacity0.75Panel background opacity (0.0–1.0)
hologramPaddingX8Horizontal padding in font pixels
hologramPaddingY6Vertical padding in font pixels
hologramLineSpacing1Extra pixels between lines
hologramFadeInMs400Fade-in duration (ms)
hologramFadeOutMs600Fade-out duration before expiry (ms)
hologramFloattrueEnable floating up/down animation
hologramFloatAmplitude0.1Float range in blocks
hologramFloatCycleMs3000Duration of one float cycle (ms)
Hologram text labels (all customizable)
FieldDefault
hologramDefaultName"PROTECTED PLOT"
hologramLabelOwner"Owner: "
hologramLabelTier"Tier: "
hologramLabelSize"Size: "
hologramLabelMembers"Members: "
hologramLabelNext"Next: "
hologramLabelMaxLevel"§6§l★ Max Level ★"

Plot management screen

FieldDefaultDescription
screenPanelWidth320Panel width in pixels
screenPanelHeight240Panel height in pixels
screenRowSpacing16Pixels between info rows
screenMaxNameLength32Maximum plot name length
Screen panel colors (ARGB hex)
FieldDefault
screenColorBorderOuter0xFF373737
screenColorBackground0xFFC6C6C6
screenColorTitleBar0xFF555555
screenColorTitleBarTop0xFF666666
screenColorShadowDark0xFF8B8B8B
screenColorShadowLight0xFFFFFFFF

Localisation

Two languages are bundled: en_us (English) and es_es (Rioplatense Spanish). All 260+ translation keys cover commands, UI, tooltips, HUD messages, permission names, and every player-facing string.

To add another language, create `assets/secure-plots/lang/.json` in a resource pack using the existing files as a template.


Server admin quick reference

TaskCommand
Grant admin override`/tag add plot_admin`
Assign a rank`/sp admin setrank or/tag add `
Remove a rank`/sp admin removerank `
See all server plots/sp admin listall
Find plots by player`/sp admin search `
Find nearby plots/sp admin nearby 10 or /sp admin nearby 10 100 64 -200
Delete a player's plots`/sp admin delete all`
Transfer plot ownershipStand in the plot, `/sp admin setowner `
Reload config in-game/sp admin reload
Give Creative plot blockStand in plot menu → Creative tab (OPs only)

Support

If Secure Plots is useful for your server, consider supporting development:


License

GPL-3.0 — Copyright (C) 2025 TupacGodoy

FAQ

How to install Secure Plots?

Install Fabric for your Minecraft version, download Secure Plots for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does Secure Plots support?

Secure Plots has builds for Minecraft 1.21.1–1.21.11.

Is Secure Plots needed on the server?

Needed in the game and on the server

License and source
GNU General Public License v3.0 onlyfree to use and share; changes to the mod itself must be published under the same license
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More