# specialai:general.toml
# This config contains options for several miscellaneous features in the mod, such as: animals, reactions, jockeys,
#   and door breaking.

  # Entity List fields: General format = [ "namespace:entity_type value1 value2 ...", ... ]
  #   Entity lists are arrays of entity types. Some entity lists specify a number of values linked to each entity type.
  #   Entity types are defined by their key in the entity registry, usually following the pattern
  #     'namespace:entity_name'.
  #   'default' can be used instead of an entity type registry key to provide default values for all entities.
  #   List entries by default match any entity type derived from (i.e. based on) their entity type. For example,
  #     '~minecraft:zombie'.
  #     There is no steadfast rule about extending, even in vanilla, but the hope is that mod-added mobs will extend
  #       their base mob.
  #   An asterisk '*' can be used to match all registry entries belonging to X namespace. For example, 'minecraft:*'
  #     will match all vanilla entries.
  #   Entity type tags can also be used here. To declare a tag, start with a '#' followed by the rest of the tag path.
  #   Tag example: '#minecraft:beehive_inhabitors'
  #       Priority order: specific entries > tag entries > namespace entries > default

  # Block List fields: General format = [ "namespace:block_name[property1=value1,...]", ... ]
  #   Block lists are arrays of blocks and partial block states.
  #   Blocks are defined by their key in the block registry, usually following the pattern 'namespace:block_name'.
  #   An asterisk '*' can be used to match all blocks belonging to X namespace. For example, 'minecraft:*' will match
  #     all vanilla blocks.
  #   Block tags can also be used here. To declare a tag, start with a '#' followed by the rest of the tag path.
  #   Tag example: '#minecraft:beehive_inhabitors'
  #   List entries by default match any block state. The block states to match can be narrowed down by specifying
  #     properties. The syntax for block state properties is the same as for commands. Any properties not specified will
  #     match any value. For example, 'minecraft:beehive[honey_level=5]' will match any full beehives, regardless of the
  #     direction they face.
  #   Note that tags and namespace entries are not block state sensitive; they only care about the base block
  #       Priority order: specific entries > tag entries > namespace entries


# Category: animals
# Options to customize mobs that are typically passive.

  # List of passive mobs (by entity type registry id) that are made 'neutral' like wolves.
  # Additional value after the entity type is the chance (0.0 to 1.0) for entities of that type to spawn with the AI.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "minecraft:chicken 1.0", "minecraft:cow
  #   1.0", "minecraft:pig 1.0", "minecraft:sheep 1.0", "minecraft:rabbit 1.0", "minecraft:strider 1.0",
  #   "minecraft:squid 1.0", "minecraft:cod 1.0", "minecraft:salmon 1.0", "minecraft:tropical_fish 1.0" ]
  #    Range for Values: 0.0 ~ 1.0
  animals.depacify_entities.whitelist = [
    "minecraft:chicken 1.0",
    "minecraft:cow 1.0",
    "minecraft:pig 1.0",
    "minecraft:sheep 1.0",
    "minecraft:rabbit 1.0",
    "minecraft:strider 1.0",
    "minecraft:squid 1.0",
    "minecraft:cod 1.0",
    "minecraft:salmon 1.0",
    "minecraft:tropical_fish 1.0"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  animals.depacify_entities.blacklist = []

  # List of neutral (including depacified) mobs that are made 'aggressive' like monsters.
  # Additional value after the entity type is the chance (0.0 to 1.0) for entities of that type to spawn with the AI.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "minecraft:cow 0.04", "minecraft:rabbit
  #   0.02", "minecraft:strider 0.02", "minecraft:squid 1.0", "minecraft:cod 0.02", "minecraft:salmon 0.04" ]
  #    Range for Values: 0.0 ~ 1.0
  animals.aggressive_entities.whitelist = [
    "minecraft:cow 0.04",
    "minecraft:rabbit 0.02",
    "minecraft:strider 0.02",
    "minecraft:squid 1.0",
    "minecraft:cod 0.02",
    "minecraft:salmon 0.04"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  animals.aggressive_entities.blacklist = []

  # If true, passive mobs will seek out and eat the items used to breed them laying on the floor.
  # <Boolean> Valid Values: { true, false }, Default: true
  animals.eat_breeding_items = true
  # Mobs' reach (from foot position) when targeting breeding items to eat. Player reach is about 4.5. When in range,
  #   the item will be slowly 'vacuumed' toward the passive mob.
  # <Number> Range: ≥ 0.0, Default: 2.0
  animals.eating_reach = 2.0
  # If true, when mobs eat breeding items off the floor, they will regain health (like wolves). The option
  #   "eat_breeding_items" needs to be enabled for this to have any effect.
  # <Boolean> Valid Values: { true, false }, Default: true
  animals.eating_heals = true
  # The cooldown in ticks between each time the mob will consume one item out of the food item stack it has found.
  # <Integer> Range: ≥ 0, Default: 2
  animals.eating_cooldown = 2


# Category: reaction_ai
# Options to customize reactive behaviors.

  # List of mobs that will try to avoid TNT and creepers that are about to explode.
  # Additional value after the entity type is their movement speed multiplier while fleeing.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "default 1.4" ]
  #    Range for Values: ≥ 0.0
  reaction_ai.avoid_explosions.whitelist = [
    "default 1.4"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  reaction_ai.avoid_explosions.blacklist = []

  # List of mobs that will call for help from nearby mobs of the same type when struck. This does not trigger from
  #   killing blows (see below).
  # Additional value after the entity type is the chance (0.0 to 1.0) for entities of that type to spawn with the AI.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "default 1.0" ]
  #    Range for Values: 0.0 ~ 1.0
  reaction_ai.call_for_help.whitelist = [
    "default 1.0"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  reaction_ai.call_for_help.blacklist = []
  # List of mobs that will call for help when dealt a killing blow and the chance for it to occur.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "default 0.1" ]
  #    Range for Values: 0.0 ~ 1.0
  reaction_ai.call_for_help_on_death.whitelist = [
    "default 0.1"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  reaction_ai.call_for_help_on_death.blacklist = []

  # List of mobs that will try to sidestep an arrow fired in their direction.
  # Additional values after the entity type are the chance (0.0 to 1.0) for entities of that type to spawn with the
  #   AI, followed by the chance for entities of that type with the AI to attempt to dodge (rolled for each arrow).
  # <Entity List> Format: [ "namespace:entity_type value1 value2", ... ], Default: [ "minecraft:skeleton 1.0 0.5",
  #   "minecraft:stray 1.0 0.5", "minecraft:wither_skeleton 1.0 0.5", "default 0.2 0.5" ]
  #    Range for Values: 0.0 ~ 1.0
  reaction_ai.dodge_arrows.whitelist = [
    "minecraft:skeleton 1.0 0.5",
    "minecraft:stray 1.0 0.5",
    "minecraft:wither_skeleton 1.0 0.5",
    "default 0.2 0.5"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  reaction_ai.dodge_arrows.blacklist = []


# Category: jockeys
# Options relating to which mobs should act as riders or mounts.

  # List of mobs that can be ridden on by normal-sized riders (not all entities can be controlled by their rider).
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: [ "minecraft:spider", "minecraft:skeleton_horse",
  #   "minecraft:zombie_horse", "minecraft:sheep", "minecraft:cow", "minecraft:polar_bear", "minecraft:horse",
  #   "minecraft:donkey", "minecraft:mule", ... ]
  jockeys.mount_entities.whitelist = [
    "minecraft:spider",
    "minecraft:skeleton_horse",
    "minecraft:zombie_horse",
    "minecraft:sheep",
    "minecraft:cow",
    "minecraft:polar_bear",
    "minecraft:horse",
    "minecraft:donkey",
    "minecraft:mule",
    "~minecraft:llama",
    "minecraft:hoglin"
  ]
  # List of mobs that can be ridden on by small riders or normal-sized riders that are babies (not all entities can be
  #   controlled by their rider).
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: [ "minecraft:chicken", "minecraft:rabbit",
  #   "minecraft:cave_spider" ]
  jockeys.mount_entities.small_list = [
    "minecraft:chicken",
    "minecraft:rabbit",
    "minecraft:cave_spider"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  jockeys.mount_entities.blacklist = []

  # List of mobs that can ride normal-sized mounts and the chance for them to gain the rider AI. Note that the entity
  #   must have task-based AI enabled.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "minecraft:skeleton 0.1",
  #   "minecraft:stray 0.1", "minecraft:wither_skeleton 0.1", "minecraft:zombie 0.05", "minecraft:creeper 0.05",
  #   "minecraft:witch 0.05", "minecraft:piglin 0.1", "minecraft:piglin_brute 0.1" ]
  #    Range for Values: 0.0 ~ 1.0
  jockeys.rider_entities.whitelist = [
    "minecraft:skeleton 0.1",
    "minecraft:stray 0.1",
    "minecraft:wither_skeleton 0.1",
    "minecraft:zombie 0.05",
    "minecraft:creeper 0.05",
    "minecraft:witch 0.05",
    "minecraft:piglin 0.1",
    "minecraft:piglin_brute 0.1"
  ]
  # List of mobs that can only ride small mounts or normal-sized mounts that are babies and the chance for them to
  #   gain the rider AI. Note that the entity must have task-based AI enabled.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: []
  #    Range for Values: 0.0 ~ 1.0
  jockeys.rider_entities.small_list = []
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  jockeys.rider_entities.blacklist = []


# Category: door_breaking
# Options to customize door-breaking behaviors.

  # List of mobs that can gain door breaking AI (note that the entity must have task-based AI enabled).
  # Additional value after the entity type is the chance (0.0 to 1.0) for entities of that type to spawn with the AI.
  # <Entity List> Format: [ "namespace:entity_type value", ... ], Default: [ "minecraft:zombie 1.0",
  #   "minecraft:creeper 1.0" ]
  #    Range for Values: 0.0 ~ 1.0
  door_breaking.entities.whitelist = [
    "minecraft:zombie 1.0",
    "minecraft:creeper 1.0"
  ]
  # <Entity List> Format: [ "namespace:entity_type", ... ], Default: []
  door_breaking.entities.blacklist = []

  # If true, mobs will only break doors while they are chasing an attack target. Disabling this typically leads to
  #   mobs smashing into your house to get to blocks they are targeting as part of an idle griefing or fiddling
  #   behavior, such as torches or chests.
  # <Boolean> Valid Values: { true, false }, Default: true
  door_breaking.require_target = true
  # If true, mobs will only break doors they have the tools to harvest.
  # For example, they will only break iron doors if they have a pickaxe.
  # <Boolean> Valid Values: { true, false }, Default: true
  door_breaking.require_tools = true

  # If true, doors broken by mobs will leave item drops.
  # <Boolean> Valid Values: { true, false }, Default: true
  door_breaking.leave_drops = true

  # The block breaking speed multiplier for mobs breaking doors, relative to the player's block breaking speed.
  # <Number> Range: ≥ 0.0, Default: 0.33
  door_breaking.break_speed = 0.33
  # If true, creepers will resort to what they know best when they meet a door blocking their path.
  # <Boolean> Valid Values: { true, false }, Default: true
  door_breaking.mad_creepers = true

  # If true, door breaking AI will automatically target all blocks that derive from the vanilla doors, fence gates,
  #   and trapdoors.
  # <Boolean> Valid Values: { true, false }, Default: true
  door_breaking.targets.auto_target_doors = true
  # List of blocks that that can be broken by the door breaking AI.
  # <Block List> Format: [ "namespace:block_name[properties]", ... ], Default: []
  door_breaking.targets.whitelist = []
  # <Block List> Format: [ "namespace:block_name[properties]", ... ], Default: []
  door_breaking.targets.blacklist = []
