Skip to content

Configuration

Outbreaks uses HOCON configuration files located in config/matchaoutbreaks/.

Location: config/matchaoutbreaks/config.conf

{
# Enable debug logging
debug = false
# Spawn bucket weights for outbreak spawns
# Format: "bucket_name: weight, ..."
spawnBuckets = "common: 0.5, uncommon: 0.3, rare: 0.15, ultra-rare: 0.05"
# Minimum distance between concurrent outbreaks (blocks)
minimumDistance = 75
# Chance for an outbreak to spawn naturally (0.0-1.0)
outbreakChance = 0.05
}
  • debug: Enable detailed logging for troubleshooting
  • spawnBuckets: Rarity weights for outbreak spawns
  • minimumDistance: Prevents outbreaks from spawning too close together
  • outbreakChance: Probability of natural outbreak spawns (5% default)

Outbreak types are defined in separate .conf files in config/matchaoutbreaks/outbreak_types/.

Uses natural biome spawns with configurable rates.

Example: config/matchaoutbreaks/outbreak_types/plains_outbreak.conf

{
type = "biome"
# Spawn conditions
spawnConditions {
biomes = [
"#minecraft:is_plains"
]
}
# Outbreak duration in seconds
duration = 3600
# Ticks between spawn attempts
spawnRate = 100
# Maximum total Pokemon that can spawn
maxSpawns = 50
# Maximum concurrent Pokemon from this outbreak
concurrentSpawnCap = 10
# Outbreak radius in blocks
radius = 150
# Shiny rates by Pokemon count
# Format: "min-max: rate, ..."
shinyRates = "0-10: 4096, 11-20: 1024, 21-30: 512, 31-999: 341.3"
# Guaranteed perfect IVs by Pokemon count
ivRangeValues = "0-5: 0, 6-10: 1, 11-20: 2, 21-30: 3, 31-999: 4"
# Hidden ability chance by Pokemon count
hiddenAbilityRangeValues = "0-5: 0, 6-10: 0.1, 11-20: 0.2, 21-30: 0.3, 31-999: 0.4"
# Particle effect
particleEffect {
type = "vanilla"
particle = "minecraft:electric_spark"
}
# Rewards for catching outbreak Pokemon
rewards = []
}

Custom species list with special visuals.

Example: config/matchaoutbreaks/outbreak_types/space_time_distortion.conf

{
type = "distortion"
# Spawn conditions
spawnConditions {
biomes = [
"#minecraft:is_overworld"
]
}
# Species that can spawn in this distortion
species = [
{
species = "porygon"
aspects = []
level_range = "30..40"
weight = 3.0
},
{
species = "porygon2"
aspects = []
level_range = "40..50"
weight = 2.0
},
{
species = "porygonz"
aspects = ["shiny=yes"]
level_range = "50..60"
weight = 0.1
}
]
# Outbreak duration in seconds
duration = 1800
# Ticks between spawn attempts
spawnRate = 100
# Maximum total Pokemon that can spawn
maxSpawns = 30
# Maximum concurrent Pokemon from this outbreak
concurrentSpawnCap = 8
# Particle effect (can reference particle options)
particleEffect {
type = "vanilla"
particle = "minecraft:portal"
}
# Outbreak radius in blocks
radius = 100
# Rewards for catching outbreak Pokemon
rewards = [
{
type = "command"
command = "give {player} minecraft:diamond 3"
}
]
}

Use Minecraft’s built-in particles:

particleEffect {
type = "vanilla"
particle = "minecraft:electric_spark"
}

Available vanilla particles include:

  • minecraft:electric_spark
  • minecraft:portal
  • minecraft:end_rod
  • minecraft:flame
  • minecraft:soul_fire_flame
  • minecraft:cherry_leaves

Use Bedrock-style particle effects:

particleEffect {
type = "snowstorm"
particleId = "matchaoutbreaks:custom_effect"
}

Rewards are given to players for each Pokemon they catch or defeat during the outbreak. If an outbreak spawns 30 Pokemon and a player defeats all of them, they receive the reward 30 times.

Execute a server command for each Pokemon defeated:

rewards = [
{
type = "command"
command = "give {player} cobblemon:rare_candy 1"
}
]

Important Notes:

  • Use {player} as a placeholder for the player’s username
  • The command executes once per Pokemon defeated
  • Commands run with server permissions (operator level)
  • Multiple commands can be added to the rewards array

Example with multiple rewards:

rewards = [
{
type = "command"
command = "give {player} cobblemon:rare_candy 1"
},
{
type = "command"
command = "xp add {player} 50 points"
}
]

Execute MoLang scripts for complex reward logic:

rewards = [
{
type = "script"
script = "q.give_item('minecraft:diamond', 5)"
}
]

The spawnBuckets configuration controls the rarity distribution of outbreak spawns:

spawnBuckets = "common: 0.5, uncommon: 0.3, rare: 0.15, ultra-rare: 0.05"
  • common: 50% of outbreak spawns
  • uncommon: 30% of outbreak spawns
  • rare: 15% of outbreak spawns
  • ultra-rare: 5% of outbreak spawns

Use biome tags to target groups of biomes:

spawnConditions {
biomes = [
"#minecraft:is_plains",
"#minecraft:is_forest",
"#c:desert"
]
}

Common biome tags:

  • #minecraft:is_plains
  • #minecraft:is_forest
  • #minecraft:is_mountain
  • #minecraft:is_ocean
  • #minecraft:is_nether
  • #minecraft:is_end

Specify level ranges for distortion outbreak species:

level_range = "30..40" # Level 30 to 40
level_range = "50..50" # Exactly level 50
  1. Create a new .conf file in config/matchaoutbreaks/outbreak_types/
  2. Choose either type = "biome" or type = "distortion"
  3. Configure spawn conditions, duration, and rates
  4. Set particle effects and rewards
  5. Run /outbreak reload to load your new type
  6. Use /outbreak spawn <type> to test it