← CityWorld: Zoo

Config & commands

Every dial is in config/cityworld_zoo-common.toml. Spawning is read when a world's biomes are built, so those take a restart; behaviour is read live. Two commands, both for operators.

[spawns]

Natural spawning, species by species.

One master switch, then a block per species with the same five dials. CityWorld's zoos and a pack's own spawns are separate from all of this.

Setting Default What it does
natural true Spawn the animals naturally at all. Off, they only come from zoos, eggs and whatever spawns them on purpose.
<species>.enabled true This species spawns naturally.
<species>.weight 2 to 8 0-1000 Spawn weight against the biome's other creatures. The defaults are on the animals page.
<species>.minHerd 1 to 3 1-32 Herd size when a group spawns - the smallest.
<species>.maxHerd 2 to 6 1-32 And the largest.
<species>.biomes per species Biome ids or #tags it spawns in. Empty means nowhere.

The species keys are giraffe, zebra, lion, elephant, tiger, rhesus_macaque, deer and brown_bear. A block looks like this:

[spawns]
    natural = true

    [spawns.deer]
        enabled = true
        weight = 8
        minHerd = 2
        maxHerd = 5
        biomes = ["#minecraft:is_forest", "#minecraft:is_taiga"]

[behaviour]

What the animals do to each other, and to you.

Setting Default What it does
hunt true Lions hunt zebras, deer and farm animals; tigers hunt deer, macaques and farm animals.
huntInterval 1200 20-72000 How keen a hunter is: on average one hunt starts per this many ticks of having prey in view. 20 ticks is a second, so 1200 is a minute.
huntRest 6000 0-72000 Ticks a predator rests after a kill before it hunts again. Five minutes by default.
protectYoung true Lions, tigers and bears attack a player who comes near their cub, as a polar bear does.
protectRange 8 1-32 How near to a cub, in blocks, is too near.

Commands

Two, for operators.

/zoo status

Op

What is registered - the eight entity types, their eggs and sounds - and which build this is. The first thing to run when something looks wrong.

/zoo count [radius]

Op

What is loaded near you, counted by species, within that many blocks (1 to 512).

▸

No permission nodes. Both commands are gated on operator level 2. Players need neither: the animals are met in the world, bred with their food, or placed with a spawn egg.

For pack authors

The zoo entries are datapack files.

Each animal's place in CityWorld's zoos is one JSON file in this jar, under data/cityworld_zoo/cityworld/zoo/animal/, and its pen one under .../zoo/habitat/. A pack that ships the same path replaces it: set the weight to 0 to take an animal out of the zoos, or point it at a habitat of your own.

// data/cityworld_zoo/cityworld/zoo/animal/lion.json - ship this path in your pack to take lions out of the zoos
{ "entity": "cityworld_zoo:lion", "name": "Lions", "weight": 0,
  "count": { "min": 1, "max": 3 }, "baby_chance": 0.2,
  "size": "small", "habitat": "cityworld_zoo:savanna", "requires_mod": "cityworld_zoo" }

Pen sizes are small, large (the big multi-chunk pens) and tall (a four-high fence). requires_mod is what lets an entry sit harmlessly in a world without the mod it names: CityWorld skips it quietly. The full format, habitats included, is in CityWorld's palettes guide on GitHub.

For spawn rules, the entity-type tag #cityworld_zoo:zoo_animals lists all eight, and each has an ordinary loot table at cityworld_zoo:entities/<animal>. The animals are plain vanilla-style animals with the standard constructor and attributes, so a mod that makes variants of creatures can use them as bases.