Isekai APIСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (4)
release
2.2.0+neoforge-1.21.1
2.2.0+neoforge-1.21.14 сент. 2026 г.669Minecraft: 1.21.1neoforge
Что нового
**No Java API breaks.** The one addition is a `default` method, so `SurfaceAnchor` variants
written against 1.x / 2.0.0 / 2.1.0 compile and run unchanged. The datapack schema is untouched;
what changes is where ore lands in a column that holds more than one body.
### Fixed — datapack behaviour
- **`isekai_api:column_relative` reaches every body in a column, not just the topmost one.**
A column of floating terrain can hold several islands stacked above one another, and both
default anchors resolved against the highest of them by construction — `world_surface` reads
the heightmap, and `world_floor` scans down from whatever that found. An island with anything
floating above it therefore received no ore at all. It now emits one position per body, at the
same normalized depth, so an island's ore no longer depends on what happens to float above it.
Measured on Sky World: andesite, granite, diorite, coal, iron and copper were all exactly 0
through the lower island band, in a region where 29 of 29 lower-island chunks also carried an
upper island.
- A body too thin for the band is skipped on its own instead of ending the column, so a thin
island no longer hides the ones below it.
- **A column holding one body places exactly what it placed before**, at the same Y, having drawn
the same amount from the random source — the depth is drawn once per placement however many
bodies the column turns out to hold, and a column that yields nothing still draws nothing.
Worlds whose terrain never stacks generate identically.
### Added — Java API
- **`SurfaceAnchor.resolveYBelow(PlacementContext, BlockPos, int)`** — resolve an anchor against
the part of a column at or below a ceiling, which is how the walk reaches the second body and
the ones under it. It is a `default` method with single-shot semantics (the anchor's own Y when
that lies at or below the ceiling, otherwise nothing), so a variant that does not override it
keeps reporting one body per column exactly as before. `world_surface` and `world_floor`
override it; see [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md).
release
2.1.0+neoforge-1.21.1
2.1.0+neoforge-1.21.18 авг. 2026 г.451Minecraft: 1.21.1neoforge
Что нового
## v2.1.0
See GitHub release notes.
release
2.0.0+neoforge-1.21.1
2.0.0+neoforge-1.21.15 авг. 2026 г.60Minecraft: 1.21.1neoforge
Что нового
The rule-adaptation layer becomes an open extension point, terrain shape gets a
copy-free hook mechanism, and the library ships as a proper Gradle dependency.
**Datapacks are unaffected.** Every 1.x datapack loads unchanged: the `isekai:`
dispatch prefix is accepted as a deprecated alias (logs one warning per id), and all
existing payload schemas are byte-for-byte compatible. The breaking changes are on the
**Java API** only (see below) — this is a major bump because the SPI interfaces changed
shape, not because datapacks broke.
### Breaking (Java API)
The five in-house dispatch interfaces — `SpatialPredicate`, `RemapStrategy`, `BiomeZone`,
`SurfaceAnchor`, `TransitionRule` — are now **registry-backed extension points** instead of
`sealed` codec unions:
- `sealed` is removed from all five. Exhaustive `switch` statements over their variants no
longer compile — handle them through their behavior methods or a `default` branch.
- `String typeId()` is **removed** from all five. To recover a variant's registered id, ask
the registry: `registry.getKey(variant.codec())`. The registry keys live in
`api/registry/IsekaiRegistries`.
- New abstract methods carry each interface's evaluation contract:
`SpatialPredicate.test(EvaluationContext)`, `RemapStrategy.remap(VerticalRange, RemapContext)`,
`SurfaceAnchor.resolveY(PlacementContext, BlockPos)`. Custom Java implementations must
supply them.
Datapack authors and consumers who only use the built-in variants from JSON are unaffected.
### Added
- **Open SPI.** Third parties register their own variant of any of the five interfaces from
their own mod id by adding a `MapCodec` to the matching registry in
`api/registry/IsekaiRegistries` — no fork, no PR. See
[docs/DATAPACK_REFERENCE.md](docs/DATAPACK_REFERENCE.md) → "Extending the SPI".
- `api/predicate/EvaluationContext` and `api/remap/RemapContext` — the world-access and
math seams that variant `test` / `remap` implementations receive.
- **`isekai_api:hooked_overworld` preset + `hook/final_density` density function.** A new
dimension references the preset and overrides one small hook file to change terrain shape —
no 2500-line `noise_settings` copy. A whole floating-island world is two files.
([README](README.md#quick-start--a-floating-island-world-in-2-files))
- **Terrain-relative ore remap** — `isekai_api:column_local` (RemapStrategy),
`isekai_api:world_floor` (SurfaceAnchor) and `isekai_api:column_relative` (placement
modifier). Every other remap strategy produces one absolute Y band per feature, which can
only ever be right for terrain at one altitude; `column_local` normalizes a feature's
vanilla Y to a depth and resolves it against each column's own surface and underside as the
feature is placed. Floating islands, orbiting planets and sky continents get the same
internal ore layout whatever height they sit at. `RemapStrategy` gained a
`remapToColumn(VerticalRange, RemapContext)` **default** method returning
`Optional.empty()`, so every existing strategy — built-in or third-party — keeps the
absolute behaviour unchanged.
- **`isekai_api:vanilla_overworld_surface`** — a delegate `SurfaceRules.RuleSource` that
reproduces the vanilla overworld surface rule, so overworld-replacement datapacks skip the
30 KB surface-rule copy.
- **Distribution as a Gradle dependency**: `sources` and `javadoc` jars, and a maven repo.
See [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md#depending-on-isekai-api).
### Changed
- **Dispatch prefix unified to `isekai_api:`.** All `"type"` values normalise to the
`isekai_api` namespace; docs and examples use it throughout.
- Inline `apply_worldshape` / `apply_worldshape_structures` modifier forms are superseded by
the `_ref` forms.
### Fixed
- **`isekai_api:worldshape_surface_top` self-gates to the surface layer.** Prepended bare into a
`surface_rule` sequence it replaces only the topmost surface block; the blocks beneath keep the
underlying surface rule's output. No `minecraft:stone_depth` wrapper is required, and wrapping it
in one is harmless.
### Deprecated
- The bare `isekai:` dispatch prefix — accepted with a one-time warning, **removed in the
next major**. Rewrite `"type": "isekai:*"` to `"type": "isekai_api:*"`.
- Inline modifier forms — use the `_ref` forms. Same one-major grace.
release
1.1.0+neoforge-1.21.1
1.1.0+neoforge-1.21.12 июн. 2026 г.1,2 тыс.Minecraft: 1.21.1neoforge
Что нового
## v1.1.0
See GitHub release notes.