Files
Iris/AGENTS.md
T
2026-08-08 00:29:48 -06:00

5.9 KiB
Raw Blame History

Iris Agent Guide

Iris is a world generation engine for Minecraft servers and mod loaders. It generates terrain, biomes, caves, structures, objects, and entities from editable JSON packs, with an in-game studio authoring workflow. The same engine runs as a Bukkit-family plugin and as a Fabric, Forge, or NeoForge server mod. Read this file before making any change; the workspace-level ../AGENTS.md also applies when working inside the VolmitSoftware workspace.

Documentation Policy (mandatory)

  • docs/ is the authoritative reference for every feature of this plugin/mod. Files are flat (no subfolders) and numbered NN - Title.md, ordered for someone new to Iris; API docs always keep the highest numbers.
  • ANY change that alters a feature, command, permission, setting, pack JSON contract, studio/editor workflow, pregen behavior, structure/object system, integration, localization, client HUD/protocol, or public API surface MUST update the matching numbered doc in the same workstream. A behavior change with stale docs is an incomplete change — do not finish work without the doc update.
  • Docs state actual runtime behavior, not intended behavior. If a change fixes a documented quirk, update or remove that quirk entry. If a change introduces surprising behavior, document it plainly.
  • Docs are purely factual reference material: no marketing language, no emojis, no filler. Each file opens with a 14 sentence summary.
  • Cross-references use exact filenames (for example see "04 - Commands & Permissions.md"). When adding or renumbering files, fix every cross-reference.
  • Hosted external docs are not authority; this docs/ tree is.
  • Maintainer-only checklists use high numbers before the API series and are titled Maintainer — ….

Doc Index

File Covers
00 - Overview.md What Iris is, feature map, doc index, project layout
01 - Installation & Platforms.md Plugin/mod install, data dirs, first boot, platforms, native worldgen matrix
02 - Getting Started.md First world, teleport, basic pregen, first studio
03 - Configuration.md settings.json keys, defaults, hotload
04 - Commands & Permissions.md Full /iris tree, Bukkit vs modded, permissions
05 - Concepts & Pack Layout.md Pack roots, keys, folders, snippets, world snapshot vs studio
06 - Worlds & Lifecycle.md create/load/unload/remove, main world, Folia, pack copy
07 - Pregeneration.md pregen ops, cache, mantle, HUD
08 - Localization.md locales, overrides, client lang
09 - PlaceholderAPI.md %iris_…% keys and migration
10 - Studio & VSCode Schemas.md Studio workflow, schemas, hotload
11 - Dimensions.md Dimension JSON, modes, height, imports
12 - Regions.md Regions and region-level content
13 - Biomes.md Biome JSON, layers, custom biomes, spawns
14 - Generators & Noise.md Generators, styles, expressions, images
15 - Caves & Carving.md Cave profiles, field modules, carving
16 - Surfaces, Decorators & Deposits.md Decorators, deposits, palettes
17 - Trees, Fungi, Coral, Crystals, Formations, Ruins.md Procedural decoration systems
18 - Structures Overview.md Objects vs jigsaw vs native structures
19 - Objects.md Creating and importing .iob objects
20 - Object Placement.md Placing objects in biomes and regions
21 - Jigsaw Structures.md Iris multi-piece structures
22 - Native Structures & Datapacks.md Vanilla/datapack structures on Iris
23 - Loot, Entities, Spawners, Markers.md Pack entities and loot
24 - Pack Mods & Snippets.md Injectors/replacers and snippets
25 - Pack Management.md Download, validate, cleanup, package, update-world
26 - Example - Minimal Dimension.md Minimal pack walkthrough
27 - Example - Configuring Overworld.md Editing the shipping overworld
28 - Integrations.md WorldEdit, Multiverse, Mythic, item plugins, tree feller
29 - Client HUD & Protocol.md Client mod HUD and protocol
30 - Platform Differences.md Bukkit vs Fabric/Forge/NeoForge matrix
31 - Operator Runbooks & Smoke Tests.md Manual verification
32 - Determinism & Goldenhash.md Cross-platform parity gate
33 - Performance Tuning.md Threads, mantle, SIMD, pregen caps
85 - Maintainer - MC Version Bump.md Version bump procedure
86 - Maintainer - Release Checklist.md Release steps
87 - Maintainer - Release Readiness.md Living readiness tracker
90 - API - Getting Started.md Bukkit public API setup
91 - API - Terrain.md Terrain query service
92 - API - World Events.md Engine and pregen events
93 - API - Tree Feller.md Tree feller service
94 - API - Modded.md Modded public API

Docs 0033 serve operators and pack authors in reading order; 8587 are maintainer; 9094 serve plugin and mod developers.

Build and Platforms

  • Java 25 required. Independent Gradle build from Iris/: ./gradlew build, ./gradlew test.
  • Artifacts: Bukkit-family plugin jar; Fabric, Forge, and NeoForge mod jars under dist/ when built.
  • Modules: core (engine), spi (platform SPI), adapters/bukkit/plugin (plugin + Bukkit API), adapters/modded-common + loader adapters, probe (offline tooling).
  • Default pack downloads at first boot from the IrisDimensions overworld release; packs live under the platform data directory packs/<key>/.

Content Model (brief)

  • Pack — directory of JSON and .iob resources under packs/<key>/ with at least dimensions/*.json.
  • Dimension — root config for a world type (height, modes, regions, imports).
  • Region / Biome / Generator — spatial and terrain authoring units.
  • Object / Structure — placed content (.iob, Iris jigsaw, native/datapack structures).
  • Studio — transient authoring world with live pack hotload and VSCode schemas.