Skip to content

Structures3

Derrick edited this page Nov 3, 2026 · 4 revisions

Structure files are the main files of the configuration. They contain the Structure Id, Spawner's information, and Pokemon information assigned to that Spawner. Loot tables are linked in this file by using the name of the json file in the "loot_table" folder.

Changes in the v3.0 structures are as follows:

  • variant - Determines which spawner texture is used when replacing a block/spawner. Defaults to the Default Texture.
  • listOfPokemonWaves & listOfOminousPokemonWaves - Is a new Wave mode for Spawners, allowing for wave based challenges and number of pokemon for the spawners.
  • pokemonSpawns - Is a required class that wraps all Pokemon Spawn lists. it is required.
  • pokemonInWave - Determine how many pokemon spawn before the wave is complete. Defaults to 4.
  • pokemonInWaveAddedPerPlayer - How many pokemon are added in addition to a wave per player. Defaults to 1.
  • pokemonToSpawn - Which pokemon to spawn within a wave based on weight.

Here is a example JSON file for a Structure with all fields (Please note that you would never use both waves and lists for spawning and this is an example):

Click To Expand:
{
  "structureId": "minecraft:fortress",
  "uniqueReplacementBlocks": {
    "minecraft:chest": "minecraft:skeleton"
  },
  "spawnerProperties": [
    {
      "blockTypesToReplace": ["minecraft:spawner"],
      "mobEntitiesInSpawnerToReplace": ["minecraft:blaze"],
      "variant": "fortress",
      "ticksBetweenSpawnAttempts": 40,
      "spawnerCooldown": 36000,
      "playerDetectionRange": 14,
      "spawnRange": 4,
      "maximumNumberOfSimultaneousPokemon": 2,
      "maximumNumberOfSimultaneousPokemonAddedPerPlayer": 1,
      "totalNumberOfPokemonPerTrial": 4,
      "totalNumberOfPokemonPerTrialAddedPerPlayer": 1,
      "lootTables": ["cobblemontrialsedition:fortress"],
      "ominousLootTables": ["cobblemontrialsedition:ominous-fortress"],
      "ominousSpawnerAttacksEnabled": false,
      "doPokemonSpawnedGlow": true,
      "pokemonSpawns": {
        "isWaveMode": false,
        "listOfPokemonToSpawn": [
          {
            "species": "charcadet",
            "weight": 10,
            "scaleModifier": 1,
            "isUncatchable": true,
            "mustBeDefeatedInBattle": true,
            "isAggressive": false,
            "isAlwaysAlpha": false,
            "aspects": "mini-boss",
            "spawnablePokemonStats": {
              "form": ["normal"],
              "level": 20,
              "gender": "male",
              "nature": "adamant",
              "defaultEVs": [0, 0, 0, 10, 0, 20],
              "defaultIVs": [0, 0, 0, 0, 0, 31],
              "ability": "flashfire",
              "moves": ["flamecharge", "lavaplume"],
              "heldItem": "minecraft:blaze_powder",
              "dynaMaxLevel": 0,
              "teraType": "bug",
              "isShiny": false
            }
          }
        ],
        "listOfOminousPokemonToSpawn": [
          {
            "species": "armarouge",
            "weight": 10,
            "scaleModifier": 1,
            "isUncatchable": true,
            "mustBeDefeatedInBattle": true,
            "isAggressive": false,
            "isAlwaysAlpha": false,
            "aspects": "mini-boss",
            "spawnablePokemonStats": {
              "form": ["normal"],
              "level": 40,
              "gender": "male",
              "nature": "adamant",
              "defaultEVs": [0, 0, 0, 10, 0, 20],
              "defaultIVs": [0, 0, 0, 0, 0, 31],
              "ability": "flashfire",
              "moves": ["armorcannon", "lavaplume"],
              "heldItem": "minecraft:blaze_rod",
              "dynaMaxLevel": 0,
              "teraType": "bug",
              "isShiny": false
            }
          }
        ],
        "listOfPokemonWaves": [
          {
            "pokemonInWave": 4,
            "pokemonInWaveAddedPerPlayer": 1,
            "pokemonToSpawn": [
              {
                "species": "charcadet",
                "weight": 10,
                "scaleModifier": 1,
                "isUncatchable": true,
                "mustBeDefeatedInBattle": true,
                "isAggressive": false,
                "isAlwaysAlpha": false,
                "aspects": "mini-boss",
                "spawnablePokemonStats": {
                  "form": ["normal"],
                  "level": 20,
                  "gender": "male",
                  "nature": "adamant",
                  "defaultEVs": [0, 0, 0, 10, 0, 20],
                  "defaultIVs": [0, 0, 0, 0, 0, 31],
                  "ability": "flashfire",
                  "moves": ["flamecharge", "lavaplume"],
                  "heldItem": "minecraft:blaze_powder",
                  "dynaMaxLevel": 0,
                  "teraType": "bug",
                  "isShiny": false
                }
              }
            ]
          },
          {
            "pokemonInWave": 1,
            "pokemonInWaveAddedPerPlayer": 1,
            "pokemonToSpawn": [
              {
                "species": "armarouge",
                "weight": 10,
                "scaleModifier": 1,
                "isUncatchable": true,
                "mustBeDefeatedInBattle": true,
                "isAggressive": false,
                "isAlwaysAlpha": true,
                "aspects": "mini-boss",
                "spawnablePokemonStats": {
                  "form": ["normal"],
                  "level": 40,
                  "gender": "male",
                  "nature": "adamant",
                  "defaultEVs": [0, 0, 0, 10, 0, 20],
                  "defaultIVs": [0, 0, 0, 0, 0, 31],
                  "ability": "flashfire",
                  "moves": ["armorcannon", "lavaplume"],
                  "heldItem": "minecraft:blaze_rod",
                  "dynaMaxLevel": 0,
                  "teraType": "bug",
                  "isShiny": false
                }
              }
            ]
          }
        ],
        "listOfOminousPokemonWaves": [
          {
            "pokemonInWave": 4,
            "pokemonInWaveAddedPerPlayer": 1,
            "pokemonToSpawn": [
              {
                "species": "charcadet",
                "weight": 10,
                "scaleModifier": 1,
                "isUncatchable": true,
                "mustBeDefeatedInBattle": true,
                "isAggressive": false,
                "isAlwaysAlpha": false,
                "aspects": "mini-boss",
                "spawnablePokemonStats": {
                  "form": ["normal"],
                  "level": 20,
                  "gender": "male",
                  "nature": "adamant",
                  "defaultEVs": [0, 0, 0, 10, 0, 20],
                  "defaultIVs": [0, 0, 0, 0, 0, 31],
                  "ability": "flashfire",
                  "moves": ["flamecharge", "lavaplume"],
                  "heldItem": "minecraft:blaze_powder",
                  "dynaMaxLevel": 0,
                  "teraType": "bug",
                  "isShiny": false
                }
              }
            ]
          },
          {
            "pokemonInWave": 1,
            "pokemonInWaveAddedPerPlayer": 1,
            "pokemonToSpawn": [
              {
                "species": "armarouge",
                "weight": 10,
                "scaleModifier": 1,
                "isUncatchable": true,
                "mustBeDefeatedInBattle": true,
                "isAggressive": false,
                "isAlwaysAlpha": true,
                "aspects": "mini-boss",
                "spawnablePokemonStats": {
                  "form": ["normal"],
                  "level": 40,
                  "gender": "male",
                  "nature": "adamant",
                  "defaultEVs": [0, 0, 0, 10, 0, 20],
                  "defaultIVs": [0, 0, 0, 0, 0, 31],
                  "ability": "flashfire",
                  "moves": ["bitterblade", "lavaplume"],
                  "heldItem": "minecraft:blaze_rod",
                  "dynaMaxLevel": 0,
                  "teraType": "bug",
                  "isShiny": false
                }
              },
              {
                "species": "ceruledge",
                "weight": 10,
                "scaleModifier": 1,
                "isUncatchable": true,
                "mustBeDefeatedInBattle": true,
                "isAggressive": false,
                "isAlwaysAlpha": true,
                "aspects": "mini-boss",
                "spawnablePokemonStats": {
                  "form": ["normal"],
                  "level": 40,
                  "gender": "female",
                  "nature": "adamant",
                  "defaultEVs": [0, 0, 0, 10, 0, 20],
                  "defaultIVs": [0, 0, 0, 0, 0, 31],
                  "ability": "flashfire",
                  "moves": ["armorcannon", "lavaplume"],
                  "heldItem": "minecraft:blaze_rod",
                  "dynaMaxLevel": 0,
                  "teraType": "bug",
                  "isShiny": false
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

Here is the same example file with the minimum required fields (Please note that you would never use both waves and lists for spawning and this is an example):

Click to Expand:
{
  "structureId": "minecraft:fortress",
  "spawnerProperties": [
    {
      "blockTypesToReplace": ["minecraft:spawner"],
      "mobEntitiesInSpawnerToReplace": ["minecraft:blaze"],
      "lootTables": ["cobblemontrialsedition:fortress"],
      "ominousLootTables": ["cobblemontrialsedition:ominous-fortress"],
      "spawns": {
        "listOfPokemonToSpawn": [{"species": "charcadet"}],
        "listOfOminousPokemonToSpawn": [{"species": "armarouge"}],
        "listOfPokemonWaves": [
          {
            "pokemonToSpawn": [{"species": "charcadet"}]
          },
          {
            "pokemonToSpawn": [{"species": "armarouge"}]
          }
        ],
        "listOfOminousPokemonWaves": [
          {
            "pokemonToSpawn": [{"species": "charcadet"}]
          },
          {
            "pokemonToSpawn": [
              {"species": "armarouge"},
              {"species": "ceruledge"}
            ]
          }
        ]
      }
    }
  ]
}

Here is a detailed breakdown of each field and what they do in the json file:


structureId - holderset(list or tags of ResourceLocations) - (Required)

  • The full id of the structure that the spawners will be replaced.
  • Examples: "minecraft:stronghold", ["nova_structures:trident_trial_monument", "minecraft:stronghold"]["#nova_structures:shrines"])

uniqueReplacementBlocks- _map of Resourcelocation, ResourceLocation- (Optional)

  • A Mappable list of Resourcelocations used to map any block to any type of entity to be replaced with a configuration.
  • Examples: "minecraft:sculk_shrieker": "minecraft:skeleton", "minecraft:gold_block": "minecraft:zombie") See Sculk_Patch json file for an example.

spawnerProperties - list of spawnerProperties - (Required)

  • An array of spawner properties. Each spawner property contains all of the information for a spawner replacement.

blockTypesToReplace - list of strings - (Required)

  • The ids of either the Mob Spawner or Trial Spawner that you want to replace with these settings in the structure, since it is an array you can list both.
  • Note: It cannot be any other id then the following:
  • minecraft:spawner
  • minecraft:trial_spawner

mobEntitiesInSpawnerToReplace - list of strings - (Required)

  • The ids of the mobs that exist in the spawner in the structure that you want to replace. This is a list, so if you want to replace multiple spawners that have different mobs in them with the same type of Cobblemon Trial Spawner, you can list them.
  • Example: if you want to replace a Mob Spawner that spawns blazes, you want to use the id of the blaze, "minecraft:blaze"
  • Note: If you are replacing Sculk Shriekers it needs to be the following:
  • minecraft:warden

variant - string - (Optional)

  • the texture variant you would want to use when the spawner is replaced.
  • Example: if you want the nether fortress themed spawner you would use "fortress"
  • Note: Check the items page to see all spawner textures.

ticksBetweenSpawnAttempts - int - (Optional) - Default: 40

  • The number of ticks the Cobblemon Trial Spawner will wait before attempting to spawn another pokemon.

spawnerCooldown - int - (Optional) - Default: 36000

  • The number of ticks the Cobblemon Trial Spawner waits after a trial is finished before being ready to spawn again.

playerDetectionRange - int - (Optional) - Default: 14

  • The number of blocks that the Cobblemon Trial Spawner will check for a player to activate and start spawning.

spawnRange - int - (Optional) - Default: 4

  • The number of blocks the Cobblemon Trial Spawner will check to spawn a Pokemon.

maximumNumberOfSimultaneousPokemon - int - (Optional) - Default: 2

  • The maximum number of pokemon the Cobblemon Trial Spawner will allow spawned at the same time.

maximumNumberOfSimultaneousPokemonAddedPerPlayer - int - (Optional) - Default: 1

  • The amount each additional player will add to the maximum limit the Cobblemon Trial Spawner will allow spawned at the same time.

totalNumberOfPokemonPerTrial - int - (Optional) - Default: 4

  • The total amount of Pokemon spawned by the Cobblemon Trial Spawner before the trial ends and loot is dispensed.

totalNumberOfPokemonPerTrialAddedPerPlayer - int - (Optional) - Default: 1

  • The amount each additional player will add to the total number of Pokemon the Cobblemon Trial Spawner will spawn per trial.

lootTables - list of lootTables - (Required)

  • The List of loot tables that the Cobblemon Trial Spawner will dispense from when a trial is completed.
  • Notes:
  • If replacing a Minecraft Trial Spawner, leaving this empty will have the Cobblemon Trial Spawner inherit the loot tables.
  • You can use any Loot Table, including Minecraft Loot Tables or other Modded Tables.
  • If you create your own Loot table in the "loot_table" folder, it will need the cobblemontrialsedition location. "cobblemontrialsedition:fortress"

ominousLootTables - list of lootTables - (Required)

  • The List of loot tables that the Cobblemon Trial Spawner will dispense when it is Ominous.
  • Notes:
  • If replacing a Minecraft Trial Spawner, leaving this empty will have the Cobblemon Trial Spawner inherit the loot tables.
  • You can use any Loot Table, including Minecraft Loot Tables or other Modded Tables.
  • If you create your own Loot table in the "loot_table" folder, it will need the cobblemontrialsedition location. "cobblemontrialsedition:fortress"

ominousSpawnerAttacksEnabled - boolean - (Optional) - Default: false

  • This will determine if the Spawner is Ominous, Splash potions will be ejected at players and pokemon during the duration of the trial.

doPokemonSpawnedGlow - boolean - (Optional) - Default: true

  • This determines if Spawned Pokemon from Cobblemon Trial Spawners are glowing.

pokemonSpawns - single Class - (Required)

  • This is the class that contains the list of pokemon to spawn and waves. It is required.

listOfPokemonToSpawn - list of pokemonProperties - (Optional)

  • This is a list of Pokemon that will be spawned by the Cobblemon Trial Spawner
  • Please see the Pokemon Page for a more detailed breakdown.

listOfOminousPokemonToSpawn - list of pokemonProperties - (Optional)

  • This is a list of Pokemon that will be spawned by the Cobblemon Trial Spawner when it is Ominous.
  • Please see the Pokemon Page for a more detailed breakdown.

listOfPokemonWaves - list of PokemonWaveDefinition - (Optional)

  • This is a list of Pokemon waves that will be spawned by the Cobblemon Trial Spawner.
  • Please see the Pokemon Page for a more detailed breakdown.

listOfOminousPokemonWaves - list of PokemonWaveDefinition - (Optional)

  • This is a list of Pokemon waves that will be spawned by the Cobblemon Trial Spawner when it is Ominous.
  • Please see the Pokemon Page for a more detailed breakdown.

pokemonInWave - int - (Optional)

  • The total number of pokemon that will spawn in this wave. Defaults to 4.

pokemonInWaveAddedPerPlayer - int - (Optional)

  • The total number of pokemon added per player that will spawn in this wave. Defaults to 1.

pokemonToSpawn - list of pokemonProperties - (Optional)

  • This is a weighted list of Pokemon that will be spawned within the wave by the Cobblemon Trial Spawner.

Clone this wiki locally