mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-25 21:40:05 +00:00
- 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
60 lines
2.1 KiB
Groovy
60 lines
2.1 KiB
Groovy
String apiVersion = providers.gradleProperty('apiVersion').get()
|
|
def mainClass = 'art.arcane.iris.Iris'
|
|
def bootstrapperClass = 'art.arcane.iris.IrisBootstrap'
|
|
|
|
dependencies {
|
|
compileOnly(project(':core'))
|
|
compileOnly(libs.lombok)
|
|
annotationProcessor(libs.lombok)
|
|
compileOnly('com.github.VolmitSoftware.VolmLib:volmlib-shared:master-SNAPSHOT') {
|
|
transitive = false
|
|
}
|
|
compileOnly(libs.paper.api)
|
|
// LogFilterSVC (constructed in Iris.enable's explicit service list) implements the
|
|
// log4j-core Filter interface, so its constructor reference needs the type resolvable.
|
|
compileOnly(libs.log4j.core)
|
|
testImplementation('junit:junit:4.13.2')
|
|
testImplementation(libs.mockito.core)
|
|
testImplementation(libs.paper.api)
|
|
testImplementation(libs.bstats)
|
|
testImplementation(project(':core'))
|
|
testImplementation(testFixtures(project(':core')))
|
|
testImplementation('com.github.VolmitSoftware.VolmLib:volmlib-shared:master-SNAPSHOT') {
|
|
transitive = false
|
|
}
|
|
compileOnly(libs.placeholderApi)
|
|
testImplementation(libs.placeholderApi) {
|
|
transitive = false
|
|
}
|
|
}
|
|
|
|
tasks.named('processResources').configure {
|
|
def pluginProperties = [
|
|
name : rootProject.name,
|
|
version : rootProject.version,
|
|
apiVersion: apiVersion,
|
|
main : mainClass,
|
|
bootstrapper: bootstrapperClass,
|
|
]
|
|
inputs.properties(pluginProperties)
|
|
filesMatching(['**/paper-plugin.yml', '**/plugin.yml']) {
|
|
expand(pluginProperties)
|
|
}
|
|
}
|
|
|
|
tasks.named('compileJava', JavaCompile).configure {
|
|
// lombok.config decides how equals/hashCode/toString are generated (fields, never getters), so editing it
|
|
// changes this module's bytecode. Gradle does not know that on its own and would serve a stale up-to-date
|
|
// build until something else in the module changed.
|
|
inputs.file(rootProject.file('lombok.config'))
|
|
.withPropertyName('lombokConfig')
|
|
.withPathSensitivity(PathSensitivity.NONE)
|
|
}
|
|
|
|
tasks.named('jar', Jar).configure {
|
|
archiveBaseName.set('iris-bukkit-plugin')
|
|
}
|
|
|
|
tasks.named('test').configure {
|
|
}
|