CobbleBoss

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

736,47k

CobbleBoss

CobbleBoss Boss User Guide

1. Data Pack Structure

CobbleBoss data packs use the `cobbleboss` namespace.

Normal Boss files are placed in:

```text data/cobbleboss/bosses/ ```

Paid multiplayer Boss team files are placed in:

```text data/cobbleboss/boss_teams/ ```

Main structure:

```text pack.mcmeta data/cobbleboss/bosses/ data/cobbleboss/boss_teams/ ```

Recommended file naming:

- Use lowercase English letters. - Use underscores instead of spaces. - Use clear names related to the Boss. - Keep each Boss file independent.

2. What A Boss JSON Controls

A Boss JSON controls:

- Which Pokemon the Boss is - Boss display name - Boss glow color - Natural spawn rules - Rewards after victory - Punishments after defeat - Moves - EVs - Custom battle stats - Nature - Ability - Form - Held items - Battle mode - Actions per turn - Shield settings - Phase skills - Boss size

3. Recommended Reading Order

For beginners, understand these parts first:

- Boss identity - Spawn rules - Rewards and punishments - Battle configuration - Visual settings - Advanced raid mechanics

Most important fields:

- `unique_id` - `species_id` - `random_configs`

Recommended fields:

- `display_name` - `glow` - `moves` - `battle_mode` - `actions_per_turn` - `scale`

Optional fields:

- `spawn_rule` - `reward_rule` - `punish_rule` - `effort_values` - `custom_battle_stats` - `phase_skills` - `held_items` - `nature` - `ability` - `form` - `shield_layers` - `shield_recover_per_turn` - `shield_weaken_turns`

4. Top-Level Boss Fields

`unique_id`

Purpose:

The unique internal ID of the Boss.

Recommendation:

Required.

Notes:

- Must be unique. - Commands use this ID. - Do not reuse the same ID in multiple Boss files. - Recommended format is lowercase English letters with underscores.

`display_name`

Purpose:

The name shown to players in game.

Recommendation:

Recommended.

Notes:

- Supports Minecraft color codes. - Useful for making Boss names more obvious. - If omitted, the species name may be used instead.

`species_id`

Purpose:

Defines which Pokemon species the Boss is.

Recommendation:

Required.

Notes:

- Usually uses the `cobblemon` namespace. - This determines the actual Pokemon created by the Boss system.

`glow`

Purpose:

Controls the Boss glowing outline color after it spawns.

Position:

Top-level field.

Recommendation:

Optional.

How it works:

- If set, the Boss receives a glowing outline. - If missing or empty, the Boss does not glow. - Uses Minecraft color names.

Available colors:

- `black` - `dark_blue` - `dark_green` - `dark_aqua` - `dark_red` - `dark_purple` - `gold` - `gray` - `dark_gray` - `blue` - `green` - `aqua` - `red` - `light_purple` - `yellow` - `white`

Notes:

- Invalid colors can cause the Boss file to fail loading. - This only controls entity glow, not announcement color.

`spawn_rule`

Purpose:

Controls natural spawning rules.

Recommendation:

Optional.

Important:

For natural spawning, a Boss usually needs:

- `spawn_locations` - `spawn_times` - `spawn_biomes` or `spawn_structures` - `spawn_weight`

Notes:

- A Boss without usable spawn rules may not participate in natural spawning. - `spawn_biomes` and `spawn_structures` are checked as biome-or-structure matching.

`reward_rule`

Purpose:

Controls rewards after players defeat the Boss.

Recommendation:

Optional.

Can contain:

- Direct item rewards - Direct command rewards - Reward pools that roll once and randomly choose one entry - Count - Chance - Weight - Rolls

`punish_rule`

Purpose:

Controls punishments after players lose to the Boss.

Recommendation:

Optional.

Can contain:

- Level reduction - EV reduction - IV reduction - Command punishment - Chance

`random_configs`

Purpose:

Defines one or more possible battle configurations for this Boss.

Recommendation:

Required.

How it works:

- A Boss can have multiple random configurations. - One configuration is selected when the Boss is created. - Different configurations can have different moves, stats, held items, battle modes, shield settings, and size.

5. Spawn Rule Fields

`spawn_locations`

Purpose:

Restricts where the Boss can spawn.

Available values:

- `land` - `water_surface` - `underwater` - `cave` - `sky` - `lava`

Notes:

- Natural spawning needs a valid spawn location type. - Use values that match the Boss theme.

`spawn_times`

Purpose:

Restricts the time period when the Boss can spawn.

Available values:

- `all_day` - `early_morning` - `morning` - `noon` - `afternoon` - `dusk` - `night` - `midnight`

Time mapping:

- `early_morning`: 0 - 2999 ticks - `morning`: 3000 - 5999 ticks - `noon`: 6000 - 11999 ticks - `afternoon`: 12000 - 14999 ticks - `dusk`: 15000 - 17999 ticks - `night`: 18000 - 20999 ticks - `midnight`: 21000 - 23999 ticks - `all_day`: no time restriction

Notes:

- Minecraft has 24000 ticks per day. - Multiple time values can be used. - `all_day` means the Boss can spawn at any time.

`spawn_biomes`

Purpose:

Restricts which biomes the Boss can spawn in.

How it works:

- A normal biome ID limits spawning to that biome. - A biome tag starting with `#` allows all biomes in that tag.

Notes:

- Use biome IDs for precise control. - Use biome tags for broader biome groups. - This can be combined with `spawn_structures`.

`spawn_structures`

Purpose:

Allows Boss spawning when the player is inside specific structures.

How it works:

- Uses structure IDs. - If the player is inside a matching structure, the Boss can match this rule. - This is checked together with biome rules as biome-or-structure matching.

Notes:

- This is for structure IDs, not structure tags. - Useful for dungeon, temple, ruin, stronghold, or custom structure Bosses.

`spawn_weight`

Purpose:

Controls natural spawn selection weight.

How it works:

- When multiple Bosses are valid, higher weight means higher selection chance. - It is not a direct percentage.

Notes:

- Use positive values. - If all valid weights are 0, selection may fall back to random valid Boss selection.

6. Reward Rule Fields

`reward_items`

Purpose:

List of direct reward entries.

How it works:

- Each entry rolls independently. - If three entries each have `chance: 0.1`, each one has its own 10% chance. - The player can receive multiple entries from the same `reward_items` list.

Each reward entry can contain:

- `item_id` - `count` - `command` - `chance` - `weight`

`weight` is only used when the same reward entry is placed inside `reward_pools.entries`. It is harmless but unnecessary in direct `reward_items`.

`reward_pools`

Purpose:

List of reward pools.

How it works:

- Each pool rolls once using its `chance`. - If the pool succeeds, the mod randomly chooses one entry from `entries`. - If `rolls` is greater than 1, the pool chooses that many entries. - Selection is weighted by each entry's `weight`. - Selection is with replacement, so the same entry can be selected more than once when `rolls` is greater than 1.

Each reward pool can contain:

- `chance` - `rolls` - `entries`

Each pool entry can contain:

- `item_id` - `count` - `command` - `chance` - `weight`

Important:

- Pool-level `chance` controls whether the pool gives anything. - Entry-level `chance` is parsed for compatibility, but pool entries are selected by random weight after the pool succeeds. - If you want separate independent chances, use `reward_items`. - If you want "10% chance for one item from this list", use `reward_pools`.

`item_id`

Purpose:

The item given to the player.

Notes:

- Use a valid item ID. - Can be Minecraft, Cobblemon, or another mod item.

`count`

Purpose:

The number of items given.

Notes:

- If omitted, it usually acts as 1. - Count is only used for item rewards. - Must be greater than 0.

`command`

Purpose:

Executes a command as a reward.

Notes:

- Useful for giving Pokemon, money, points, titles, permissions, or other server rewards. - Supports the `{player}` placeholder. - Write the command without a leading slash.

`chance`

Purpose:

Controls probability.

For direct `reward_items`:

- If `chance` is greater than 0, that custom chance is used. - If `chance` is missing or 0, the reward uses the default drop rate from `boss-reward.toml`.

For `reward_pools`:

- If pool `chance` is greater than 0, that custom chance is used. - If pool `chance` is missing or 0, the pool uses the default drop rate from `boss-reward.toml`.

Meaning:

- `1` means 100%. - `0.5` means 50%. - `0.1` means 10%.

`rolls`

Purpose:

Controls how many entries are selected from a successful reward pool.

Notes:

- If omitted, it defaults to 1. - Must be greater than 0. - The same entry can be selected more than once.

`weight`

Purpose:

Controls selection chance inside a reward pool.

How it works:

- Higher weight means higher chance inside that pool. - Default weight is 1. - Weight is not a direct percentage.

Example:

- Entry A weight 1 - Entry B weight 3 - Entry B is three times as likely as Entry A inside that pool.

Reward Examples

Independent rewards:

```json "reward_rule": { "reward_items": [ { "item_id": "cobblemon:poke_ball", "count": 3, "chance": 0.1 }, { "item_id": "cobblemon:great_ball", "count": 2, "chance": 0.1 }, { "item_id": "cobblemon:ultra_ball", "count": 1, "chance": 0.1 } ] } ```

One reward from a pool:

```json "reward_rule": { "reward_pools": [ { "chance": 0.1, "rolls": 1, "entries": [ { "item_id": "cobblemon:poke_ball", "count": 3 }, { "item_id": "cobblemon:great_ball", "count": 2 }, { "item_id": "cobblemon:ultra_ball", "count": 1 } ] } ] } ```

Weighted pool:

```json "reward_rule": { "reward_pools": [ { "chance": 0.25, "rolls": 1, "entries": [ { "item_id": "minecraft:diamond", "count": 1, "weight": 1 }, { "item_id": "minecraft:emerald", "count": 3, "weight": 3 }, { "command": "give {player} minecraft:gold_ingot 8", "weight": 5 } ] } ] } ```

Direct rewards and pools can be used together:

```json "reward_rule": { "reward_items": [ { "item_id": "minecraft:gold_ingot", "count": 2, "chance": 1.0 } ], "reward_pools": [ { "chance": 0.1, "entries": [ { "item_id": "cobblemon:poke_ball", "count": 3 }, { "item_id": "cobblemon:great_ball", "count": 2 }, { "item_id": "cobblemon:ultra_ball", "count": 1 } ] } ] } ```

7. Punish Rule Fields

`punish_items`

Purpose:

List of punishment entries.

Each punishment entry can contain:

- `level` - `evs` - `ivs` - `command` - `chance`

`level`

Purpose:

Reduces Pokemon level after losing.

Notes:

- Level will not be reduced below 1. - Use carefully because level loss can feel severe.

`evs`

Purpose:

Reduces effort values.

Available stats:

- `hp` - `attack` - `defense` - `special_attack` - `special_defense` - `speed`

Notes:

- Only fill stats you want to reduce. - Missing stats are ignored.

`ivs`

Purpose:

Reduces individual values.

Available stats:

- `hp` - `attack` - `defense` - `special_attack` - `special_defense` - `speed`

Notes:

- IV punishment is very severe. - Recommended only for high-risk Boss designs.

`command`

Purpose:

Executes a command as punishment.

Notes:

- Useful for applying effects, taking currency, teleporting, broadcasting, or triggering server systems. - Supports the `{player}` placeholder. - Write the command without a leading slash.

`chance`

Purpose:

Controls the probability of this punishment.

Important:

- If `chance` is greater than 0, that custom chance is used. - If `chance` is missing or 0, the punishment uses the default penalty chance from `boss-penalty.toml`.

8. Random Config Fields

`shiny`

Purpose:

Controls whether the Boss is shiny.

Notes:

- `true` makes the Boss shiny. - `false` makes it normal. - If omitted, it usually defaults to false.

`effort_values`

Purpose:

Sets the Boss EV spread.

Available stats:

- `hp` - `attack` - `defense` - `special_attack` - `special_defense` - `speed`

Rules:

- Each stat should be between 0 and 252. - Total EVs should not exceed 510.

`custom_battle_stats`

Purpose:

Overrides or limits Boss battle stats.

Available stats:

- `hp` - `attack` - `defense` - `special_attack` - `special_defense` - `speed`

Each stat rule uses:

- `value` - `mode`

`value`

Purpose:

The target stat value.

Notes:

- Usually a positive number. - Useful for raid-style Bosses.

`mode`

Purpose:

Controls how the stat value is applied.

Available values:

- `exact` - `minimum` - `maximum`

Meanings:

- `exact`: use this value directly. - `minimum`: stat will be at least this value. - `maximum`: stat will be at most this value.

`moves`

Purpose:

Sets the Boss moves.

Notes:

- Usually use up to 4 moves. - Move names should match Cobblemon move IDs. - Invalid move names can cause Boss creation failure.

`nature`

Purpose:

Sets the Boss nature.

Notes:

- If omitted, the Boss uses a default nature. - Use Cobblemon nature names.

`ability`

Purpose:

Sets the Boss ability.

Notes:

- If omitted, default ability behavior is used. - Invalid ability names can cause Boss creation failure.

`form`

Purpose:

Sets the Boss form.

Notes:

- Use this for special forms. - Leave empty if not needed. - The value should match Cobblemon form or aspect behavior.

`held_items`

Purpose:

Sets possible held items for the Boss.

Notes:

- Can contain one or more item IDs. - If multiple items are configured, the Boss may randomly use one. - Invalid item IDs can cause Boss creation failure.

`battle_mode`

Purpose:

Sets the Boss battle mode and battle layout.

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`

Important:

`battle_mode` does not limit `actions_per_turn`.

Notes:

- This field controls the battle mode and layout. - Boss action count is controlled separately by `actions_per_turn`.

`actions_per_turn`

Purpose:

Sets how many actions the Boss can take each turn.

Rules:

- Must be at least 1. - Not limited by `battle_mode`.

Notes:

- Higher values make the Boss much harder. - This is one of the main difficulty controls.

`scale`

Purpose:

Sets the Boss size.

Position:

Inside `random_configs`.

How it works:

- If set, the Boss uses this custom size. - If omitted, the Boss size is calculated automatically from its level.

Rules:

- Must be greater than 0. - The final value is clamped by the mod's allowed size range.

Notes:

- Use this to create giant Bosses. - Leave it empty for automatic level-based size.

9. Boss Shield System

Purpose:

The Boss shield system gives a Boss extra protection during battle.

How it works:

- A Boss can start battle with shield layers. - Certain attacks can consume shield layers. - Super-effective damaging moves can consume shield layers. - Special moves can consume configured shield layers. - While shield still exists, some shield interactions can reduce or block damage. - When shield reaches 0, the shield breaks. - After shield breaks, the Boss can enter a weakened state. - After weakened turns end, shield can recover each turn if recovery is configured.

Important:

The global shield switch in `boss-shield.toml` must be enabled.

The Boss also needs shield fields inside `random_configs`.

`shield_layers`

Purpose:

Sets the Boss initial shield layers.

Position:

Inside `random_configs`.

How it works:

- `0` means this Boss has no shield. - A value greater than 0 enables shield behavior for this Boss. - This value is also used as the maximum shield layer count.

Rules:

- Must be 0 or higher.

Notes:

- This is the main field that enables shield for a specific Boss. - If this value is 0, the other shield fields usually have no effect.

`shield_recover_per_turn`

Purpose:

Controls how many shield layers the Boss recovers each turn after shield break and weakened state.

Position:

Inside `random_configs`.

How it works:

- `0` means shield does not recover. - A value greater than 0 allows shield recovery. - Shield recovery cannot exceed maximum shield layers.

Rules:

- Must be 0 or higher.

Notes:

- Use 0 for one-time shield break behavior. - Use higher values for raid-style repeated shield breaking.

`shield_weaken_turns`

Purpose:

Controls how many turns the Boss stays weakened after shield breaks.

Position:

Inside `random_configs`.

How it works:

- When shield reaches 0, the shield breaks. - The Boss enters weakened state for this many turns. - During weakened turns, shield recovery waits. - After weakened turns end, shield recovery can begin if configured.

Rules:

- Must be 0 or higher.

Notes:

- Use this to create a damage window after shield break. - Larger values give players more time to attack. - `0` means no weakened delay.

10. Phase Skill System

`phase_skills`

Purpose:

Changes Boss moves based on HP percentage.

How it works:

- Each phase has an HP percentage. - When Boss HP reaches that percentage, the Boss can switch to another moveset.

Notes:

- Useful for multi-phase Boss fights. - Avoid duplicate HP thresholds. - Moves should be valid Cobblemon move names.

`hp_percent`

Purpose:

The HP percentage that triggers the phase.

Rules:

- Usually 1 to 100. - Lower or equal HP enters that phase.

Notes:

- Higher values trigger earlier. - Lower values trigger later.

`moves`

Purpose:

The moves used in this phase.

Notes:

- Usually 1 to 4 moves. - Use this to make the Boss change strategy during battle.

11. Stat Key Reference

The following stat keys are used in `effort_values`, `evs`, `ivs`, and `custom_battle_stats`:

- `hp` - `attack` - `defense` - `special_attack` - `special_defense` - `speed`

12. Configuration Files

All configuration files are placed under:

```text config/cobbleboss/ ```

Unified config files:

- `level-mapping.json` - `pokemon-max-level.json` - `boss-spawn.toml` - `boss-level.toml` - `boss-reward.toml` - `boss-penalty.toml` - `boss-battle-check.toml` - `boss-capture.toml` - `boss-immune.toml` - `boss-music.toml` - `boss-shield.toml` - `player-level-limit.toml`

Important:

Fabric and NeoForge use the same field names and top-level TOML structure.

If an old NeoForge config was generated before this unified version, delete the old config file or manually move values to the top level.

`level-mapping.json`

Purpose:

Maps player Pokemon level to Boss level.

Notes:

- Used only when custom level mapping is enabled. - The left side is player level. - The right side is Boss level. - If no mapping is found, normal level calculation can be used.

`pokemon-max-level.json`

Purpose:

Controls Cobblemon's global maximum Pokemon level.

Fields:

- `configName` - `maxPokemonLevel` - `description`

Notes:

- Default max level is usually 900. - This affects the global Pokemon level limit used by Cobblemon.

`boss-spawn.toml`

Purpose:

Controls natural Boss spawning.

Fields:

- `enableBossSpawn` - `checkIntervalTicks` - `spawnChance` - `enableSpawnTimeRandom` - `randomValueMin` - `randomValueMax` - `spawnFrequency`

Notes:

- `checkIntervalTicks` range is 100 to 72000. - `spawnChance` range is 0 to 1. - `randomValueMin` and `randomValueMax` range is 1 to 10000. - `spawnFrequency` range is 0 to 100.

`boss-level.toml`

Purpose:

Controls Boss level calculation.

Fields:

- `bossLevelMultiplier` - `minBossLevel` - `maxBossLevel` - `includePCPokemon` - `scaleByMaxLevel` - `enableCustomLevelMapping` - `enableLevelRandom` - `randomMin` - `randomMax`

Notes:

- `bossLevelMultiplier` range is 1.0 to 10.0. - `minBossLevel` range is 1 to 100. - `maxBossLevel` range is 50 to 200. - `enableCustomLevelMapping` controls whether `level-mapping.json` is used.

`boss-reward.toml`

Purpose:

Controls default Boss reward chance.

Fields:

- `minDropRate` - `maxDropRate` - `levelScale`

Important:

Direct reward entries and reward pools with `chance` greater than 0 use their own chance.

Direct reward entries and reward pools without `chance`, or with `chance` 0, use the default drop rate from this config.

Notes:

- `minDropRate` and `maxDropRate` range is 0 to 1. - `levelScale` range is 1 to 1000.

`boss-penalty.toml`

Purpose:

Controls default punishment chance.

Fields:

- `enablePenalty` - `minPenaltyChance` - `maxPenaltyChance` - `penaltyLevelScale`

Important:

Punish entries with `chance` greater than 0 use their own chance.

Punish entries without `chance`, or with `chance` 0, use the default penalty chance from this config.

Notes:

- `minPenaltyChance` and `maxPenaltyChance` range is 0 to 1. - `penaltyLevelScale` range is 1 to 1000.

`boss-battle-check.toml`

Purpose:

Controls Boss battle restriction checks.

Fields:

- `enableBattleCheck` - `cancelBattle` - `enablePokemonCheck` - `bannedPokemonList` - `enableItemCheck` - `bannedItemsList` - `enableMoveCheck` - `bannedMovesList`

Notes:

- `enableBattleCheck` is the main switch. - `cancelBattle` controls whether battle is cancelled when banned content is detected. - `bannedPokemonList` uses Pokemon species IDs. - `bannedItemsList` uses item IDs. - `bannedMovesList` uses move IDs.

`boss-capture.toml`

Purpose:

Controls whether Boss Pokemon can be captured.

Fields:

- `preventBossCapture` - `showCaptureMessage`

Notes:

- `preventBossCapture` should usually stay enabled. - `showCaptureMessage` controls whether players see a message when capture is blocked.

`boss-immune.toml`

Purpose:

Controls whether Boss entities are invulnerable in the world.

Fields:

- `enableBossImmune`

Important:

This mainly protects Boss entities outside normal battle damage.

It does not mean the Boss is immune to every move inside battle.

Notes:

- Recommended to keep enabled. - Helps prevent players from killing Bosses with non-battle methods.

`boss-music.toml`

Purpose:

Controls Boss battle music.

Fields:

- `enableBossBattleMusic` - `stopOnBattleEnd`

Important:

The music system no longer uses `bossBattleMusicSoundId`.

When a Boss battle starts, the mod randomly selects a music sound event from:

1. The mod's built-in `assets/cobbleboss/sounds.json`. 2. Enabled resource packs that define music in `sounds.json`.

Resource packs that are only placed in the `resourcepacks` folder but not enabled in the client resource pack menu are ignored.

Notes:

- Default built-in sound event is `cobbleboss:boss_battle_theme`. - Custom music must be provided by a resource pack. - The sound file should be OGG format. - Players need the resource pack enabled to hear resource-pack music. - Old configs containing `bossBattleMusicSoundId` should be regenerated or cleaned up.

`boss-shield.toml`

Purpose:

Controls the global Boss shield system.

Fields:

- `enableBossShield` - `superEffectiveLayers` - `moveLayerOverrides`

Meaning:

- `enableBossShield`: enables or disables Boss shield behavior. - `superEffectiveLayers`: shield layers consumed by super-effective damaging moves. - `moveLayerOverrides`: special move-to-shield-layer rules.

Notes:

- If `enableBossShield` is false, Boss JSON shield fields will not work. - `moveLayerOverrides` uses move IDs and shield layer values.

`player-level-limit.toml`

Purpose:

Controls player Pokemon level limit.

Fields:

- `enableLevelLimit` - `maxPlayerPokemonLevel`

Notes:

- `enableLevelLimit` enables the player Pokemon level cap. - `maxPlayerPokemonLevel` sets the maximum allowed player Pokemon level.

13. Resource Pack Music

Boss battle music can be customized through resource packs.

How it works:

- The mod has built-in music in `assets/cobbleboss/sounds.json`. - Enabled resource packs can add more music events. - When a Boss battle starts, the mod randomly chooses one available music event. - There is no need to specify one sound ID in config.

Resource pack paths:

```text pack.mcmeta assets/cobbleboss/sounds.json assets/cobbleboss/sounds/music/ ```

Example structure:

```text my_boss_music_pack.zip pack.mcmeta assets/cobbleboss/sounds.json assets/cobbleboss/sounds/music/boss_1.ogg assets/cobbleboss/sounds/music/boss_2.ogg assets/cobbleboss/sounds/music/boss_3.ogg ```

Example `sounds.json`:

```json { "music.boss_1": { "category": "music", "sounds": [ { "name": "cobbleboss:music/boss_1", "stream": true } ] }, "music.boss_2": { "category": "music", "sounds": [ { "name": "cobbleboss:music/boss_2", "stream": true } ] } } ```

Matching files:

```text assets/cobbleboss/sounds/music/boss_1.ogg assets/cobbleboss/sounds/music/boss_2.ogg ```

Sound ID examples:

- `music.boss_1` in `assets/cobbleboss/sounds.json` becomes `cobbleboss:music.boss_1`. - `music.boss_2` in `assets/cobbleboss/sounds.json` becomes `cobbleboss:music.boss_2`.

Music detection:

The mod treats a sound event as Boss music if one of these is true:

- The event key starts with `music`. - The event key contains `.music`. - The event has `"category": "music"`. - One of its sound file paths is inside a `music/` folder.

Notes:

- Use OGG format. - Use `stream: true` for music. - Players need the resource pack enabled to hear custom music. - Use original or licensed music only. - If the resource pack is not enabled, the client will not register its sound events.

14. Fixed Spawn Point Commands

Main command:

```text /spawnpokemonbossat ```

Permission:

Requires administrator permission.

Functions:

- `create` - `addboss` - `removeboss` - `setweight` - `remove` - `list` - `info` - `trigger` - `settext` - `cleartext` - `announcement enable` - `announcement text` - `announcement color` - `announcement clear`

`create`

Purpose:

Creates a fixed Boss spawn point.

Parameters:

- Spawn point ID - Dimension - X coordinate - Y coordinate - Z coordinate - Boss level - Respawn seconds - Optional hologram text

Notes:

- Spawn point ID must be unique. - Respawn time is in seconds. - Boss level range is 1 to 900.

`addboss`

Purpose:

Adds a Boss to a fixed spawn point pool.

Parameters:

- Spawn point ID - Boss unique ID - Weight

Notes:

- Boss unique ID must exist in loaded Boss data. - Higher weight means higher chance inside that fixed spawn point.

`removeboss`

Purpose:

Removes a Boss from a fixed spawn point pool.

`setweight`

Purpose:

Changes the weight of a Boss in a fixed spawn point pool.

`remove`

Purpose:

Deletes a fixed spawn point.

Notes:

- Removes spawn point data. - Removes related hologram display. - Handles the currently active fixed Boss.

`list`

Purpose:

Lists all fixed spawn points.

Shows:

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

`info`

Purpose:

Shows detailed information for one spawn point.

Shows:

- Dimension - Coordinates - Boss level - Respawn time - Next respawn tick - Current active Boss - Hologram text - Boss pool - Announcement status - Announcement text - Announcement color

`trigger`

Purpose:

Manually makes a spawn point ready to spawn again.

Notes:

- Useful for testing. - Does not delete the spawn point.

`settext`

Purpose:

Sets fixed spawn point hologram text.

Supported placeholders:

- `{id}` - `{level}` - `{time}` - `{x}` - `{y}` - `{z}` - `{dimension}` - `{boss_count}` - `{boss_pool}` - `{active_boss_id}` - `{active_boss}` - `{active_weight}`

Notes:

- Use `|` to separate multiple hologram lines. - Hologram placeholders are different from announcement placeholders.

`cleartext`

Purpose:

Clears custom hologram text and restores default hologram behavior.

`announcement enable`

Purpose:

Enables or disables fixed spawn point announcement.

How it works:

- `true` enables announcement. - `false` disables announcement.

Notes:

- There is no separate announcement disable command. - Use `announcement enable` with true or false.

`announcement text`

Purpose:

Sets custom announcement text.

Supported placeholders:

- `{boss}` - `{boss_id}` - `{species}` - `{point}` - `{dimension}` - `{x}` - `{y}` - `{z}` - `{position}`

`announcement color`

Purpose:

Sets announcement message color.

Available colors:

- `black` - `dark_blue` - `dark_green` - `dark_aqua` - `dark_red` - `dark_purple` - `gold` - `gray` - `dark_gray` - `blue` - `green` - `aqua` - `red` - `light_purple` - `yellow` - `white`

Notes:

- Default color is `gold`. - This changes announcement color, not Boss glow color.

`announcement clear`

Purpose:

Restores the default announcement text.

Notes:

- Does not remove the spawn point. - Does not clear hologram text. - Only resets the fixed spawn announcement template.

Fixed Spawn Boss Pool Weight

Purpose:

Controls selection chance inside one fixed spawn point.

Rules:

- Minimum weight: 1 - Maximum weight: 1000000

Notes:

- This is separate from natural `spawn_rule.spawn_weight`. - Higher weight means higher chance inside that fixed spawn point pool.

15. Basic Boss Commands

`checkpokemonboss`

Purpose:

Checks which Bosses can spawn at the player's current location.

Shows:

- Time until next Boss refresh - Matching Bosses - Boss display names - Spawn weights

Permission:

Usually available to normal players.

`spawnpokemonboss`

Purpose:

Directly spawns a Boss near the player.

Parameters:

- Boss unique ID - Optional level

Permission:

Requires administrator permission.

Notes:

- Uses Boss unique ID, not species ID. - Level range is 1 to 900. - Useful for testing Boss configuration.

`spawnpokemonbossat`

Purpose:

Manages fixed Boss spawn points.

Permission:

Requires administrator permission.

16. Beginner Setup Suggestions

For the simplest setup:

- Enable natural Boss spawning. - Use a reasonable spawn interval. - Use a low spawn chance at first. - Enable Boss capture prevention. - Enable Boss immunity. - Use level mapping or level multiplier. - Add rewards with reasonable chance values. - Add glow to make Bosses easier to find. - Leave scale empty unless you want giant Bosses.

For stricter Boss servers:

- Enable battle checks. - Ban specific Pokemon if needed. - Ban specific items if needed. - Ban specific moves if needed. - Increase Boss stats through `custom_battle_stats`. - Use `actions_per_turn` carefully. - Add shield settings for raid-style fights.

For casual servers:

- Keep punishments low or disabled. - Use visible Boss glow. - Use moderate Boss size. - Give guaranteed small rewards and rare special rewards. - Use reward pools for "one item from this group" rewards. - Avoid extremely high `actions_per_turn`.

17. Common Problems

Boss does not load

Possible reasons:

- Duplicate `unique_id`. - Invalid `species_id`. - Invalid move name. - Invalid ability name. - Invalid item ID. - Invalid glow color. - Invalid scale value. - Broken JSON format. - Empty `reward_pools.entries`. - Invalid reward pool `rolls`. - Invalid reward pool entry `weight`.

Boss does not spawn naturally

Possible reasons:

- Natural spawning is disabled. - Spawn chance is too low. - Spawn interval has not passed. - Current biome does not match. - Current structure does not match. - Current time does not match. - Current location type does not match. - `spawn_weight` is missing or too low. - Boss file is not loaded.

Boss music does not play

Possible reasons:

- Boss music config is disabled. - The selected sound event is not registered on the client. - Resource pack is not enabled. - Sound file path is wrong. - Sound file is not OGG format. - Client does not have the resource pack. - The resource pack was placed in the folder but not moved to the enabled list. - Music volume is muted.

Important:

The mod randomly chooses from built-in music and enabled resource packs.

It does not use `bossBattleMusicSoundId`.

Boss shield does not work

Possible reasons:

- Global Boss shield config is disabled. - `shield_layers` is 0 or missing. - The move used does not consume shield layers. - `superEffectiveLayers` is set to 0. - The move is not super-effective. - The move is not listed in `moveLayerOverrides`. - Boss was spawned from old or outdated data.

Boss is too small or too large

Possible reasons:

- `scale` is set too low or too high. - Boss level causes automatic scale calculation. - Scale is clamped by the mod's allowed range.

Boss does not glow

Possible reasons:

- `glow` is not set. - Glow color is invalid. - Boss was spawned from old data. - Another system removed the glow effect.

Announcement color does not change

Possible reasons:

- The color name is invalid. - The wrong spawn point ID was used. - Announcement is disabled. - The message being checked is not the fixed spawn announcement.

Old NeoForge config does not work

Possible reasons:

- The config was generated before unified config fields. - Old grouped TOML sections are still present. - Old shield snake_case fields are still present. - Old `bossBattleMusicSoundId` is still present.

Fix:

- Delete the old config file and let the mod regenerate it. - Or move the old values to the new top-level fields. - Remove old music sound ID configuration.

18. Summary

CobbleBoss configuration can be understood like this:

- Use `unique_id`, `species_id`, `display_name`, and `glow` to define Boss identity and appearance. - Use `spawn_rule` to define where and when it appears. - Use `reward_rule` and `punish_rule` to define win and loss results. - Use `reward_items` for independent reward rolls. - Use `reward_pools` for "roll once, then choose one reward from this list". - Use `random_configs` to define stats, moves, battle mode, action count, shield, phase skills, held items, form, ability, shiny state, and size. - Use config files to control global Boss behavior. - Use resource packs to add random Boss battle music. - Use fixed spawn point commands to create controlled Boss spawn locations.

19. Paid Feature: Multiplayer Team Boss Battles

This is an advanced paid feature.

Data pack path:

```text data/cobbleboss/boss_teams/ ```

A Boss team file defines a group Boss battle.

Fields:

- `team_id` - `pokemon_unique_ids` - `spawn_structures` - `defeat_rewards` - `punish_rule`

`team_id`

Purpose:

The unique ID of the Boss team.

Notes:

- If no namespace is written, `cobbleboss` is used. - Commands can use this ID.

`pokemon_unique_ids`

Purpose:

The Boss Pokemon unique IDs used by this team.

Notes:

- These IDs must match normal Boss JSON `unique_id` values. - The team system creates Boss Pokemon from existing Boss definitions.

`spawn_structures`

Purpose:

Controls which structures can trigger this Boss team.

Notes:

- Uses structure IDs. - When a player is inside a matching structure and sends out a Pokemon, the team battle can be triggered. - Structure instances are recorded so the same structure is not repeatedly triggered.

`defeat_rewards`

Purpose:

Rewards after defeating the Boss team.

Fields:

- `reward_items` - `reward_pools` - `item_id` - `count` - `command` - `chance` - `rolls` - `weight`

How it works:

- `reward_items` behave as independent reward rolls. - `reward_pools` roll once, then randomly choose entries from the pool. - Team reward pools use the same format as normal Boss reward pools.

Chance note:

If `chance` is greater than 0, that custom chance is used.

If `chance` is missing or 0, the default reward chance can be used.

Example:

```json "defeat_rewards": { "reward_items": [ { "item_id": "minecraft:gold_ingot", "count": 4, "chance": 1.0 } ], "reward_pools": [ { "chance": 0.1, "rolls": 1, "entries": [ { "item_id": "cobblemon:poke_ball", "count": 3 }, { "item_id": "cobblemon:great_ball", "count": 2 }, { "item_id": "cobblemon:ultra_ball", "count": 1 } ] } ] } ```

`punish_rule`

Purpose:

Punishments after losing to the Boss team.

Fields:

- `punish_items` - `level` - `evs` - `ivs` - `command` - `chance`

Chance note:

If `chance` is greater than 0, that custom chance is used.

If `chance` is missing or 0, the default penalty chance can be used.

`spawnpokemonbossteam`

Purpose:

Manually starts a Boss team battle for a player.

Command meaning:

```text /spawnpokemonbossteam <player> <bossTeamId> ```

Permission:

Requires administrator permission.

Notes:

- `bossTeamId` can be written with or without namespace. - If no namespace is written, `cobbleboss` is used. - This command is mainly for testing and admin-controlled events.

Multiplayer Team Battle Behavior

How it works:

- The system scans nearby valid players. - Nearby players must not already be in battle. - Spectators and removed players are ignored. - The current team battle system is designed around up to 2 players. - The current Boss team battle system uses up to 2 Boss Pokemon. - This creates a 2v2 raid-style battle when enough players and Bosses are available. - If multiplayer conditions are not met, it can fall back to a single-player team Boss battle.

Notes:

- This feature is best explained after normal Boss configuration. - It is intended for servers that want raid-style gameplay. - Boss stats, rewards, shield, and `actions_per_turn` should be balanced carefully for team battles.

ADS