Files
RustNotMC/docs/biome-temperatures.md
SashegDev 874b6f20c2 Клиент: начальный импорт кодовой базы
Основа — Horizon (MIT). История апстрима не переносится: этот репозиторий ведёт свою.
2026-10-29 22:04:28 +03:00

2.1 KiB

Biome temperatures

Horizon implements Java Edition 26.3 biome temperature sampling, including the frozen modifier, height adjustment, rain/snow thresholds, precipitation selection and the small frozen-ocean iceberg melt predicate. The fixed seeded simplex and noise-stack sources use the existing Rust noise implementation.

BiomeTemperatureSettings supplies the immutable inputs. BiomeTemperature is a per-biome, per-worker cache, corresponding to vanilla's thread-local cache. Its 1,024-entry insertion order does not change on hits. Keys use packed block positions and omit sea level, preserving both coordinate aliases and cached results across sea-level changes. NaN values are recomputed, including vanilla's eviction behavior when a cached NaN is queried at capacity.

Run python3 tools/test_biome_temperature_parity.py. The local report records 836,659 matching output lines per reference JAR over 387 fixtures, including 12 thread-isolation fixtures. The original Java transport invokes actual biome methods and inspects native ordered cache contents. Test inputs include arbitrary base-temperature bits, threshold neighbors, both modifiers, precipitation enabled/disabled, extreme coordinates, sea-level overflow, packed aliases, cache hits/eviction and actual native threads with separate Rust workers.

The oracle constructs native climate settings and biomes with only the fields these methods use. Climate-setting parsing now covers all 67 bundled biome definitions and 183 codec inputs, including float rounding, overflow, field validation and modifier defaults. Full biome codecs, climate encoding, world-dependent snow/ice placement, automatic thread-local ownership for a shared Rust biome object remain pending. Source/fixture hashes guard the comparison; raw reference artifacts stay private under .local.

Material temperature and biome conditions now use these climate settings and cached temperature calculations in a separate integration suite.