Added dimension takeover

- IrisDimension borrowedDimensionType reuses an existing registered dimension type instead of generating one
- Pack validation rejects borrowedDimensionType values that are not namespaced registry keys
- Generation contracts record the borrowed type key and capture it as an external registry definition
- Borrowed types bind when the pack min equals the type min_y and the pack top fits, with both ranges in the refusal
- Studio hotload rejects borrowed type changes and the world check validates borrowed ranges
- Forced datapack skips generated types and presets for borrowed dimensions and accepts retained borrowed epochs
- modded.json dimensionTakeovers writes a LevelStem per level key using the irisworldgen:iris generator
- Takeover changes quarantine the level chunk, entity, POI, and Iris data before load and track applied state per world
- Fresh levels adopt generation history with content-addressed biomes instead of legacy aliases
- /iris world takeover <dimension> <pack[:dimension]|off> with help and translations in every locale
This commit is contained in:
Brian Neumann-Fopiano committed 2026-10-14 20:16:36 -04:00
1 parent 8afb445b1d
commit 5633eec009
52 files changed
+1365 -95

No files matched your search

@@ -896,14 +896,10 @@ public final class IrisWorldGeneratorResolver {
}
private static String dimensionTypeKey(IrisData data, IrisDimension dimension) {
return IrisPlatforms.get()
.registries()
.generationRegistry()
.dimensionTypeResourceKey(
data.getDataFolder().getName(),
dimension.getLoadKey(),
dimension.getDimensionTypeKey()
);
return dimension.dimensionTypeResourceKey(
IrisPlatforms.get().registries().generationRegistry(),
data.getDataFolder().getName()
);
}
private record LoadedHistory(GenerationHistory history, File activePack) {