# Config.yml

Here's the updated `config.yml` guide for your wiki, incorporating the new Creeper friendly fire setting and the complete Spider AI configuration:

***

## **Configuration Guide: config.yml - AdvancedMobAI**

This file allows you to control all aspects of the enhanced mob behavior in AdvancedMobAI.

#### `creeper` Section

Settings specific to the enhanced Creeper AI.

**`creeper.wall_breaching`**

Controls the Creeper's ability to break thin walls when they lack direct line of sight.

* **`enabled`**:
  * Description: Enables (`true`) or disables (`false`) this ability.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`max_check_distance`**:
  * Description: Maximum distance (in blocks) the Creeper will check ahead to detect an obstructing wall between it and the player.
  * Type: Decimal number
  * Default: `5.0`
* **`proximity_threshold`**:
  * Description: Maximum distance (in blocks) the Creeper must be from the detected wall to be considered 'stuck' to it and decide to explode. Should be slightly greater than `1.0` to work correctly.
  * Type: Decimal number
  * Default: `1.8`
* **`cooldown_seconds`**:
  * Description: Minimum time (in seconds) the same Creeper must wait before attempting another special action (either wall breaching or pillar explosion) after performing one.
  * Type: Integer
  * Default: `5`
* **`resistant_blocks`**:
  * Description: A list of block materials that the Creeper will NOT attempt to break with this ability. Extremely hard blocks like Bedrock or End Portals are already protected internally. Add other blocks here that you want to protect (e.g., Iron Blocks, Enchanting Tables).
  * Type: List of Strings (Bukkit Material names, uppercase)
  * Default: `['OBSIDIAN', 'ANCIENT_DEBRIS', 'NETHERITE_BLOCK', ... (see file)]`

**`creeper.proactive_targeting`**

Allows idle (untargeted) Creepers to acquire a nearby player as a target.

* **`enabled`**:
  * Description: Enables (`true`) or disables (`false`) this ability.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`range`**:
  * Description: Maximum distance (in blocks) at which an idle Creeper will detect a nearby player to target them.
  * Type: Decimal number
  * Default: `8.0`

**`creeper.pillar_explosion`**

Makes the Creeper explode if the player is nearby horizontally but elevated and unreachable.

* **`enabled`**:
  * Description: Enables (`true`) or disables (`false`) this ability.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`max_horizontal_distance`**:
  * Description: Maximum horizontal distance (on the XZ plane, in blocks) between the Creeper and the player to consider this explosion.
  * Type: Decimal number
  * Default: `3.5`
* **`min_vertical_distance`**:
  * Description: The player must be at least this high (in blocks, Y difference) above the Creeper.
  * Type: Decimal number
  * Default: `2.0`
* **`max_vertical_distance`**:
  * Description: The player must not be higher than this distance (in blocks, Y difference) above the Creeper.
  * Type: Decimal number
  * Default: `5.0`

**`creeper.creeper_explosions`**

Settings related to general Creeper explosion behavior.

* **`friendly_fire`**:
  * Description: If `true`, normal (non-charged) Creeper explosions can harm other Creepers, Zombies, Skeletons, Spiders, and their variants. If `false`, these mobs will be immune to normal Creeper explosions.
  * Type: Boolean (`true`/`false`)
  * Default: `true`

#### `enderman` Section

Settings specific to the enhanced Enderman AI.

**`enderman.dismantler_ai`**

Controls the Enderman's ability to remove blocks obstructing their path to a player.

* **`enabled`**:
  * Description: Enables (`true`) or disables (`false`) this ability.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`check_interval_ticks`**:
  * Description: How often (in server ticks; 20 ticks = 1 second) the Enderman will check if it needs to remove a block. Higher values reduce server load but make reactions slower.
  * Type: Integer
  * Default: `30`
* **`max_check_distance`**:
  * Description: Maximum distance (in blocks) to the player for the Enderman to attempt removing obstructing blocks.
  * Type: Decimal number
  * Default: `6.0`
* **`cooldown_seconds`**:
  * Description: Minimum time (in seconds) the same Enderman must wait before attempting to remove another block after having removed one.
  * Type: Integer
  * Default: `8`
* **`pickupable_blocks`**:
  * Description: List of materials that the Enderman IS allowed to pick up with this ability.
    * If this list is EMPTY (`pickupable_blocks: []`): The Enderman can pick up ANY block that is NOT in the Enderman's `resistant_blocks` list.
    * If you define blocks here: The Enderman can ONLY pick up blocks from this list (provided they are also not in `resistant_blocks`).
  * Type: List of Strings (Bukkit Material names, uppercase)
  * Default: `['DIRT', 'GRASS_BLOCK', 'SAND', 'OAK_LOG', ... (see file for extensive list)]`
* **`resistant_blocks`**:
  * Description: List of materials that the Enderman can NEVER pick up with this ability, regardless of whether they are in `pickupable_blocks` or if `pickupable_blocks` is empty. Use this to protect valuable or important blocks (chests, furnaces, ore blocks, etc.). Blocks like Bedrock are already protected internally.
  * Type: List of Strings (Bukkit Material names, uppercase)
  * Default: `['OBSIDIAN', 'BEDROCK', 'CHEST', 'FURNACE', 'IRON_BLOCK', ... (see file)]`

#### `spider_ai` Section

Settings specific to the enhanced Spider AI.

**`spider_ai.web_shot`**

Controls the Spider's ability to shoot webs at players.

* **`enabled`**:
  * Description: Enables (`true`) or disables (`false`) the web-shooting ability for spiders.
  * Type: Boolean (`true`/`false`)
  * Default: `false`
* **`check_interval_ticks`**:
  * Description: How often (in server ticks; 20 ticks = 1 second) spiders will check for targets to use their web shot. Higher values reduce server load but make reactions slower.
  * Type: Integer
  * Default: `40`
* **`range`**:
  * Description: Maximum distance (in blocks) at which a spider will attempt to shoot a web at a player.
  * Type: Decimal number
  * Default: `15.0`
* **`cooldown_seconds`**:
  * Description: Minimum time (in seconds) the same spider must wait before attempting another web shot after having fired one.
  * Type: Integer
  * Default: `7`
* **`particles_on_shot`**:
  * Description: If `true`, particles will be shown at the spider's location when it fires a web shot.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`particle_type_on_shot`**:
  * Description: The type of particle to display when a spider fires a web shot. (e.g., `SPIT`, `SMOKE`, `EXPLOSION_NORMAL`).
  * Type: String (Bukkit Particle name, uppercase)
  * Default: `SPIT`
* **`web_duration_seconds`**:
  * Description: The duration (in seconds) for which the generated cobweb block will persist before disappearing.
  * Type: Integer
  * Default: `5`
* **`apply_effect_on_capture`**:
  * Description: If `true`, a potion effect will be applied to the player if they are caught in a web generated by a spider's shot.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`effect_type`**:
  * Description: The type of potion effect to apply to the player when caught in a web (e.g., `POISON`, `SLOWNESS`, `WEAKNESS`).
  * Type: String (Bukkit PotionEffectType name, uppercase)
  * Default: `POISON`
* **`effect_duration_seconds`**:
  * Description: The duration (in seconds) of the potion effect applied when caught in a web.
  * Type: Integer
  * Default: `4`
* **`effect_amplifier`**:
  * Description: The amplifier (level) of the potion effect applied when caught in a web. 0 is level I, 1 is level II, etc.
  * Type: Integer
  * Default: `0`
* **`particles_on_impact`**:
  * Description: If `true`, particles will be shown at the location where a web shot impacts.
  * Type: Boolean (`true`/`false`)
  * Default: `true`
* **`particle_type_on_impact`**:
  * Description: The type of particle to display when a web shot impacts. (e.g., `BLOCK_CRACK`, `SMOKE`, `CRIT`). For `BLOCK_CRACK` or `BLOCK_DUST`, it will automatically use `COBWEB` material data.
  * Type: String (Bukkit Particle name, uppercase)
  * Default: `BLOCK_CRACK`

***

**Note:** After modifying this file, make sure to save the changes and run the command `/am reload` in-game or restart the server for them to take effect. If you are upgrading from an older version, it is highly recommended to delete your `config.yml` to generate a new one with all the latest options, or manually add the new sections for `spider_ai` and `creeper.creeper_explosions.friendly_fire`.
