# 28 - Integrations Iris integrates with selected Bukkit plugins for world management, selections, external blocks/items/entities, Mythic skill conditions, PlaceholderAPI, and tree felling. Soft-depends declare load order only; Iris still checks `isPluginEnabled` / readiness before use. Integrations are Bukkit-family unless noted. See also `04 - Commands & Permissions.md`, `06 - Worlds & Lifecycle.md`, `09 - PlaceholderAPI.md`, `19 - Objects.md`, and `93 - API - Tree Feller.md`. ## Soft-depends and load order (`plugin.yml`) | Plugin | Relation | Role | |---|---|---| | PlaceholderAPI | softdepend | `%iris_...%` expansion | | CraftEngine | softdepend | External blocks/items | | Nexo | softdepend | External blocks/items | | ItemsAdder | softdepend | External blocks/items | | SCore | softdepend | Dependency of ExecutableItems ecosystems; no Iris provider class | | ExecutableItems | softdepend | External items | | MythicLib | softdepend | Dependency of MMOItems ecosystems; no Iris provider class | | MMOItems | softdepend | External blocks/items | | eco | softdepend | Dependency of EcoItems; no Iris provider class | | EcoItems | softdepend | External items | | MythicMobs | softdepend | External entities + skill conditions | | MythicCrucible | softdepend | External blocks/items | | KGenerators | softdepend | External blocks/items | | WorldEdit | softdepend | Selection for object/wand workflows | | Multiverse-Core | `loadbefore` (Iris loads first) | World import/generator sync and remove | Multiverse is listed under `loadbefore`, not softdepend: Iris enables before Multiverse-Core so Multiverse can see Iris as a generator plugin. ## WorldEdit `WorldEditLink` reflects into WorldEdit when the plugin is enabled. | Use | Behavior | |---|---| | Selection read | Returns an Iris `Cuboid` for the player's current WorldEdit selection in their world, or `null` if none | | Wand / object tools | With `world.worldEditWandCUI` default `true`, a WorldEdit selection is accepted where Iris wants a selection without holding the Iris wand | | `/iris object we` | Converts the current WorldEdit selection into a real Iris wand selection | | Limit | `position2` does not work on a WorldEdit-only selection until `/iris object we` runs | WorldEdit is not required for `.schem` import: Iris parses schematic NBT itself. See `19 - Objects.md`. ## Multiverse-Core `MultiverseCoreLink` uses the Multiverse Core API when Multiverse-Core is enabled. | Operation | Behavior | |---|---| | World create/update | Imports or updates the Multiverse world with generator `Iris:`, `autoLoad=false`, environment from the Bukkit world, spawn adjust off | | World remove | Removes the Multiverse world config entry and saves worlds config; throws if Multiverse refuses removal | | Inactive Multiverse | Calls no-op / return `false` | Studio open/close and world lifecycle paths use the same link when Multiverse is present. See `06 - Worlds & Lifecycle.md`. ## External data providers (item / block / entity plugins) `ExternalDataSVC` activates built-in providers when their plugins are ready, including late enable via `PluginEnableEvent`. Packs reference external content by namespaced ids resolved through the active provider for that namespace and `DataType` (`ITEM`, `BLOCK`, `ENTITY`). | Plugin id | Provider | Namespaces / match | Types | |---|---|---|---| | CraftEngine | `CraftEngineDataProvider` | Any CraftEngine item/block/furniture key that exists | ITEM, BLOCK | | Nexo | `NexoDataProvider` | `nexo` | ITEM, BLOCK | | ItemsAdder | `ItemAdderDataProvider` | Namespaces reported by ItemsAdder for items/blocks | ITEM, BLOCK | | ExecutableItems | `ExecutableItemsDataProvider` | `executable_items` | ITEM | | MMOItems | `MMOItemsDataProvider` | Blocks: `mmoitems`; items: two-part type namespace (`type_subtype:id`) | ITEM, BLOCK | | EcoItems | `EcoItemsDataProvider` | `ecoitems` | ITEM | | MythicMobs | `MythicMobsDataProvider` | `mythicmobs` | ENTITY | | MythicCrucible | `MythicCrucibleDataProvider` | `crucible` | ITEM, BLOCK | | KGenerators | `KGeneratorsDataProvider` | `kgenerators` | ITEM, BLOCK | Third parties may register additional providers with `ExternalDataSVC#registerProvider` if the plugin id is not already taken. Missing resources log and resolve empty rather than crashing generation. ## MythicMobs skill conditions When MythicMobs is active, Iris registers location conditions: | Condition | Fields | Check | |---|---|---| | `irisbiome` | `biome`/`b` (comma list of load keys), `surface`/`s` (boolean, default false) | Surface biome or full column biome via Iris engine | | `irisregion` | `region`/`r` (comma list of load keys) | Region load key at X/Z | Both return false outside Iris worlds or when engine access is missing. ## PlaceholderAPI Soft-depend + expansion id `iris`. Full key list and migration: `09 - PlaceholderAPI.md`. ## Tree feller (operator) Standalone tree felling is Bukkit-only. It removes whole Iris-generated trees when a sneaking survival player breaks a provenanced log with an axe. ### Settings (`settings.json`) | Key | Default | Meaning | |---|---|---| | `treeFeller.enabled` | `false` | Master switch for the **standalone** path only | | `treeFeller.durabilityPreservationChance` | `0` | Percent chance a log costs no axe durability (standalone path); clamped `0..100` on read | ### Permission | Node | Default | Meaning | |---|---|---| | `iris.treefeller` | `op` | Required for standalone felling | ### Standalone requirements (all required) - `treeFeller.enabled` is `true` - Player has `iris.treefeller` - `GameMode.SURVIVAL` - Player is sneaking - Broken block is tagged as a log - Main-hand item is an axe - Block has Iris tree provenance in the mantle (Iris-placed tree, not player-planted saplings or hand-placed logs) Iris listens at `EventPriority.HIGHEST` for its own standalone request. Other plugins can drive felling with `INTEGRATION_OVERRIDE` (bypasses enabled switch and permission only) through `IrisTreeFellerService`; that API is documented in `93 - API - Tree Feller.md`. ### Runtime notes for operators - Discovery walks mantle provenance (bounds: 131072 members, 1e6 visits, 256-block axis distance); oversize trees fall back to removing only the broken block - Removal is paced across ticks - Run ends if the player stops sneaking, changes hotbar slot/hand, leaves survival/world, breaks the axe, or swaps the axe item - Leaves never cost durability/cost hooks; logs do ## Platforms WorldEdit, Multiverse, external data providers, Mythic conditions, PlaceholderAPI, and the tree feller are Bukkit-family. Modded loaders do not use these plugin soft-depends. See `30 - Platform Differences.md`.