mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-26 14:00:26 +00:00
Basin hydrology
- The route-and-reject hydrology system and its probes are removed - Hydrology is configured under dimension hydrology and per biome, region and dimension hydrologyPolicy - riverPolicy and the old hydrology config types are gone - Grid kernels cover priority flood, D8 routing, flow accumulation, basin extraction, breaching and stream burning - A basin spills at its pour point and an interior bump can never be the spill - Region plans cover 4096-block regions on a 64-block grid for major rivers and lakes - Window plans cover 512-block windows on an 8-block grid for reaches and ponds - Plans are cached in memory, persisted per world under iris/hydrology and keyed by pack, seed, world height and settings - Only the main runtime of an engine persists plans and stores swap on hotload and default runtime change - Demand rasters outrank prefetch and stopping pregen withdraws its queued prefetch - Ponds come from natural basins, seeded cups and chained cups with strictly falling levels - A pond level never exceeds its rim plus maxFill or the end grade of any inflow - Pond outlet loops are opened at their lowest pond - Reaches split at junctions, pond outlets and 256-block grid lines - Reaches meander, fit the valley, grade to a running minimum and smooth with Chaikin passes - Drops of two blocks or more get a lip and one-block corner steps become dry rim ledges - Cascades and waterfalls write falling fluid from the mantle at level eight - Inflows into region lakes end at the lake level - River mouths and water beside the sea sit at the sea surface - The per-chunk raster gives terrain height, water head, role, tier, fluid, cave ceiling and shore distance - WaterRole codes are stable and exposed to packs through the WATER_ROLE engine stream - WATER_HEAD replaces the old river engine streams and an unknown stream name fails the pack load - Banks take SMOOTH, LINEAR, CONCAVE, TERRACED or CLIFF profiles - Containment berms grow as tall as the water needs - Columns within two blocks of water stay solid and keep no Terrain3D overhang - Seam dams hold water where new chunks meet chunks generated earlier - The transition blend skips hydrology-owned columns - Caves stay at least two blocks below river and pond beds - The painter is the only writer of still water - Objects cannot open water, falls or bank ground and solid objects may stand in water - On-water objects need fluid at their anchor column - Floating child islands stay out of channels - Sea inlets run inland from cliff coasts at sea level and end in a chamber pool - Inlet passages are sealed against carvers, subterrain features and the post pass - Cave pools settle into carved lows, keep one fluid and stay out of inlet space - Pool and inlet cells use their own cave actions in mantle data - Water vegetation lists sit on tiers, ponds and hydrologyPolicy with SEA_FLOOR, SEA_SURFACE and SHORE_LINE parts - Pack validation compiles hydrology settings and rejects empty or water-holding palettes - Chunk generation fails closed when its 3x3 water rasters are not planned - /iris find covers stream, river, major river, cascade, waterfall, mouth, pond, lake, dam, sea inlet and cave pool - Generation history records the new feature types and drops old hydrology entries - The studio map draws water from rasters up close and from plans when zoomed out - Pregen prepares the current region and one region ahead - hydrologyProbe, riverTransectProbe, hydrologyBlockProbe, seaInletProbe and cavePoolProbe report containment, rises, seams, tick conversion and missing surface - Test forks run with a 2 GB heap, a 60-minute timeout and the Mockito agent loaded explicitly - Generation with hydrology off is unchanged
This commit is contained in:
1 parent
2d211cf106
commit
db0f98d103
710 files changed
+41791
-91883
No files matched your search
@@ -29,6 +29,7 @@ gson = "2.14.0" # https://central.sonatype.com/artifact/com.google.code.gson/gso
|
||||
guava = "33.6.0-jre" # https://central.sonatype.com/artifact/com.google.guava/guava
|
||||
asm = "9.10.1" # https://central.sonatype.com/artifact/org.ow2.asm/asm
|
||||
caffeine = "3.2.4" # https://central.sonatype.com/artifact/com.github.ben-manes.caffeine/caffeine
|
||||
mockito = "5.23.0" # https://central.sonatype.com/artifact/org.mockito/mockito-core
|
||||
byte-buddy = "1.18.11" # https://central.sonatype.com/artifact/net.bytebuddy/byte-buddy
|
||||
dom4j = "2.2.0" # https://central.sonatype.com/artifact/org.dom4j/dom4j
|
||||
jaxen = "2.0.6" # https://central.sonatype.com/artifact/jaxen/jaxen
|
||||
@@ -89,6 +90,7 @@ gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
|
||||
guava = { module = "com.google.guava:guava", version.ref = "guava" }
|
||||
asm = { module = "org.ow2.asm:asm", version.ref = "asm" }
|
||||
caffeine = { module = "com.github.ben-manes.caffeine:caffeine", version.ref = "caffeine" }
|
||||
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
|
||||
byteBuddy-core = { module = "net.bytebuddy:byte-buddy", version.ref = "byte-buddy" }
|
||||
byteBuddy-agent = { module = "net.bytebuddy:byte-buddy-agent", version.ref = "byte-buddy" }
|
||||
dom4j = { module = "org.dom4j:dom4j", version.ref = "dom4j" }
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Configuration mockitoAgent = configurations.create('mockitoAgent')
|
||||
mockitoAgent.transitive = false
|
||||
dependencies.add('mockitoAgent', rootProject.extensions.getByType(VersionCatalogsExtension).named('libs').findLibrary('mockito-core').get())
|
||||
|
||||
tasks.withType(Test).configureEach {
|
||||
jvmArgs('-Xshare:off')
|
||||
jvmArgumentProviders.add({ ["-javaagent:${mockitoAgent.singleFile.absolutePath}".toString()] } as org.gradle.process.CommandLineArgumentProvider)
|
||||
}
|
||||
Reference in new issue
Block a user