Stabilized shutdown and Studio

- Shutdown protection initializes before enable and drains inline when retention fails
- Cleanup preserves class loader retention and closes native providers in order
- Error reports retain context and handle empty stack traces
- Studio maps retain partial coverage and suspend hidden views
- Hydrology previews refresh when plans and rasters complete
- Terrain scratch hashing spreads lattice samples across cache slots
- Plugin and probe artifacts include LWJGL libraries and native resources
- Regression tests cover shutdown, error reporting, map progress, and terrain scratch
This commit is contained in:
Brian Neumann-Fopiano committed 2026-10-26 23:29:21 -04:00
1 parent f64a7c6753
commit 3dc958edcf
31 files changed
+1973 -217

No files matched your search

+10 -7
View File
@@ -108,6 +108,10 @@ dependencies {
compileOnly(libs.log4j.api)
compileOnly(libs.log4j.core)
compileOnly(libs.guava)
compileOnly(libs.lwjgl)
compileOnly(libs.lwjgl.opengl)
compileOnly(libs.lwjgl.egl)
compileOnly(libs.lwjgl.jawt)
// Third Party Integrations
compileOnly(libs.nexo)
@@ -136,13 +140,6 @@ dependencies {
implementation('com.moandjiezana.toml:toml4j:0.7.2') {
transitive = false
}
// Shaded: the runtime downloader can neither fetch the natives classifiers nor relocate lwjgl's own jar.
implementation(libs.lwjgl)
implementation(libs.lwjgl.opengl)
implementation(libs.lwjgl.egl)
implementation(libs.lwjgl.jawt)
runtimeOnly(variantOf(libs.lwjgl) { classifier('natives-linux') })
runtimeOnly(variantOf(libs.lwjgl.opengl) { classifier('natives-linux') })
// Dynamically Loaded
slim(libs.gson)
slim(libs.lru)
@@ -183,6 +180,12 @@ dependencies {
testImplementation(libs.multiverseCore)
testImplementation(libs.annotations)
testImplementation(libs.mythic)
testRuntimeOnly(libs.lwjgl)
testRuntimeOnly(libs.lwjgl.opengl)
testRuntimeOnly(libs.lwjgl.egl)
testRuntimeOnly(libs.lwjgl.jawt)
testRuntimeOnly(variantOf(libs.lwjgl) { classifier('natives-linux') })
testRuntimeOnly(variantOf(libs.lwjgl.opengl) { classifier('natives-linux') })
}
tasks.named('test').configure {