▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Cobblemon Boss
Cobblemon Boss

Cobblemon Boss

A mod that allows you to infinitely add and customize your own exclusive Bosses in the Cobblemon world.

722.8K
17

Cobblemon Boss User Guide

pack.mcmeta
data/
└─ cobblemonboss/
   └─ bosses/
      ├─ blastoise.json
      ├─ charizard.json
      └─ venusaur.json

File Structure

This datapack includes the following files:

  • pack.mcmeta
  • data/cobblemonboss/bosses/blastoise.json
  • data/cobblemonboss/bosses/charizard.json
  • data/cobblemonboss/bosses/venusaur.json

Where:

  • pack.mcmeta: datapack metadata file
  • blastoise.json: Blastoise boss data
  • charizard.json: Charizard boss data
  • venusaur.json: Venusaur boss data

1. Beginner Guide to Boss Data Packs

1.1 What is this configuration for?

A Boss JSON defines the complete data for one Boss Pokémon.

It mainly controls the following:

  • Which Pokémon the Boss is
  • What its displayed name is
  • Where and when it can spawn
  • What rewards are given after defeating it
  • What punishments happen after losing
  • What moves, stats, and battle mode it uses in combat

1.2 Recommended way to understand it

When creating a Boss, the most important thing is to think about these 4 parts first:

1) Who it is

  • unique_id
  • species_id
  • display_name

2) How it spawns

  • spawn_rule

3) What happens when players win or lose

  • reward_rule
  • punish_rule

4) How it fights

  • random_configs
  • moves
  • custom_battle_stats
  • phase_skills
  • battle_mode
  • actions_per_turn

1.3 Most basic filling suggestions

Required

  • unique_id
  • species_id
  • random_configs

Recommended

  • display_name
  • moves

Optional, depending on your needs

  • spawn_rule
  • reward_rule
  • punish_rule
  • effort_values
  • custom_battle_stats
  • phase_skills
  • battle_mode
  • actions_per_turn
  • held_items
  • nature
  • ability
  • form

1.4 Standard template

{
  "unique_id": "blastoise_water_boss",
  "display_name": "§9Boss",
  "species_id": "cobblemon:blastoise",
  "spawn_rule": {
    "spawn_locations": ["cave"],
    "spawn_times": ["all_day"],
    "spawn_biomes": [
      "minecraft:dripstone_caves",
      "#minecraft:is_ocean"
    ],
    "spawn_weight": 4
  },
  "reward_rule": {
    "reward_items": [
      {
        "item_id": "cobblemon:rare_candy",
        "count": 10
      },
      {
        "item_id": "cobblemon:rare_candy",
        "count": 10,
        "chance": 0.1
      },
      {
        "command": "givepokemonother {player} squirtle",
        "chance": 0.1
      },
      {
        "command": "givepokemonother {player} squirtle"
      }
    ]
  },
  "punish_rule": {
    "punish_items": [
      {
        "level": 5,
        "chance": 1
      },
      {
        "evs": {
          "hp": 1,
          "attack": 1,
          "defense": 1,
          "special_attack": 1,
          "special_defense": 1,
          "speed": 1
        },
        "chance": 1
      },
      {
        "ivs": {
          "hp": 1,
          "attack": 1,
          "defense": 1,
          "special_attack": 1,
          "special_defense": 1,
          "speed": 1
        },
        "chance": 0.01
      },
      {
        "command": "effect give {player} minecraft:hunger 60 0 true",
        "chance": 1
      }
    ]
  },
  "random_configs": [
    {
      "shiny": false,
      "effort_values": {
        "hp": 252,
        "attack": 0,
        "defense": 252,
        "special_attack": 0,
        "special_defense": 4,
        "speed": 0
      },
      "custom_battle_stats": {
        "hp": {
          "value": 5000,
          "mode": "exact"
        },
        "attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "speed": {
          "value": 1000,
          "mode": "minimum"
        }
      },
      "battle_mode": "6v1",
      "actions_per_turn": 6,
      "moves": ["scald", "icywind", "yawn", "protect"],
      "nature": "bold",
      "ability": "torrent",
      "form": "",
      "held_items": ["cobblemon:leftovers"],
      "phase_skills": [
        {
          "hp_percent": 90,
          "moves": ["scald", "icywind", "yawn", "toxic"]
        },
        {
          "hp_percent": 80,
          "moves": ["waterpulse", "flashcannon", "rest", "protect"]
        },
        {
          "hp_percent": 70,
          "moves": ["surf", "darkpulse", "irondefense", "amnesia"]
        },
        {
          "hp_percent": 60,
          "moves": ["hydropump", "aurasphere", "protect", "raindance"]
        },
        {
          "hp_percent": 50,
          "moves": ["hydrocannon", "blizzard", "shellsmash", "focusenergy"]
        }
      ]
    },
    {
      "shiny": false,
      "effort_values": {
        "hp": 252,
        "attack": 0,
        "defense": 252,
        "special_attack": 0,
        "special_defense": 4,
        "speed": 0
      },
      "custom_battle_stats": {
        "hp": {
          "value": 5000,
          "mode": "exact"
        },
        "attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "speed": {
          "value": 1000,
          "mode": "minimum"
        }
      },
      "battle_mode": "5v1",
      "actions_per_turn": 5,
      "moves": ["rapidspin", "brine", "toxic", "yawn"],
      "nature": "bold",
      "ability": "torrent",
      "form": "",
      "held_items": ["cobblemon:leftovers"],
      "phase_skills": [
        {
          "hp_percent": 90,
          "moves": ["rapidspin", "brine", "toxic", "yawn"]
        },
        {
          "hp_percent": 80,
          "moves": ["waterpulse", "flashcannon", "rest", "protect"]
        },
        {
          "hp_percent": 70,
          "moves": ["surf", "dragonpulse", "raindance", "irondefense"]
        },
        {
          "hp_percent": 60,
          "moves": ["hydropump", "darkpulse", "protect", "haze"]
        },
        {
          "hp_percent": 50,
          "moves": ["hydrocannon", "focusblast", "shellsmash", "focusenergy"]
        }
      ]
    },
    {
      "shiny": false,
      "effort_values": {
        "hp": 252,
        "attack": 0,
        "defense": 0,
        "special_attack": 252,
        "special_defense": 4,
        "speed": 0
      },
      "custom_battle_stats": {
        "hp": {
          "value": 5000,
          "mode": "exact"
        },
        "attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_attack": {
          "value": 1000,
          "mode": "maximum"
        },
        "special_defense": {
          "value": 1000,
          "mode": "maximum"
        },
        "speed": {
          "value": 1000,
          "mode": "minimum"
        }
      },
      "battle_mode": "4v1",
      "actions_per_turn": 4,
      "moves": ["hydropump", "flashcannon", "shellsmash", "focusenergy"],
      "nature": "modest",
      "ability": "torrent",
      "form": "",
      "held_items": ["cobblemon:wise_glasses"],
      "phase_skills": [
        {
          "hp_percent": 90,
          "moves": ["icywind", "darkpulse", "yawn", "taunt"]
        },
        {
          "hp_percent": 80,
          "moves": ["scald", "flashcannon", "rest", "protect"]
        },
        {
          "hp_percent": 70,
          "moves": ["surf", "icebeam", "shellsmash", "raindance"]
        },
        {
          "hp_percent": 60,
          "moves": ["hydropump", "dragonpulse", "protect", "focusenergy"]
        },
        {
          "hp_percent": 50,
          "moves": ["hydrocannon", "aurasphere", "blizzard", "nastyplot"]
        }
      ]
    }
  ]
}

2. Top-level field descriptions

unique_id

Purpose The unique ID of the Boss.

How to understand it This is the internal name used to distinguish this Boss from other Bosses.

Recommendation Required.

Example

"unique_id": "blastoise_dripstone_caves_boss"

Suggestions

  • Use lowercase English letters and underscores
  • Do not use the same ID as another Boss

display_name

Purpose The name displayed to players.

How to understand it This is the name players will see in-game.

Recommendation Recommended.

Example

"display_name": "§9Boss"

Notes

  • Color codes can be used
  • Useful for making the Boss name more eye-catching

species_id

Purpose The Pokémon species ID of the Boss.

How to understand it This determines which Pokémon species the Boss actually is.

Recommendation Required.

Example

"species_id": "cobblemon:blastoise"

spawn_rule

Purpose Defines the spawning rules of the Boss.

How to understand it Controls where, when, and in which biomes the Boss can spawn.

Recommendation Optional.

Example

"spawn_rule": { ... }

reward_rule

Purpose Defines the rewards after defeating the Boss.

Recommendation Optional.

Example

"reward_rule": { ... }

punish_rule

Purpose Defines the punishments after losing the challenge.

Recommendation Optional.

Example

"punish_rule": { ... }

random_configs

Purpose A list of random battle configurations for the Boss.

How to understand it The same Boss can have multiple variants, and one will be randomly chosen when it spawns.

Recommendation Required.

Example

"random_configs": [ ... ]

3. spawn_rule Spawn Rules

spawn_locations

Purpose Restricts the type of location where the Boss can spawn.

Recommendation Optional.

Example

"spawn_locations": ["cave"]

Available values

ValueMeaning
landLand
water_surfaceWater surface
underwaterUnderwater
caveCave
skySky
lavaLava area

spawn_times

Purpose Restricts the time period when the Boss can spawn.

Recommendation Optional.

Example

"spawn_times": ["all_day"]

or

"spawn_times": ["night", "midnight"]

Time range rules used by the mod

The time ranges are determined by the server world time in Minecraft.

The current implementation uses this logic:

long dayTime = level.getDayTime() % 24000;

if (dayTime >= 0 && dayTime < 3000) {
    return early_morning;
} else if (dayTime >= 3000 && dayTime < 6000) {
    return morning;
} else if (dayTime >= 6000 && dayTime < 12000) {
    return noon;
} else if (dayTime >= 12000 && dayTime < 15000) {
    return afternoon;
} else if (dayTime >= 15000 && dayTime < 18000) {
    return dusk;
} else if (dayTime >= 18000 && dayTime < 21000) {
    return night;
} else {
    return midnight;
}

That means the actual time mapping is:

ValueTick rangeMeaning
all_dayspecial valueCan spawn at any time
early_morning0 - 2999Early morning
morning3000 - 5999Morning
noon6000 - 11999Noon / daytime
afternoon12000 - 14999Afternoon
dusk15000 - 17999Dusk
night18000 - 20999Night
midnight21000 - 23999Midnight

Important notes about spawn_times

  • A Minecraft day is 24000 ticks
  • The mod checks the current time by using level.getDayTime() % 24000
  • Writing multiple values means multiple time periods are allowed
  • all_day is a special value that means no time restriction
  • The code itself returns one of the real time segments such as morning, night, or midnight
  • all_day is usually handled inside the spawn rule check logic as “always allowed”

Examples

Only spawn at night:

"spawn_times": ["night"]

Only spawn late at night:

"spawn_times": ["midnight"]

Spawn during both dusk and night:

"spawn_times": ["dusk", "night"]

Spawn at any time:

"spawn_times": ["all_day"]

spawn_biomes

Purpose Restricts the biomes where the Boss can spawn.

Recommendation Optional.

Example

"spawn_biomes": [
  "minecraft:dripstone_caves",
  "#minecraft:is_ocean"
]

Two ways to write it

Normal biome:

"minecraft:dripstone_caves"

Biome tag:

"#minecraft:is_ocean"

Notes

  • Writing a biome ID means it only spawns in that biome
  • Writing a biome tag starting with # means it can spawn in all biomes under that tag

spawn_weight

Purpose Controls the spawn weight of this Boss.

Recommendation Optional.

Example

"spawn_weight": 4

Notes

  • Usually use a positive integer
  • When multiple Bosses are considered together, a larger value usually means a higher chance to be selected

4. reward_rule Reward Rules

reward_items

Purpose The list of reward entries.

Recommendation Fill this if you want rewards.

Example

"reward_items": [
  {
    "item_id": "cobblemon:rare_candy",
    "count": 10
  }
]

Fields of a single reward entry

item_id

Purpose The reward item.

Example

{
  "item_id": "cobblemon:rare_candy"
}

Notes

  • Use this when you want to give an item

count

Purpose The number of items.

Example

{
  "item_id": "cobblemon:rare_candy",
  "count": 10
}

Notes

  • Optional
  • If omitted, it is usually treated as 1

command

Purpose Executes a command as a reward.

Example

{
  "command": "givepokemonother {player} squirtle"
}

Notes

  • Useful for giving Pokémon, titles, points, currency, and more
  • Supports the {player} placeholder

chance

Purpose The trigger probability of the reward.

Example

{
  "item_id": "cobblemon:rare_candy",
  "count": 10,
  "chance": 0.1
}

Notes

  • 1 means 100%
  • 0.5 means 50%
  • 0.1 means 10%

Common reward examples

Item reward:

{
  "item_id": "cobblemon:rare_candy",
  "count": 10
}

Chance-based item reward:

{
  "item_id": "cobblemon:rare_candy",
  "count": 10,
  "chance": 0.1
}

Command reward:

{
  "command": "givepokemonother {player} squirtle"
}

Chance-based command reward:

{
  "command": "givepokemonother {player} squirtle",
  "chance": 0.1
}

5. punish_rule Punishment Rules

punish_items

Purpose The list of punishment entries.

Recommendation Fill this if you want punishments.

Example

"punish_items": [
  {
    "level": 5,
    "chance": 1
  }
]

Fields of a single punishment entry

level

Purpose Reduces levels.

Example

{
  "level": 5,
  "chance": 1
}

evs

Purpose Reduces effort values.

Example

{
  "evs": {
    "hp": 1,
    "attack": 1
  },
  "chance": 1
}

Available keys

  • hp
  • attack
  • defense
  • special_attack
  • special_defense
  • speed

Notes

  • Only write the stats you want to reduce
  • You do not need to write all six stats

ivs

Purpose Reduces individual values.

Example

{
  "ivs": {
    "hp": 1,
    "speed": 1
  },
  "chance": 0.01
}

Available keys

  • hp
  • attack
  • defense
  • special_attack
  • special_defense
  • speed

Notes

  • Same here, only write the stats you want to reduce

command

Purpose Executes a command as a punishment.

Example

{
  "command": "effect give {player} minecraft:hunger 60 0 true",
  "chance": 1
}

Notes

  • Useful for negative effects, taking money, teleporting, broadcasting messages, and more
  • Supports the {player} placeholder

chance

Purpose The trigger probability of the punishment.

Example

{
  "level": 5,
  "chance": 1
}

Notes

  • 1 means it always triggers
  • 0.01 means a 1% chance

6. A single random_configs battle configuration

shiny

Purpose Whether the Boss is shiny.

Example

"shiny": false

Recommendation Recommended.


effort_values

Purpose The EV spread of the Boss.

Example

"effort_values": {
  "hp": 252,
  "attack": 0,
  "defense": 252,
  "special_attack": 0,
  "special_defense": 4,
  "speed": 0
}

Available keys

  • hp
  • attack
  • defense
  • special_attack
  • special_defense
  • speed

Notes

  • Used to define whether the Boss is bulky, physical, special, and so on
  • Usually a single stat does not exceed 252, and the total does not exceed 510

custom_battle_stats

Purpose Custom battle stats for the Boss.

Example

"custom_battle_stats": {
  "hp": {
    "value": 5000,
    "mode": "exact"
  },
  "speed": {
    "value": 1000,
    "mode": "minimum"
  }
}

Notes

  • Useful for making true boss-level stats
  • You do not need to write all six stats
  • Only write the stats you want to modify

Available stat keys

  • hp
  • attack
  • defense
  • special_attack
  • special_defense
  • speed

value

Purpose The target stat value.

Example

"value": 5000

Notes

  • Usually a positive integer

mode

Purpose Defines how the stat value is applied.

Example

"mode": "exact"

Available values

  • exact
  • minimum
  • maximum

Meaning

  • exact: use this value directly
  • minimum: at least this value
  • maximum: at most this value

battle_mode

Purpose Defines the battle size mode.

Example

"battle_mode": "6v1"

or

"battle_mode": "six_vs_one"

Available values

  • 1v1 / one_vs_one
  • 2v1 / two_vs_one
  • 3v1 / three_vs_one
  • 4v1 / four_vs_one
  • 5v1 / five_vs_one
  • 6v1 / six_vs_one

Notes

  • Useful for multiplayer boss fights
  • “X v 1” means up to X players can fight 1 Boss together

actions_per_turn

Purpose The number of actions the Boss can take per turn.

Example

"actions_per_turn": 6

Notes

  • This means how many times the Boss can act in one turn
  • This value cannot exceed the player limit defined by the current battle_mode
  • In other words, if the battle mode is X v 1, then this value can be at most X

Limits by battle mode

  • 1v1 / one_vs_one → max 1
  • 2v1 / two_vs_one → max 2
  • 3v1 / three_vs_one → max 3
  • 4v1 / four_vs_one → max 4
  • 5v1 / five_vs_one → max 5
  • 6v1 / six_vs_one → max 6

Examples

  • If "battle_mode": "6v1", then "actions_per_turn" can be at most 6
  • If "battle_mode": "3v1", then "actions_per_turn" can be at most 3

Recommendation

  • Increase it when designing multiplayer Bosses
  • Do not set it far above the battle scale, or the fight will become very unbalanced

moves

Purpose The initial moveset of the Boss.

Example

"moves": ["scald", "icywind", "yawn", "protect"]

Recommendation Recommended.

Notes

  • Designing around 4 moves is usually the most intuitive

nature

Purpose The Boss nature.

Example

"nature": "bold"

Recommendation Optional.


ability

Purpose The Boss ability.

Example

"ability": "torrent"

Recommendation Optional.


form

Purpose The Boss form.

Example

"form": ""

or

"form": "mega"

Recommendation Optional.


held_items

Purpose The list of held items for the Boss.

Example

"held_items": ["cobblemon:leftovers"]

Recommendation Optional.


phase_skills

Purpose Moveset changes based on HP phases.

Example

"phase_skills": [
  {
    "hp_percent": 90,
    "moves": ["scald", "icywind", "yawn", "toxic"]
  },
  {
    "hp_percent": 80,
    "moves": ["waterpulse", "flashcannon", "rest", "protect"]
  }
]

Notes

  • Useful for multi-phase Boss fights
  • The Boss switches to another moveset after reaching a certain HP threshold

7. Single phase skill description

hp_percent

Purpose The HP percentage that triggers the phase.

Example

"hp_percent": 90

Notes

  • Usually written as a number from 1 to 100
  • Means the phase is entered when HP is less than or equal to this percentage

moves

Purpose The moveset used in this phase.

Example

"moves": ["scald", "icywind", "yawn", "toxic"]

Notes

  • Usually 1 to 4 moves

8. Full stat key list

The following keys appear repeatedly in effort_values, evs, ivs, and custom_battle_stats:

"hp"
"attack"
"defense"
"special_attack"
"special_defense"
"speed"

Their meanings are:

  • hp: HP
  • attack: Attack
  • defense: Defense
  • special_attack: Special Attack
  • special_defense: Special Defense
  • speed: Speed

9. Most common beginner design ideas

Making the most basic Boss

At minimum, think about:

  • unique_id
  • species_id
  • display_name
  • random_configs
  • moves

Making a naturally spawning Boss

Also add:

  • spawn_rule
  • spawn_locations
  • spawn_times
  • spawn_biomes
  • spawn_weight

Making a Boss with drops

Also add:

  • reward_rule
  • reward_items

Making a Boss with punishment on failure

Also add:

  • punish_rule
  • punish_items

Making a true raid-style Boss

Also add:

  • custom_battle_stats
  • phase_skills
  • battle_mode
  • actions_per_turn

10. One-sentence summary

This Boss data pack configuration is essentially:

  • Use unique_id and species_id to define the Boss identity
  • Use spawn_rule to define how it appears
  • Use reward_rule and punish_rule to define win/loss outcomes
  • Use random_configs to define its actual combat stats, moves, phases, and battle style

11. Configuration File Explanation

This part is divided into two categories:

  • JSON configurations
  • TOML configurations

11.1 JSON configuration files

config/cobblemonboss/level-mapping.json

This file is used to:

Map player level to Boss level.

For example:

  • Player level 1 → Boss level 2
  • Player level 50 → Boss level 65
  • Player level 100 → Boss level 155

How to modify it

The left side is the player level, and the right side is the corresponding Boss level.

Example:

{
  "1": 5,
  "2": 5,
  "3": 6,
  "4": 6,
  "5": 7
}

config/cobblemonboss/pokemon-max-level.json

This file is used to:

Modify Cobblemon's global maximum Pokémon level.

Default file:

{
  "configName": "Pokemon Max Level",
  "maxPokemonLevel": 900,
  "description": "Set the maximum level limit for Pokemon"
}

Field descriptions

configName Configuration name, only for description.

maxPokemonLevel The global maximum Pokémon level.

description Description text.

Common example

{
  "configName": "Pokemon Max Level",
  "maxPokemonLevel": 200,
  "description": "Set the maximum level limit for Pokemon"
}

11.2 TOML configuration files

player-level-limit.toml

[playerLevelLimit]
enablePlayerLevelLimit = true
maxPlayerPokemonLevel = 100

Field descriptions

  • enablePlayerLevelLimit: whether to enable the player Pokémon level cap
  • maxPlayerPokemonLevel: the maximum level player Pokémon are allowed to reach

pokemon-boss-battle-check.toml

[battle_check.basic]
enableBattleCheck = false
cancelBattle = true

[battle_check.pokemon]
enablePokemonCheck = true
bannedPokemonList = ["cobblemon:ditto"]

[battle_check.items]
enableItemCheck = true
bannedItemsList = ["cobblemon:master_ball"]

[battle_check.moves]
enableMoveCheck = true
bannedMovesList = ["endeavor"]

Field descriptions

  • enableBattleCheck: whether to enable pre-battle checks for Boss battles
  • cancelBattle: whether to cancel the battle directly if banned content is detected
  • enablePokemonCheck: whether to check banned Pokémon
  • bannedPokemonList: list of banned Pokémon
  • enableItemCheck: whether to check banned items
  • bannedItemsList: list of banned items
  • enableMoveCheck: whether to check banned moves
  • bannedMovesList: list of banned moves

pokemon-boss-capture.toml

["Boss Capture Settings"]
preventBossCapture = true
showCaptureMessage = true

Field descriptions

  • preventBossCapture: whether Boss Pokémon cannot be captured
  • showCaptureMessage: whether to show a message when capture is prevented

pokemon-boss-immune.toml

[immune]
enableBossImmune = true

Field descriptions

  • enableBossImmune: whether to enable the Boss immunity system

pokemon-boss-level.toml

[level]
bossLevelMultiplier = 1.5
minBossLevel = 5
maxBossLevel = 200
includePCPokemon = true
scaleByMaxLevel = true
enableCustomLevelMapping = true
enableLevelRandom = true
randomMin = -10
randomMax = 10

Field descriptions

  • bossLevelMultiplier: Boss level multiplier
  • minBossLevel: minimum Boss level
  • maxBossLevel: maximum Boss level
  • includePCPokemon: whether to include Pokémon stored in the PC when calculating level
  • scaleByMaxLevel: whether to scale Boss level based on the player's highest level
  • enableCustomLevelMapping: whether to enable level-mapping.json
  • enableLevelRandom: whether to enable random Boss level variation
  • randomMin: minimum random variation
  • randomMax: maximum random variation

Common ideas

Use the mapping table only:

[level]
bossLevelMultiplier = 1.5
minBossLevel = 5
maxBossLevel = 200
includePCPokemon = true
scaleByMaxLevel = true
enableCustomLevelMapping = true
enableLevelRandom = false
randomMin = -10
randomMax = 10

Do not use the mapping table, only use the multiplier:

[level]
bossLevelMultiplier = 2.0
minBossLevel = 10
maxBossLevel = 200
includePCPokemon = true
scaleByMaxLevel = true
enableCustomLevelMapping = false
enableLevelRandom = true
randomMin = -5
randomMax = 5

pokemon-boss-penalty.toml

enablePenalty = true

["Penalty Chance Settings (Level Scaling)"]
minPenaltyChance = 0.1
maxPenaltyChance = 1.0
penaltyLevelScale = 100

Field descriptions

  • enablePenalty: master switch for Boss battle failure punishments
  • minPenaltyChance: minimum punishment chance
  • maxPenaltyChance: maximum punishment chance
  • penaltyLevelScale: scaling factor for punishment chance based on level

pokemon-boss-reward.toml

["Boss Reward Settings"]
minDropRate = 0.1
maxDropRate = 1.0
levelScale = 100

Field descriptions

  • minDropRate: minimum drop rate
  • maxDropRate: maximum drop rate
  • levelScale: scaling factor for drop rate based on level

pokemon-boss-spawn.toml

["Boss Spawn Settings"]
enableBossSpawn = true
checkIntervalTicks = 12000
spawnChance = 0.1
enableSpawnTimeRandom = true
randomValueMin = 1000
randomValueMax = 3000
spawnFrequency = 1

Field descriptions

  • enableBossSpawn: whether to enable the natural Boss spawning system
  • checkIntervalTicks: spawn check interval, in ticks
  • spawnChance: spawn probability for each check
  • enableSpawnTimeRandom: whether to enable random variation for spawn timing
  • randomValueMin: minimum random variation
  • randomValueMax: maximum random variation
  • spawnFrequency: additional random spawn attempts during one check cycle

How to understand spawnFrequency

  • 0: only one fixed spawn check at the end of the cycle
  • 1: 1 extra random chance during the cycle, plus 1 check at the end
  • 2: 2 extra random chances during the cycle, plus 1 check at the end

12. Configuration suggestions for beginners

12.1 The simplest usable setup

pokemon-max-level.json

{
  "configName": "Pokemon Max Level",
  "maxPokemonLevel": 200,
  "description": "Set the maximum level limit for Pokemon"
}

level-mapping.json

Use the default mapping first. Do not change it too early.

pokemon-boss-level.toml

[level]
bossLevelMultiplier = 1.5
minBossLevel = 5
maxBossLevel = 200
includePCPokemon = true
scaleByMaxLevel = true
enableCustomLevelMapping = true
enableLevelRandom = true
randomMin = -5
randomMax = 5

pokemon-boss-spawn.toml

["Boss Spawn Settings"]
enableBossSpawn = true
checkIntervalTicks = 12000
spawnChance = 0.1
enableSpawnTimeRandom = true
randomValueMin = 1000
randomValueMax = 3000
spawnFrequency = 1

pokemon-boss-reward.toml

["Boss Reward Settings"]
minDropRate = 0.1
maxDropRate = 1.0
levelScale = 100

pokemon-boss-penalty.toml

enablePenalty = true

["Penalty Chance Settings (Level Scaling)"]
minPenaltyChance = 0.1
maxPenaltyChance = 1.0
penaltyLevelScale = 100

12.2 If you want stricter Boss battles

It is recommended to enable:

[battle_check.basic]
enableBattleCheck = true
cancelBattle = true

Then add as needed:

  • Ban certain Pokémon
  • Ban certain items
  • Ban certain moves

12.3 If you want Bosses to be absolutely uncapturable

Keep:

["Boss Capture Settings"]
preventBossCapture = true
showCaptureMessage = true

13. One-sentence summary of configs

These configuration files can be understood as:

  • pokemon-max-level.json: global Pokémon max level
  • level-mapping.json: player level → Boss level mapping table
  • pokemon-boss-level.toml: Boss level calculation logic
  • pokemon-boss-spawn.toml: Boss spawn rules
  • pokemon-boss-reward.toml: Boss reward probability
  • pokemon-boss-penalty.toml: Boss punishment probability
  • pokemon-boss-battle-check.toml: Boss battle restriction checks
  • pokemon-boss-capture.toml: Boss capture prevention
  • pokemon-boss-immune.toml: Boss immunity switch
  • player-level-limit.toml: player Pokémon level cap

14. Boss Command Usage

This section introduces 3 commands:

  • /checkpokemonboss
  • /spawnpokemonboss
  • /spawnpokemonbossat

14.1 /checkpokemonboss

Purpose

Checks which Bosses can possibly spawn at the player's current location, and shows the countdown until the next Boss refresh.

Permission

All players can use it.

Usage

/checkpokemonboss

Description

After running it, it will display:

  • How many minutes remain until the next Boss refresh
  • A list of Bosses that match the current location
  • The display name of each Boss
  • The spawn weight of each Boss

When to use it

  • Players want to know what Bosses can spawn in their current location
  • Players want to know how long until the next refresh
  • Server owners want to test whether biome / time / spawn rules are working correctly

14.2 /spawnpokemonboss

Purpose

Directly spawns a specified Boss near the player.

Permission

Requires administrator permission.

Usage

Basic form:

/spawnpokemonboss <bossUniqueId>

With level specified:

/spawnpokemonboss <bossUniqueId> <level>

Parameter descriptions

<bossUniqueId>

The Boss unique ID, which is the value of:

"unique_id": "xxx"

For example:

blastoise_dripstone_caves_boss

<level>

The Boss level.

  • If omitted, the default level is 1
  • If provided, you can specify the level manually
  • Valid range: 1 ~ 900

Examples

Spawn a Boss with the default level:

/spawnpokemonboss blastoise_dripstone_caves_boss

Spawn a level 80 Boss:

/spawnpokemonboss blastoise_dripstone_caves_boss 80

Spawn a level 150 Boss:

/spawnpokemonboss blastoise_dripstone_caves_boss 150

Notes

  • This command can only summon by Boss unique ID
  • You cannot use the species ID directly
  • The command supports auto-completion and will suggest all loaded Boss unique IDs

14.3 /spawnpokemonbossat

Purpose

Manages fixed Boss spawn points.

You can use it to:

  • Create a fixed spawn point
  • Add Bosses to the spawn pool
  • Remove Bosses from the spawn pool
  • Modify Boss weights
  • Delete a spawn point
  • View spawn point information
  • Manually trigger a spawn point
  • Set or clear hologram text

Permission

Requires administrator permission.


14.3.1 Create a spawn point

Usage

Without custom text:

/spawnpokemonbossat create <id> <dimension> <x> <y> <z> <level> <respawnSeconds>

With custom text:

/spawnpokemonbossat create <id> <dimension> <x> <y> <z> <level> <respawnSeconds> <text>

Parameter descriptions

<id> The spawn point ID. Each spawn point should have its own unique name.

<dimension> The dimension, for example:

  • minecraft:overworld
  • minecraft:the_nether
  • minecraft:the_end

<x> <y> <z> The coordinates of the spawn point.

<level> The level of the Boss spawned at this point.

<respawnSeconds> The respawn time after the Boss is defeated, in seconds.

<text> Optional hologram text.

Examples

Create a spawn point in the Overworld:

/spawnpokemonbossat create boss_point_1 minecraft:overworld 100 64 100 80 600

Create a spawn point with custom text:

/spawnpokemonbossat create boss_point_2 minecraft:overworld 200 70 200 100 900 §cBlastoise Boss

14.3.2 Add a Boss to a spawn point

Usage

/spawnpokemonbossat addboss <id> <bossUniqueId> <weight>

Parameter descriptions

  • <id>: spawn point ID
  • <bossUniqueId>: the Boss unique ID to add to the pool
  • <weight>: weight, higher values usually mean a higher chance to be selected

Example

/spawnpokemonbossat addboss boss_point_1 blastoise_dripstone_caves_boss 10

14.3.3 Remove a Boss from a spawn point

Usage

/spawnpokemonbossat removeboss <id> <bossUniqueId>

Example

/spawnpokemonbossat removeboss boss_point_1 blastoise_dripstone_caves_boss

14.3.4 Change the weight of a Boss in a spawn point

Usage

/spawnpokemonbossat setweight <id> <bossUniqueId> <weight>

Example

/spawnpokemonbossat setweight boss_point_1 blastoise_dripstone_caves_boss 20

14.3.5 Remove a spawn point

Usage

/spawnpokemonbossat remove <id>

Example

/spawnpokemonbossat remove boss_point_1

Notes

After deletion, the following will also be handled:

  • Spawn point data
  • Hologram display
  • The currently active fixed Boss

14.3.6 List all spawn points

Usage

/spawnpokemonbossat list

Purpose

Displays information about all current fixed spawn points, including:

  • Spawn point ID
  • Dimension
  • Coordinates
  • Boss level
  • Respawn time
  • Boss pool
  • Current active Boss

14.3.7 View details of a single spawn point

Usage

/spawnpokemonbossat info <id>

Example

/spawnpokemonbossat info boss_point_1

Purpose

Displays complete information about a spawn point, including:

  • Dimension
  • Coordinates
  • Boss level
  • Respawn time
  • Next respawn time
  • Current active Boss
  • Current hologram text
  • Boss pool list

14.3.8 Manually trigger a spawn point

Usage

/spawnpokemonbossat trigger <id>

Example

/spawnpokemonbossat trigger boss_point_1

Purpose

Immediately makes this spawn point ready to spawn again, usually for testing.


14.3.9 Set spawn point hologram text

Usage

/spawnpokemonbossat settext <id> <text>

Example

/spawnpokemonbossat settext boss_point_1 §bDeep Sea Boss Spawn Point

Purpose

Changes the hologram text shown for this spawn point.


14.3.10 Clear spawn point hologram text

Usage

/spawnpokemonbossat cleartext <id>

Example

/spawnpokemonbossat cleartext boss_point_1

Purpose

Clears the custom hologram text and restores the default display.


15. Most commonly used command combinations

Directly test whether a Boss can be summoned:

/spawnpokemonboss blastoise_dripstone_caves_boss 100

Check which Bosses may spawn at the current location:

/checkpokemonboss

Create a fixed spawn point:

/spawnpokemonbossat create boss_point_1 minecraft:overworld 100 64 100 80 600

Add a Boss to this spawn point:

/spawnpokemonbossat addboss boss_point_1 blastoise_dripstone_caves_boss 10

View information about this spawn point:

/spawnpokemonbossat info boss_point_1

Manually trigger this spawn point:

/spawnpokemonbossat trigger boss_point_1

16. The simplest way for beginners to understand it

If you are just getting started:

To check what Bosses can spawn at your current location, use:

/checkpokemonboss

To directly summon a Boss for testing, use:

/spawnpokemonboss <bossUniqueId> <level>

To create a Boss that spawns at a fixed location, the main commands are:

/spawnpokemonbossat create ...
/spawnpokemonbossat addboss ...
/spawnpokemonbossat info ...
/spawnpokemonbossat trigger ...

17. Time logic reference for developers

If you want to match the exact spawn-time behavior in code, use the following logic:

public static PokemonBossDefinition.SpawnTime getCurrentSpawnTime(ServerLevel level) {
    long dayTime = level.getDayTime() % 24000;

    if (dayTime >= 0 && dayTime < 3000) {
        return PokemonBossDefinition.SpawnTime.early_morning;
    } else if (dayTime >= 3000 && dayTime < 6000) {
        return PokemonBossDefinition.SpawnTime.morning;
    } else if (dayTime >= 6000 && dayTime < 12000) {
        return PokemonBossDefinition.SpawnTime.noon;
    } else if (dayTime >= 12000 && dayTime < 15000) {
        return PokemonBossDefinition.SpawnTime.afternoon;
    } else if (dayTime >= 15000 && dayTime < 18000) {
        return PokemonBossDefinition.SpawnTime.dusk;
    } else if (dayTime >= 18000 && dayTime < 21000) {
        return PokemonBossDefinition.SpawnTime.night;
    } else {
        return PokemonBossDefinition.SpawnTime.midnight;
    }
}

This means your spawn_times documentation should always match these tick intervals:

  • early_morning: 0 - 2999
  • morning: 3000 - 5999
  • noon: 6000 - 11999
  • afternoon: 12000 - 14999
  • dusk: 15000 - 17999
  • night: 18000 - 20999
  • midnight: 21000 - 23999

all_day is a special configuration value and should be treated as:

  • no time restriction
  • always allowed regardless of the current tick range

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Создатели

Детали

Лицензия:LicenseRef-All-Rights-Reserved
Опубликован:5 месяцев назад
Обновлён:3 недели назад
Главная