Skip to content

EmakiStructure ​

EmakiStructure does two jobs for you: structure generation and multiblock interaction. First you select a region and export it as a .nbt structure template, then place it back later at any facing. You can also record a contraption built from blocks as a multiblock definition: once players assemble the shape, it runs the actions you configured. If generation is interrupted by a reload or a server stop, the plugin rolls the area back to its pre-generation state. You can swap vanilla structures (such as villages) for your own templates in not-yet-generated chunks, and furniture from ItemsAdder / Oraxen / Nexo / CraftEngine is identified on export and restored as-is on placement

Basics ​

ItemValue
Module version1.0.5
Build artifactEmakiStructure-1.0.5.jar
API coordinateemaki.jiuwu.craft:emaki-structure-api:1.0.1 (compileOnly only; never dropped into plugins/)
Root command/emakistructure (aliases /ems, /estruct)
Hard dependencyEmakiCoreLib (required: true)
Soft dependenciesMythicMobs, EmakiMobs, ItemsAdder, Oraxen, Nexo, CraftEngine (all required: false; the matching capability degrades when absent)
Permission nodesemakistructure.use, emakistructure.edit, emakistructure.reload, emakistructure.admin
Descriptor baselineapi-version: "26.1", folia-supported: true

NOTE

EmakiStructure is a .key-gated private module: it takes part in the default build only when a .key file exists at the repository root. If you only install and use the plugin, just ignore this line

Pages ​

PageContents
Commands & PermissionsSelection, export, placement, multiblock, and debug commands
Structure TemplatesSelection highlight, .nbt import/export validation, spawn and furniture companion files
Multiblock Structuresmultiblocks/*.yml definitions, triggers, and incremental detection
ConfigurationEvery config.yml key
API & IntegrationThe emaki-structure-api facade and MultiblockTriggerEvent

Core capabilities ​

CapabilityDescription
Two-corner selection/ems select pos1/pos2 to set corners, adjust to nudge, clear to reset; the region is outlined by a continuous glowing wireframe
Structure templatesExport a selection to structures/<name>.nbt and place it by facing (including mirror variants); imports are validated per file for size, palette, and block-entity payload
Generation guardrailsPer-tick write cap, TPS-adaptive throttling, queue timeout, ground support policy (skip/keep/fill), and player-trapped detection
Transaction rollbackWhen generation is interrupted (reload / stop / timeout / limit), a delta snapshot restores the area to its pre-generation state; uncommitted transactions are cleaned up at startup
Vanilla structure replacementreplace_rules replaces vanilla structures (villages, etc.) in not-yet-generated chunks with your own template; already-generated chunks are never rewritten
Multiblock structuresRecord a layout to multiblocks/<id>.yml; when a player assembles the shape, the configured actions run. Supports shape validation, cooldown, conditions, and incremental detection
Four-source furnitureExport recognizes ItemsAdder / Oraxen / Nexo / CraftEngine furniture into furniture/<template>.yml, restores it on placement by facing, and removes it during rollback
In-structure mobsspawns/<template>.yml companion files spawn mobs from points/spheres/regions (minecraft: / mythicmobs: / emakimobs: prefixes)

Default data directory ​

text
plugins/EmakiStructure/
├── config.yml
├── structures/           ← .nbt structure templates (structure export output)
├── multiblocks/          ← multiblock definitions (multiblock export output)
├── spawns/               ← in-structure mob spawn companion files
├── furniture/            ← furniture restoration companion files (written on export)
├── journal/              ← generation transaction rollback logs (runtime files)
├── replaced/             ← vanilla replacement markers (runtime files)
└── lang/

structures/ and multiblocks/ usually come from in-game commands, but you may write them by hand; spawns/ and furniture/ are hand-written or produced on export; journal/ and replaced/ are generated by the plugin at runtime — do not edit them by hand. After you edit files such as spawns/ by hand, run /ems reload once to apply the changes

Typical workflow ​

  1. First run /ems select pos1 and /ems select pos2 to outline a region, and note the reported size
  2. Then run /ems structure export <name> to write structures/<name>.nbt
  3. (Optional) Author spawns/<name>.yml to decide which mobs spawn in this structure; if the selection contained furniture-plugin blocks, the furniture record is written automatically during export
  4. Run /ems get <name> [facing] to preview in place, and once you are happy, run /ems structure place <name> <facing> to place it for real
  5. Multiblocks: run /ems multiblock export <id> to record the layout from the selection; the actions fire once players assemble the shape
  6. For vanilla structure replacement, declare entries under replace_rules in config.yml

Relation to other modules ​

ModuleCollaboration
EmakiCoreLibHard dependency: dispatcher, debug command, messages, and config precheck infrastructure; multiblock trigger actions run through the CoreLib action pipeline
EmakiMobs / MythicMobsThe spawns/ companion file can spawn emakimobs: / mythicmobs: custom mobs (both optional)
ItemsAdder / Oraxen / Nexo / CraftEngineOptional furniture and custom-block sources; matching entries are skipped with a warning when absent