promotional bannermobile promotional banner

Zone Creator

Zone Creator lets you define zones in your world with simple JSON files. In each zone, choose which mobs spawn, who can hurt whom, which potion effects apply, how mobs are equipped, what they drop, and what can be built or broken.
Mozork | Zone Creator
Create a server, get 25% off your first monthaffiliate logo
Create Server
affiliate banner image

Zone Creator

Zone Creator lets you define zones in your world with simple JSON files. In each zone, choose which mobs spawn, who can hurt whom, which potion effects apply, how mobs are equipped, what they drop, and what can be built or broken.

Split your world into zones and decide the rules of each one with simple JSON files. Mob spawning, damage, potion effects, mob equipment, loot, building… everything is set zone by zone, with no complicated commands and no interface.

Minecraft 1.20.1 · Forge 47.2.0+ · Server and singleplayer · No client-side mod required


1. The idea

You create a folder = you create a zone. In this folder, you drop small JSON files. Each file takes care of one subject:

config/zonecreator/
└── my_zone/
    ├── zone.json        ← the switch, the dimension, the priority
    ├── shape.json       ← WHERE the zone is (cube, sphere, polygon…)
    ├── damage.json      ← who can hurt whom
    ├── effects.json     ← potion effects
    └── …                ← only the files you need

Anything you do not write stays normal (vanilla). A missing file, a missing option: the mod touches nothing. You only change what you want to change.

Examples of what you can do:

  • a monster-free zone around your village, where nobody fights;
  • a PvP arena where only players can hurt each other;
  • a toxic zone with poison for players and zombies in diamond armor;
  • a mining field where only ore can be broken, even in adventure mode;
  • a night zone where skeletons drop sand on top of their usual loot.

2. Installation

  1. Install Forge 1.20.1 (47.2.0 or newer).
  2. Put the Zone Creator .jar file in the mods folder.
  3. Launch the game once: the config/zonecreator/ folder is created automatically with example zones.
  4. Open the files, edit them, then type /zonecreator reload in game to apply the changes without restarting.

The mod is server-side only: on a server, players have nothing to install. It also works in singleplayer.

The folders created on first launch:

Folder What it is for
zone_exemple A safe zone, with all the files and all the explanations (see section 9).
zone_exemple_dangereuse A free-shaped dangerous zone, with poison and equipped mobs (see section 10).
zone_template An empty template: everything is neutral, copy it to create your own zone.
zone_toutes_dimensions A zone that applies to a whole dimension, without coordinates.

All the explanations inside the files are written in French and in English.


3. How it works

Creating a zone in 4 steps

  1. Copy the zone_template folder and give it any name you like (for example my_village).
  2. In zone.json, set json_enabled to true.
  3. In shape.json, write where the zone is.
  4. Add the rules you want in the other files, then type /zonecreator reload.

The master switch: json_enabled

At the very top of zone.json:

"json_enabled": false
Value Effect
false (or missing) The whole zone is ignored, as if it did not exist.
true The zone is active.

This is why the example zones ship set to false: they change nothing in your world until you enable them.

Keys that start with _

Any key that starts with an underscore (_comment, _reference, _info…) is documentation: the mod ignores it. You can add your own to write yourself notes.


4. The three golden rules

Rule 1: true, false or neutral

Almost every option accepts three values:

Value Meaning Example with player_to_player
true Forced / allowed players CAN hurt each other, even if a lower-priority zone says no
false Blocked / forbidden players can NOT hurt each other
"neutral" (or missing option) The mod does nothing, it is the vanilla behavior the game decides, or another zone decides

Neutral is not "false". false actively forbids, neutral leaves the decision to other rules.

Rule 2: the highest-priority zone wins… option by option

When several zones overlap, they complement each other. For each option, the mod looks at the zones from the highest priority to the lowest and takes the first one that has an opinion (that is not neutral).

  • Zone A (priority 50): fall: false
  • Zone B (priority 10): fire: false, fall: true

At the same spot you get: fall damage blocked (A wins), fire damage blocked (only B talks about it).

How the mod sorts the zones:

Order Criterion
1 A zone with coordinates goes before a "whole dimension" zone
2 The highest priority number goes first (0 by default)
3 On equal priority, the smallest zone goes first (no warning in the logs)

Rule 3: "nothing written = vanilla"

  • Missing file → everything neutral.
  • Missing option → neutral.
  • The mod never changes what you did not write.

5. The files of a zone

File Required? What it controls
zone.json Yes json_enabled switch, name, dimension, priority, players who ignore the zone, conditions (time, weather)
shape.json Yes The shape and location of the zone
spawning.json No Which monsters / animals can spawn, and for which reason
damage.json No Who can hurt whom, environment damage, damage multipliers
effects.json No Potion effects given or removed
mob_modifiers.json No Equipment and stats of mobs that spawn, extra mobs
entity_rules.json No Rules on a specific creature: invulnerable, loot, effects
blocks.json No Breaking and placing blocks, including in adventure mode
categories.json No Your own creature categories
messages.json No Enter and leave messages
commands.json No Commands run on enter and on leave

zone.json in detail

Key Role Example
json_enabled Master switch of the zone true
id Name of the zone (for your logs) "my_village"
dimension Dimension concerned: an id, a list, or "*" for all "minecraft:overworld"
priority Priority (integer, higher = more important) 50
bypass Players who ignore the zone's rules see below
conditions When the zone is active {"time": "night"}

bypass (useful for admins):

Key Effect
operators true: operators (permission level 2+) ignore the zone
gamemodes List of game modes that ignore the zone (creative, spectator…)
players List of player names
tags List of tags (/tag <player> add zone_admin)

conditions:

Key Values
time always · day · night
weather any · clear · rain · thunder

When the condition is not met, the whole zone is switched off (and the leave messages are sent).


6. Zone shapes

In shape.json, the shape key describes the zone. Seven shapes are available:

Shape What it is for Example
cuboid A block between two corners {"type":"cuboid","min":[-100,-64,-100],"max":[100,320,100]}
box A block defined by its center and its size [width, height, depth] {"type":"box","center":[40,70,40],"size":[60,30,60]}
sphere A sphere (dome, ball) {"type":"sphere","center":[250,70,-400],"radius":40}
cylinder An arena or a tower, seen from above it is a circle {"type":"cylinder","center":[-800,300],"radius":120,"y_min":-64,"y_max":320}
polygon A free shape seen from above (L, star, pentagon…) see below
chunks A list of whole chunks {"type":"chunks","chunks":[[10,10],[10,11]],"y_min":-64,"y_max":320}
dimension The whole dimension, without coordinates {"type":"dimension"}

Good to know

  • For cuboid, both corners are included: from [0,…,0] to [9,…,9] you get exactly 10 × 10 blocks. The order of the corners does not matter.
  • Coordinates are read with the F3 key in game.
  • A chunk coordinate is the block coordinate divided by 16.

The polygon, explained simply

Imagine you look at your zone from the sky and place stakes at its corners. Each point is [x, z]. The mod joins the points in order, and the last point connects back to the first. y_min and y_max give the height.

An "L" with 6 points:

  (500,500) ──────── (560,500)
      │                  │
      │                  │
      │              (560,530)
      │                  │
      │      (530,530) ──┘
      │          │
      │          │
  (500,580) ─── (530,580)
{
  "type": "polygon",
  "points": [[500,500],[560,500],[560,530],[530,530],[530,580],[500,580]],
  "y_min": -64,
  "y_max": 320
}

7. Who is targeted? (creatures, categories)

Many options ask who is concerned (targets, match, attacker, victim). It is written with a small block, called a "target":

Key Role Example
category A creature category "hostile"
type An id, a tag (#) or a category, or a list "minecraft:zombie", "#minecraft:skeletons"
except What is excluded ["minecraft:creeper"]
has_tag Creatures that have this /tag "boss"
players Specific player names (players only) ["Mozork"]
gamemodes / except_gamemodes Included / excluded game modes ["survival"]

The base categories

Category Who it is
hostile Monsters (zombies, skeletons, creepers…)
passive Animals and villagers
neutral_mob Neutral creatures (wolves, bees, endermen…)
player Players
any Everyone

Your own categories (categories.json)

You can create your own categories (for example my_bosses). They are local to the zone and take priority over the base categories: if you reuse the name hostile, yours wins.

With not_affected_by you say: "members of this category escape the rules that target such-and-such category".

"categories": {
  "strength_immune": {
    "members": { "types": ["minecraft:zombie", "minecraft:ender_dragon"] },
    "not_affected_by": ["hostile"]
  }
}

Here, zombies and the Ender Dragon escape every rule that targets hostile (effects, damage, spawning).


8. All options, file by file

spawning.json: creature spawning

Two groups: hostile (monsters) and passive (animals, villagers). For each one, you choose a spawn reason:

Reason When
all All the reasons below
natural Natural spawning of the world
spawner Monster spawner
spawn_egg Spawn egg
breeding Breeding
patrol Pillager patrols
bucket Bucket of fish
dispenser Dispenser
mob_summoned Creature summoned by a mob (reinforcements, etc.)

all applies to everything; a specific reason overrides it, unless it is neutral (it then follows all).

"hostile": { "all": false, "spawn_egg": true }

→ No monster spawns, except with a spawn egg.

Spawning by command (/summon) is never blocked.

damage.json: damage

Who hurts whom (from the attacker to the victim):

Option Meaning
player_to_player Player → player (PvP)
player_to_hostile Player → monster
player_to_passive Player → animal / villager
player_to_neutral_mob Player → neutral creature
hostile_to_player Monster → player
passive_to_player Animal → player
neutral_mob_to_player Neutral creature → player
mob_to_mob Creature → creature

Environment damage (in environment):

Key Cause
fall Falling
fire Fire
lava Lava
drowning Drowning
explosion Explosions
projectile Arrows and projectiles
magic Magic (harming potions…)
starvation Starvation
freeze Freezing (powder snow)
void The void

Multipliers (in multipliers): 1.0 = normal, 0.5 = half, 2.0 = double, 0 = no damage.

"multipliers": { "hostile_to_player": 1.25 }

Precise rules (in rules): when "all monsters" is too broad. Example: zombies do not hurt villagers, but still hurt players.

"rules": [
  { "attacker": {"type": "minecraft:zombie"}, "victim": {"type": "minecraft:villager"}, "allow": false },
  { "attacker": {"type": "minecraft:zombie"}, "victim": {"category": "player"},        "allow": true }
]

The first rule that matches decides.

effects.json: potion effects

Key Role
id The effect (minecraft:poison)
pool Instead of id: a list of effects, one is picked at random at each application
state true = gives the effect · false = removes it and prevents it from coming back · "neutral" = does nothing
amplifier Level minus 1 (0 = level I, 1 = level II)
duration_ticks Duration of each application (20 ticks = 1 second); accepts "infinite"
interval_ticks How many ticks between each re-application (20 to 80 recommended)
targets Who is targeted
when Condition (e.g. {"weather":"rain"} or {"time":"night"})
particles / icon Show the particles / the icon
remove_on_leave true = the effect disappears when leaving the zone

Example of a random effect (good and bad mixed):

{ "pool": ["minecraft:speed", "minecraft:strength", "minecraft:slowness", "minecraft:weakness"],
  "state": true, "duration_ticks": 200, "interval_ticks": 200,
  "targets": {"category": "player"}, "remove_on_leave": true }

mob_modifiers.json: modifying mobs when they spawn

Two lists: modify (changes the mobs that spawn) and extra_spawns (adds mobs).

modify

Key Role
match Which mobs (see section 7)
reasons For which spawn reasons (missing = all, including eggs and /summon)
chance Probability from 0.0 to 1.0
custom_name / custom_name_visible Custom name, visible or not
health Health points
attributes Stats (minecraft:generic.movement_speed, generic.attack_damage…)
equipment Equipment: head, chest, legs, feet, mainhand, offhand
effects Effects given to the mob

Each equipment piece accepts item, enchantments and drop_chance (probability of dropping the piece on death).

extra_spawns: extra mobs (entity, weight, group_min, group_max, when). About every 5 seconds, with a chance for each player in the zone, a group spawns 24-48 blocks away from them (8 mobs of the same type at most around).

entity_rules.json: a specific creature

Key Role
match Which creature
invulnerable true = takes no damage in the zone (except /kill and the void)
vanilla_loot The creature's usual loot (see the table below)
drops Extra items: item, count (a number or [min, max]), chance (0.0 to 1.0)
effects Same format as effects.json, the target is the match

vanilla_loot + drops, what happens?

vanilla_loot drops Result on death
missing missing Nothing changes
missing or true present Vanilla loot + your drops
false present Only your drops
false missing No loot at all

Players never lose their inventory because of this option.

blocks.json: breaking and placing blocks

Option Values Effect
break true / false / neutral Allow / forbid all block breaking
break_only list of blocks Only these blocks can be broken (the list wins over break)
place true / false / neutral Allow / forbid all block placing
place_only list of blocks Only these blocks can be placed (the list wins over place)

Lists accept ids (minecraft:oak_planks) and tags (#minecraft:logs).

Even in adventure mode. The normal game prevents all building in adventure mode, and the client does not even try. Zone Creator works around this cleanly: a player in adventure mode who enters a zone that allows something is temporarily switched to survival, with the rule "everything that is not explicitly allowed stays forbidden", exactly like in adventure mode. They go back to adventure mode when leaving (or disconnecting).

{ "break_only": ["#minecraft:logs"], "place": false }

→ Only logs can be broken, and nothing can be placed.

messages.json: enter and leave

Key Role
enabled Master switch of the messages
on_enter / on_leave One message on enter, one on leave, each with its own enabled
type chat · title (big title) · actionbar (above the hotbar)
text, subtitle, color The text, the subtitle (for title), the color (green, red, gold…)

Messages are disabled by default in the examples.

commands.json: commands on enter and on leave

{ "on_enter": ["tellraw %player% {\"text\":\"Welcome\"}"], "on_leave": [] }

%player% is replaced by the player's name. Commands are run by the server.


9. Example 1

The goal: a large area where players are safe, do not fight, heal, and are not endangered by the environment. It is the zone that contains all the files, with all the explanations.

It ships with json_enabled: false. Set it to true to try it.

zone.json: the identity of the zone

Key Value Explanation
json_enabled false Disabled (it is an example)
id zone_safe Name of the zone
dimension minecraft:overworld Normal world only
priority 50 Takes priority over zones with a lower priority
bypass operators · creative mode · zone_admin tag Admins ignore the rules
conditions always / any Active day and night, in any weather

shape.json: the shape

Shape Min corner Max corner Size
cuboid [-100, -64, -100] [100, 320, 100] about 200 × 200 blocks, full height

The file also contains a _shape_examples section with an example of each of the 7 shapes, ready to copy and paste.

spawning.json: no monsters

Group Option Value Result
hostile all false No monster spawns, whatever the reason
hostile spawn_egg true Except with a spawn egg (allowed exception)
passive everything neutral Animals spawn normally

damage.json: a peaceful zone

Option Value Result
player_to_player false No PvP
player_to_hostile false Players do not hurt monsters
player_to_passive false Players do not hurt animals
player_to_neutral_mob false Players do not hurt neutral creatures
hostile_to_player false Monsters do not hurt players
neutral_mob_to_player false Neutral creatures do not hurt players
passive_to_player / mob_to_mob neutral Vanilla
environment.fall false No fall damage
environment.explosion false No explosion damage
environment.projectile false No arrow damage
environment.starvation false No starvation damage
environment.fire, lava, drowning, magic, freeze, void neutral Vanilla (fire, lava and the void remain dangerous)

effects.json: healing and protection

Effect state Level Duration / repeat Target Result
minecraft:regeneration true II (amplifier: 1) 60 ticks, every 40 players Regeneration, removed on leaving
minecraft:saturation true I 20 ticks, every 20 players No more hunger, no icon, removed on leaving
minecraft:poison false : every 20 ticks players Cures poison and prevents it from coming back
minecraft:wither false : every 20 ticks players Cures wither
minecraft:hunger neutral : : players Does nothing (hunger stays vanilla)

entity_rules.json: protected villagers

Who Rule Result
minecraft:villager invulnerable: true Villagers take no damage in the zone

categories.json: two example categories

Category Members not_affected_by Effect
strength_immune zombie, Ender Dragon hostile These creatures escape the rules that target hostile
my_bosses Ender Dragon, wither, warden, elder guardian : A "boss" category ready to be used in targets or match

messages.json: ready but switched off

Message Type Text Color Enabled?
Enter title "Zone sécurisée" / "Vous êtes en sécurité ici" (safe zone / you are safe here) green No
Leave actionbar "Vous quittez la zone sécurisée" (you are leaving the safe zone) red No

To enable them: enabled: true at the top of the file, and enabled: true in each message.

The other files

File Content in this example
mob_modifiers.json Empty (see the dangerous zone for a filled example)
blocks.json Everything neutral + documentation and an example of strict lists
commands.json Empty lists, with an example command in the comment

In short: what a player experiences in zone_safe

  • They see no monsters spawn (unless they use an egg).
  • Nobody can hurt them, and they cannot hurt anybody.
  • They are healed continuously, and die neither from hunger nor from falling.
  • Villagers are untouchable.
  • Admins ignore all of this.

10. Example 2

The dangerous zone

The goal: a hostile, free-shaped zone (an "L"): poison, equipped monsters, more damage, no regeneration. It contains only the useful files: no messages.json, commands.json or entity_rules.json. What is missing is neutral.

It ships with json_enabled: false.

zone.json and shape.json

Key Value Explanation
id zone_dangereuse Name of the zone
dimension minecraft:overworld Normal world
priority 60 Higher priority than the safe zone (50)
bypass creative, spectator modes · zone_admin tag Operators are not exempt here
shape polygon, y_min -64, y_max 320 A 6-point "L"

The 6 points of the "L":

Point 1 2 3 4 5 6
[x, z] [500, 500] [560, 500] [560, 530] [530, 530] [530, 580] [500, 580]

spawning.json: monsters yes, animals no

Group Option Value Result
hostile natural true Monsters spawn naturally (forced)
hostile spawner true Monster spawners work (forced)
passive all false No animal can spawn

damage.json: tougher monsters

Option Value Result
multipliers.hostile_to_player 1.25 Monsters hit 25% harder
everything else neutral Vanilla

effects.json: the toxic zone

Effect state Level Target Condition Result
minecraft:poison true I players always Permanent poison (it stops at 1 heart, it does not kill)
minecraft:slowness true I players only when it rains Slowness in the rain, nothing otherwise
minecraft:regeneration false : players always No regeneration possible here
minecraft:speed true II monsters (hostile) always Monsters are faster

Player effects (poison, slowness) disappear on leaving (remove_on_leave).

mob_modifiers.json: equipped monsters

Zombies: the "Toxic Zombie" (named "Zombie toxique" in the file)

Setting Value
Which mobs minecraft:zombie
For which reasons natural spawning and spawners (natural, spawner)
Chance 100%
Name "Zombie toxique", visible
Health 40 points (20 hearts)
Speed 0.28
Attack damage 6.0
Knockback resistance 0.4
Helmet / chestplate / leggings / boots diamond (chestplate with Protection II), 5% chance to drop each piece
Hand iron sword Sharpness II, 10% chance to drop it
Effect Resistance I, infinite duration

Skeletons: the "Toxic Archer" (named "Archer toxique" in the file)

Setting Value
Which mobs all skeletons of the #minecraft:skeletons tag
For which reasons natural, spawner
Name "Archer toxique", invisible
Health 30 points
Helmet and chestplate iron, never dropped
Hand bow Power IV and Flame, never dropped

Extra mobs (extra_spawns)

Creature Weight Group size Condition
minecraft:witch 10 1 to 2 at night, in the dark (light level 7 or lower)

In short: what a player experiences in zone_dangereuse

  • They are poisoned permanently, slowed in the rain, and cannot regenerate.
  • Zombies are "Toxic Zombies" in diamond armor, fast and tough.
  • Skeletons are iron archers with a bow enchanted with Flame.
  • Witches come to visit at night in the dark.
  • Everything that hits them deals 25% more damage.
  • No animals in sight.

11. Stacking several zones

Reminder: zones complement each other option by option. So you can stack zones at the same place to separate rules that do not share the same conditions.

A concrete case: "leather zombies at night, restricted building all day"

  Zone 5 Zone 6
Coordinates a 10 × 10 square the same
conditions.time night always
Content zombies in leather armor + stone pickaxe place_only: oak and spruce planks · break_only: dark oak planks
  • During the day: only zone 6 is active, the block rules work.
  • At night: both are active and complement each other: leather zombies + block rules.

Example: one zone overlapping another

The dangerous zone (priority 60) could overlap part of the safe zone (priority 50).

Option Safe zone (50) Dangerous zone (60) Result in the shared part
hostile_to_player false (blocked) no opinion (only a 1.25 multiplier) blocked: only the safe zone has an opinion, monsters no longer hurt players
regeneration true false false: the dangerous zone has priority
poison false (cures) true (gives) true: the dangerous zone has priority
fall false not defined false: only the safe zone talks about it

Tip: if you want a zone to "complement" the others without ever contradicting them, leave neutral everything that does not concern it.

The "whole dimension" zone

The zone_toutes_dimensions folder uses the dimension shape: its rules apply everywhere in the chosen dimension(s) ("dimension": "*" for all of them). It is always the lowest level: any zone with coordinates goes in front of it.


12. Commands

Command Permission Effect
/zonecreator reload Operator (level 2) Re-reads all the files of config/zonecreator/ without restarting and shows any errors
/zonecreator list Operator (level 2) Lists the active zones (from the highest to the lowest priority) and the disabled zones

If a file has an error, the mod tells you which file and which option is the problem (up to 8 errors in the chat, the rest in latest.log), and everything that is correct keeps working.


13. Frequently asked questions and limits

- My rules do nothing, why? Check in this order: is json_enabled set to true? Is shape.json right (F3 for the coordinates)? Right dimension? Did you type /zonecreator reload? That command shows reading errors, and /zonecreator list shows which zones are really active.

- Should an admin ignore a zone? Yes: use bypass in zone.json (operators, game mode, player name or tag).

- Zombies do not spawn in my small zone. In a very small zone, natural spawning is rare. Test with spawn eggs (they work, because a missing reasons = all reasons).

- Why does minecraft:zombie not target drowned or husks? A type with a precise id only targets that creature. To target several, use a list or a tag.

- Does the mod work with other mods? Yes. The ids of creatures, items, blocks and effects from other mods work everywhere (e.g. "mymod:super_zombie").

- What does adventure mode do in a zone with blocks.json? See blocks.json. An adventure-mode player is temporarily switched to survival in zones that allow something, and goes back to adventure when leaving. Block rules apply according to the block's position, the mode switch according to the player's position.

Limits to know about

  • Mob modifications (equipment, stats) are applied at spawn time. A mob that is already there is not modified.
  • Effects are handled every 10 ticks (0.5 s) for creatures near players (96 blocks).
  • Extra mobs (extra_spawns) are attempted about every 5 seconds.
  • Block placing is checked for items placed by a player; explosions, endermen and other mobs are not covered by blocks.json.
  • For a player temporarily switched to survival, a bypass by game mode still sees them as being in adventure mode.

     

    Notes

    • Lightweight mod
    • Server side

Mod created by Mozork. All rights reserved.

 

Zone Creator Team

profile avatar
Owner
High Crafter tier icon
  • 39
    Followers
  • 59
    Projects
  • 1.5M
    Downloads

More from MozorkView all