Files
Iris/docs/28 - Integrations.md
T
Brian Neumann-Fopiano ebfe278b3b Docvks
2026-08-10 15:47:26 -04:00

8.6 KiB

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.

Tutorial: prove an integration boundary

Choose one boundary and one observable result:

Boundary Positive proof Negative control
WorldEdit Make a cuboid selection, run /iris object we, and save a disposable object Clear the selection; Iris must report that no area is selected
Multiverse-Core Create or update a disposable Iris world and confirm generator Iris:<pack> in Multiverse In a separate disposable test copy, restart without Multiverse installed; Iris must skip the link without failing its own world lifecycle
External item/block/entity provider Validate one exact namespaced key and generate one consumer in a new chunk An invalid key logs and resolves empty without crashing generation
MythicMobs conditions irisbiome or irisregion passes inside the named Iris resource The same condition returns false outside Iris or with engine access unavailable
PlaceholderAPI Complete the direct parse sequence in 09 - PlaceholderAPI.md A player outside Iris receives the documented unavailable values
Tree feller A sneaking survival player with permission and an axe fells a provenanced Iris tree A player-planted or hand-built tree remains intact
  1. Start from a server where Iris alone passes its fresh-world smoke.
  2. Install one integration and its required dependencies; perform a full restart rather than a plugin reload.
  3. Confirm enable order and that both plugins report ready without a linkage or missing-class exception.
  4. Exercise the smallest read-only path listed in that integration section, then one controlled mutation such as a selection conversion, external item resolution, or managed-world import.
  5. Restart and repeat the same path. Test one unavailable/invalid external key so failure behavior is also known.
  6. Add the next integration only after the current boundary passes.

Soft-depend presence is not proof that an external provider is ready. Diagnose integration failures with both plugins' versions and startup order before changing an Iris pack.

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:<pack>, 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.