Preface

The spawn_pool_world folder contains the JSON files that control how a Pokémon spawns naturally. For simplicity, most people call them spawn files. These files dictate which Pokémon will spawn, its rarity , its level, and the conditions it will spawn in. Every implemented Pokémon has at least one set of spawn data. Without this spawn data, a Pokémon can only be spawned through commands.

Spawn File Breakdown

The data in spawn files can be rather self-explanatory. These files can be as simple as spawning in the forest, or as complicated as only spawning at 2:30-3:00AM on top of clay during the new moon in an ocean biome that is south of spawn.

Here is a breakdown of Bulbasaur's spawn file. Hover over the underlined text to see more information.

{
   "enabled": true,
   "neededInstalledMods": [],
   "neededUninstalledMods": [],
   "spawns": [
       {
           "id": "bulbasaur-1",
           "pokemon": "bulbasaur",
           "presets": [
               "natural"
           ],
           "type": "pokemon",
           "context": "grounded",
           "bucket": "ultra-rare",
           "level": "5-32",
           "weight": 9.0,
           "condition": {
               "canSeeSky": true,
               "biomes": [
                   "#cobblemon:is_jungle"
               ]
           }
       }
   ]
}

Bulbasaur is an ultra-rare spawn which occurs 0.1% of the time. It can only spawn on natural blocks, like grass, that are in a jungle biome while the sky is visible. It cannot spawn under trees.

Here is a list of options that some of the spawn properties can use:

  • "presets": You can use any of these presets listed on the Gitlab or you can make your own presets.
  • "context": You can choose between "grounded" for land spawns, "submerged" for underwater spawns, and "surface" for spawns on the surface of water or lava.
  • "bucket": The rarity pool of the Pokémon. You can choose "common", "uncommon", "rare", or "ultra-rare"
  • "weight": This determines how common the Pokémon will be inside of the assigned rarity pool. Generally, you can treat it like a scale of 0.1 to 10 on how rare it will be in that pool. You can use numbers higher than 10 if you really want that Pokémon to spawn more often.
  • "condition": You can use any of the conditions listed here to make Pokémon spawn
  • "anticondition": You can use any of the conditions listed here to PREVENT a Pokémon from spawning
  • "biomes": A subcategory of conditions and anticonditions. You can use biome id's or any biome tags. Should work with modded biome id's too!


Spawn File Examples

Instead of making spawn files from scratch each time, you can use familiar Pokémon as a template. You can simply swap their names for the id and pokemon properties. Here are some simple examples of different spawn files.

  • Buneary's spawn file - A great template for common land pokemon
{
   "enabled": true,
   "neededInstalledMods": [],
   "neededUninstalledMods": [],
   "spawns": [
       {
           "id": "buneary-1",
           "pokemon": "buneary",
           "presets": [
               "natural"
           ],
           "type": "pokemon",
           "context": "grounded",
           "bucket": "common",
           "level": "8-35",
           "weight": 9.9,
           "condition": {
               "canSeeSky": true,
               "biomes": [
                   "#cobblemon:is_forest",
                   "#cobblemon:is_hills",
                   "#cobblemon:is_snowy"
               ]
           }
       }
   ]
}


  • Magikarp's spawn file - A great template for common aquatic pokemon
{
   "enabled": true,
   "neededInstalledMods": [],
   "neededUninstalledMods": [],
   "spawns": [
       {
           "id": "magikarp-1",
           "pokemon": "magikarp",
           "presets": [
               "freshwater",
               "underwater"
           ],
           "type": "pokemon",
           "context": "submerged",
           "bucket": "common",
           "level": "1-20",
           "weight": 9.9,
           "condition": {
               "canSeeSky": true
           }
       },
       {
           "id": "magikarp-2",
           "pokemon": "magikarp",
           "presets": [
               "underwater"
           ],
           "type": "pokemon",
           "context": "submerged",
           "bucket": "common",
           "level": "1-20",
           "weight": 9.9,
           "condition": {
               "canSeeSky": true,
               "biomes": [
                   "#minecraft:is_ocean"
               ]
           }
       }
   ]
}


  • Klink's spawn file - A great template for nearby block requirements, and mod compatibility!
{
   "enabled": "true",
   "neededInstalledMods": [],
   "neededUninstalledMods": [],
   "spawns": [
       {
           "id": "klink-1",
           "pokemon": "klink",
           "presets": [
               "underground"
           ],
           "type": "pokemon",
           "context": "grounded",
           "bucket": "uncommon",
           "level": "12-30",
           "weight": 9.0,
           "condition": {
               "canSeeSky": false,
               "biomes": [
                   "#cobblemon:is_overworld"
               ],
               "neededNearbyBlocks": [
                   "#c:redstone_ores",
                   "minecraft:rail"
               ]
           },
           "anticondition": {
               "biomes": [
                   "#cobblemon:is_abyss"
               ]
           }
       },
       {
           "id": "klink-2",
           "pokemon": "klink",
           "presets": [
               "redstone"
           ],
           "type": "pokemon",
           "context": "grounded",
           "bucket": "uncommon",
           "level": "12-30",
           "weight": 9.0,
           "condition": {
               "biomes": [
                   "#cobblemon:is_overworld"
               ],
               "neededNearbyBlocks": [
                   "create:cogwheel",
                   "create:large_cogwheel",
                   "create:gearbox",
                   "create:vertical_gearbox"
               ]
           }
       }
   ]
}