591 lines
30 KiB
Groovy
591 lines
30 KiB
Groovy
plugins {
|
|
id 'net.fabricmc.fabric-loom'
|
|
}
|
|
|
|
group = rootProject.maven_group
|
|
version = rootProject.mod_version
|
|
base { archivesName = 'sanctuary' }
|
|
|
|
def clientRenderTests = providers.gradleProperty('sanctuaryClientTests')
|
|
.map { it.toBoolean() }.getOrElse(false)
|
|
|
|
fabricApi {
|
|
configureTests {
|
|
createSourceSet = true
|
|
modId = 'sanctuary-gametest'
|
|
enableGameTests = true
|
|
// Explicit opt-in: the rendering check needs a graphics-capable client.
|
|
enableClientGameTests = clientRenderTests
|
|
eula = false
|
|
}
|
|
}
|
|
|
|
if (clientRenderTests) {
|
|
sourceSets.named('gametest') {
|
|
java.srcDir('src/clientGametest/java')
|
|
}
|
|
}
|
|
|
|
// Fresh generation by default; the explicit laboratory reload verifies the same saved test world.
|
|
tasks.register('cleanGameTestWorld', Delete) {
|
|
onlyIf { !providers.gradleProperty('sanctuaryExpansionReload').map { it.toBoolean() }.getOrElse(false) }
|
|
delete(layout.buildDirectory.dir('run/gameTest/world'))
|
|
}
|
|
tasks.named('runGameTest') {
|
|
dependsOn('cleanGameTestWorld')
|
|
systemProperty('sanctuary.test.seed', providers.gradleProperty('sanctuaryTestSeed').getOrElse('0'))
|
|
systemProperty('sanctuary.test.players', providers.gradleProperty('sanctuaryTestPlayers').getOrElse('10'))
|
|
systemProperty('sanctuary.test.resourceSurvey', providers.gradleProperty('sanctuaryResourceSurvey').getOrElse('sample'))
|
|
systemProperty('sanctuary.test.densityMaps', providers.gradleProperty('sanctuaryDensityMaps').getOrElse('true'))
|
|
systemProperty('sanctuary.test.unified', providers.gradleProperty('sanctuaryUnifiedTests').getOrElse('true'))
|
|
systemProperty('sanctuary.test.diameter', providers.gradleProperty('sanctuaryTestDiameter').getOrElse('724'))
|
|
systemProperty('sanctuary.test.generation', providers.gradleProperty('sanctuaryTestGeneration').getOrElse(
|
|
providers.gradleProperty('sanctuaryLostCityTests').map { it.toBoolean() }.getOrElse(false) ? '14' : providers.gradleProperty('sanctuaryLostCity15Tests').map { it.toBoolean() }.getOrElse(false) ? '15' : providers.gradleProperty('sanctuaryLostCity16Tests').map { it.toBoolean() }.getOrElse(false) ? '16' : providers.gradleProperty('sanctuaryRuins17Tests').map { it.toBoolean() }.getOrElse(false) ? '17' : providers.gradleProperty('sanctuaryHeritage19Tests').map { it.toBoolean() }.getOrElse(false) ? '19' : (providers.gradleProperty('sanctuaryHeritage20Tests').map { it.toBoolean() }.getOrElse(false) || providers.gradleProperty('sanctuaryLostCity20Tests').map { it.toBoolean() }.getOrElse(false)) ? '20' : (providers.gradleProperty('sanctuaryHeritage21Tests').map { it.toBoolean() }.getOrElse(false) || providers.gradleProperty('sanctuaryLostCity21Tests').map { it.toBoolean() }.getOrElse(false) || providers.gradleProperty('sanctuaryTransit21Tests').map { it.toBoolean() }.getOrElse(false)) ? '21' : providers.gradleProperty('sanctuarySelective22Tests').map { it.toBoolean() }.getOrElse(false) ? '22' : '23'))
|
|
systemProperty('sanctuary.test.secrets23', providers.gradleProperty('sanctuarySecrets23Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.admission23', providers.gradleProperty('sanctuaryAdmission23Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.admission23.reserveOnly', providers.gradleProperty('sanctuaryAdmission23ReserveOnly').getOrElse('false'))
|
|
systemProperty('sanctuary.test.admission23.diameter', providers.gradleProperty('sanctuaryAdmission23Diameter').getOrElse('256'))
|
|
systemProperty('sanctuary.test.admission23.climate', providers.gradleProperty('sanctuaryAdmission23Climate').getOrElse('temperate'))
|
|
systemProperty('sanctuary.test.admission23.relief', providers.gradleProperty('sanctuaryAdmission23Relief').getOrElse('natural'))
|
|
systemProperty('sanctuary.test.ocean23', providers.gradleProperty('sanctuaryOcean23Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.native23', providers.gradleProperty('sanctuaryNative23Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.generateStructures', providers.gradleProperty('sanctuaryGenerateStructures').getOrElse('true'))
|
|
systemProperty('sanctuary.test.selective22', providers.gradleProperty('sanctuarySelective22Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.transit.plannerDiagnostics', providers.gradleProperty('sanctuaryTransitDiagnostics').getOrElse('false'))
|
|
systemProperty('sanctuary.test.heritage21', providers.gradleProperty('sanctuaryHeritage21Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.lostCity21', providers.gradleProperty('sanctuaryLostCity21Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.transit21', providers.gradleProperty('sanctuaryTransit21Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.expansion', providers.gradleProperty('sanctuaryExpansionTests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.expansionReload', providers.gradleProperty('sanctuaryExpansionReload').getOrElse('false'))
|
|
systemProperty('sanctuary.test.lostCity', providers.gradleProperty('sanctuaryLostCityTests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.lostCity15', providers.gradleProperty('sanctuaryLostCity15Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.lostCity20', providers.gradleProperty('sanctuaryLostCity20Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.lostCity16', providers.gradleProperty('sanctuaryLostCity16Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.ruins17', providers.gradleProperty('sanctuaryRuins17Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.heritage20', providers.gradleProperty('sanctuaryHeritage20Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.heritage19', providers.gradleProperty('sanctuaryHeritage19Tests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.experimentalStructures', providers.gradleProperty('sanctuaryExperimentalStructures').getOrElse('true'))
|
|
systemProperty('sanctuary.test.cityMatrix', providers.gradleProperty('sanctuaryCityMatrix').getOrElse('false'))
|
|
systemProperty('sanctuary.test.cityMatrixOnly', providers.gradleProperty('sanctuaryCityMatrixOnly').getOrElse('false'))
|
|
systemProperty('sanctuary.test.voidReuse', providers.gradleProperty('sanctuaryVoidReuseTests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.optionalStructureWitness', providers.gradleProperty('sanctuaryOptionalStructureWitness').getOrElse('false'))
|
|
}
|
|
|
|
tasks.named('processGametestResources') {
|
|
def benchmark = providers.gradleProperty('sanctuaryBenchmark').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('benchmark', benchmark)
|
|
def unified = providers.gradleProperty('sanctuaryUnifiedTests').map { it.toBoolean() }.getOrElse(true)
|
|
inputs.property('unified', unified)
|
|
def expansion = providers.gradleProperty('sanctuaryExpansionTests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('expansion', expansion)
|
|
def lostCity = providers.gradleProperty('sanctuaryLostCityTests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('lostCity', lostCity)
|
|
def lostCity15 = providers.gradleProperty('sanctuaryLostCity15Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('lostCity15', lostCity15)
|
|
def lostCity16 = providers.gradleProperty('sanctuaryLostCity16Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('lostCity16', lostCity16)
|
|
def ruins17 = providers.gradleProperty('sanctuaryRuins17Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('ruins17', ruins17)
|
|
def lostCity20 = providers.gradleProperty('sanctuaryLostCity20Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('lostCity20', lostCity20)
|
|
def heritage20 = providers.gradleProperty('sanctuaryHeritage20Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('heritage20', heritage20)
|
|
def heritage21 = providers.gradleProperty('sanctuaryHeritage21Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('heritage21', heritage21)
|
|
def lostCity21 = providers.gradleProperty('sanctuaryLostCity21Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('lostCity21', lostCity21)
|
|
def secrets23 = providers.gradleProperty('sanctuarySecrets23Tests').map { it.toBoolean() }.getOrElse(false)
|
|
def admission23 = providers.gradleProperty('sanctuaryAdmission23Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('admission23', admission23)
|
|
def ocean23 = providers.gradleProperty('sanctuaryOcean23Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('ocean23', ocean23)
|
|
def native23 = providers.gradleProperty('sanctuaryNative23Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('secrets23', secrets23)
|
|
inputs.property('native23', native23)
|
|
def selective22 = providers.gradleProperty('sanctuarySelective22Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('selective22', selective22)
|
|
def transit21 = providers.gradleProperty('sanctuaryTransit21Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('transit21', transit21)
|
|
def heritage19 = providers.gradleProperty('sanctuaryHeritage19Tests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('heritage19', heritage19)
|
|
def voidReuse = providers.gradleProperty('sanctuaryVoidReuseTests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('voidReuse', voidReuse)
|
|
filesMatching('fabric.mod.json') {
|
|
expand(gametest_entrypoint: admission23 ? 'fr.koka.sanctuary.gametest.Expansion23AdmissionGameTests' : ocean23 ? 'fr.koka.sanctuary.gametest.Ocean23WorldGameTests' : secrets23 ? 'fr.koka.sanctuary.gametest.Secrets23WorldGameTests' : native23 ? 'fr.koka.sanctuary.gametest.Native23WorldGameTests' : selective22 ? 'fr.koka.sanctuary.gametest.Selective22WorldGameTests' : transit21 ? 'fr.koka.sanctuary.gametest.Transit21WorldGameTests' : lostCity21 ? 'fr.koka.sanctuary.gametest.LostCity21WorldGameTests' : heritage21 ? 'fr.koka.sanctuary.gametest.Heritage21WorldGameTests' : lostCity20 ? 'fr.koka.sanctuary.gametest.LostCity20WorldGameTests' : heritage20 ? 'fr.koka.sanctuary.gametest.Heritage20WorldGameTests' : heritage19 ? 'fr.koka.sanctuary.gametest.Heritage19WorldGameTests' : ruins17 ? 'fr.koka.sanctuary.gametest.Ruins17WorldGameTests' : voidReuse ? 'fr.koka.sanctuary.gametest.ExpansionVoidReuseGameTests' : lostCity16 ? 'fr.koka.sanctuary.gametest.LostCity16WorldGameTests' : lostCity15 ? 'fr.koka.sanctuary.gametest.LostCity15WorldGameTests' : lostCity ? 'fr.koka.sanctuary.gametest.LostCityWorldGameTests' : expansion ? 'fr.koka.sanctuary.gametest.ExpansionWorldGameTests' : benchmark
|
|
? 'fr.koka.sanctuary.gametest.WorldgenPerformanceGameTests'
|
|
: unified ? 'fr.koka.sanctuary.gametest.UnifiedWorldGameTests'
|
|
: 'fr.koka.sanctuary.gametest.SanctuaryWorldGameTests')
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
|
|
implementation "net.fabricmc:fabric-loader:${rootProject.loader_version}"
|
|
implementation "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"
|
|
}
|
|
|
|
java {
|
|
toolchain.languageVersion = JavaLanguageVersion.of(25)
|
|
withSourcesJar()
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
options.release = 25
|
|
}
|
|
|
|
processResources {
|
|
// The launcher uses 26.3-pre-2; Fabric's runtime normalizes it to 26.3-pre.2.
|
|
def values = [version: project.version, minecraft_version: rootProject.minecraft_version,
|
|
minecraft_dependency_version: rootProject.minecraft_version.replace('-pre-', '-pre.'),
|
|
loader_version: rootProject.loader_version, fabric_api_version: rootProject.fabric_api_version]
|
|
inputs.properties(values)
|
|
filesMatching('fabric.mod.json') { expand(values) }
|
|
}
|
|
|
|
tasks.named('jar') {
|
|
from(rootProject.file('LICENSE')) { rename { 'LICENSE_sanctuary' } }
|
|
from(rootProject.file('THIRD_PARTY_NOTICES.md'))
|
|
}
|
|
|
|
tasks.register('worldgenSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check natural central holes, continuous erosion, density bounds and exterior void.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.WorldgenSmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('worldgenSmoke') }
|
|
|
|
tasks.register('hydrologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check deterministic surface drainage, natural support and bounded excavation.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.SurfaceHydrologySmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('hydrologySmoke') }
|
|
|
|
// src/test contains a JavaExec assertion harness; engine tests use Fabric's gametest source set.
|
|
tasks.named('test') { failOnNoDiscoveredTests = false }
|
|
|
|
tasks.register('blockKnowledgeSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check personal block history, atomic persistence and corrupt-file refusal.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.knowledge.BlockKnowledgeSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('blockKnowledgeSmoke') }
|
|
|
|
tasks.register('materialActivitySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check dated material observations, daily isolation and atomic persistence.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.knowledge.history.MaterialActivitySmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('materialActivitySmoke') }
|
|
|
|
tasks.register('naturalHydrologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check broad shores, supported sediments and natural rock springs.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.NaturalHydrologySmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('naturalHydrologySmoke') }
|
|
|
|
tasks.register('starterLavaSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check a small contained lava niche in naturally supported rock.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.StarterLavaDepositSmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('starterLavaSmoke') }
|
|
|
|
// Alpha.6 has separate contracts so saved alpha.5 worlds keep their generation.
|
|
tasks.register('layeredHydrologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check retained basins, broad rock shores and lower wall springs.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.LayeredHydrologySmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('layeredHydrologySmoke') }
|
|
|
|
tasks.register('layeredEcologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check altitude biome variation and naturally supported lower terraces.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.LayeredEcologySmoke'
|
|
}
|
|
|
|
tasks.named('check') { dependsOn('layeredEcologySmoke') }
|
|
|
|
// Alpha.7 keeps previous biome palettes and generators unchanged.
|
|
tasks.register('woodlandPaletteSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check surface forest coverage and bounded rare interior biomes.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.WoodlandPaletteSmoke'
|
|
}
|
|
tasks.register('woodlandGroveSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check natural tree supports and canopy space without creating terrain.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.WoodlandGroveSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('woodlandPaletteSmoke', 'woodlandGroveSmoke') }
|
|
|
|
tasks.register('riftShapeSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.RiftShapeSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('riftShapeSmoke') }
|
|
|
|
tasks.register('riftPaletteSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.RiftPaletteSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('riftPaletteSmoke') }
|
|
|
|
tasks.register('riftHydrologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.RiftHydrologySmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('riftHydrologySmoke') }
|
|
|
|
tasks.register('riftLavaSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.RiftLavaSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('riftLavaSmoke') }
|
|
|
|
tasks.register('cavernPaletteSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.CavernPaletteSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('cavernPaletteSmoke') }
|
|
|
|
tasks.register('cavernHydrologySmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.CavernHydrologySmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('cavernHydrologySmoke') }
|
|
|
|
tasks.register('cavernLavaSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.CavernLavaSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('cavernLavaSmoke') }
|
|
|
|
tasks.register('populationCapacitySmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check supported capacities, area scaling, finite boundaries and regional ownership.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.PopulationCapacitySmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('populationCapacitySmoke') }
|
|
|
|
tasks.register('populationRegionPlanSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check atomic regional admission, hydraulic dependencies and translated chunk indices.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.PopulationRegionPlanSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('populationRegionPlanSmoke') }
|
|
|
|
tasks.register('populationPlanCacheSmoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check that completed regions remain readable while new regions are planned.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.PopulationPlanCacheSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('populationPlanCacheSmoke') }
|
|
|
|
tasks.register('expansionJournalSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionJournalSmoke'
|
|
}
|
|
tasks.register('expansionReliefSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionReliefSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('expansionJournalSmoke', 'expansionReliefSmoke') }
|
|
|
|
tasks.register('expansionPlacementSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionPlacementSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('expansionPlacementSmoke') }
|
|
|
|
// Alpha.14 planner uses bounded natural support and never queries loaded chunks.
|
|
tasks.register('lostCityPlannerSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityPlannerSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityPlannerSmoke') }
|
|
|
|
tasks.register('lostCityRendererSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityRendererSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityRendererSmoke') }
|
|
|
|
tasks.register('expansionSpatial14Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionSpatialPlacement14Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('expansionSpatial14Smoke') }
|
|
|
|
tasks.register('expansionVoidCertificateSmoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionVoidCertificateSmoke'
|
|
}
|
|
tasks.named('check') { dependsOn('expansionVoidCertificateSmoke') }
|
|
|
|
tasks.register('lostCityInteriors15Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityInteriors15Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityInteriors15Smoke') }
|
|
|
|
tasks.register('lostCityUnderground15Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityUnderground15Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityUnderground15Smoke') }
|
|
|
|
tasks.register('lostCityProtection15Smoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check bounded three-dimensional city protection and immutable snapshots.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityProtection15Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityProtection15Smoke') }
|
|
|
|
tasks.register('lostCityPlanner15Smoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check terrain-certified city fragments, inset floors and anchored viaducts.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityPlanner15Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityPlanner15Smoke') }
|
|
|
|
tasks.register('lostCityInteriors16Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityInteriors16Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityInteriors16Smoke') }
|
|
|
|
tasks.register('lostCityUnderground16Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityUnderground16Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityUnderground16Smoke') }
|
|
|
|
tasks.register('lostCityProtection16Smoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check bounded three-dimensional city protection and immutable snapshots.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityProtection16Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityProtection16Smoke') }
|
|
|
|
tasks.register('lostCityPlanner16Smoke', JavaExec) {
|
|
group = 'verification'
|
|
description = 'Check terrain-certified city fragments, inset floors and anchored viaducts.'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityPlanner16Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityPlanner16Smoke') }
|
|
|
|
|
|
tasks.register('lostCityFoundation16Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.worldgen.city.LostCityFoundation16Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('lostCityFoundation16Smoke') }
|
|
|
|
// The experimental pieces and algorithms are additive; historical city suites remain unchanged.
|
|
['Planner', 'Renderer', 'Piece'].each { component ->
|
|
def smoke = tasks.register("ruins17${component}Smoke", JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "fr.koka.sanctuary.worldgen.ruins.Ruins${component}17Smoke"
|
|
}
|
|
tasks.named('check') { dependsOn(smoke) }
|
|
}
|
|
|
|
// Local native starts keep the long heritage routes bounded by Minecraft's reference range.
|
|
['Planner', 'Renderer', 'Piece'].each { component ->
|
|
def smoke = tasks.register("heritage19${component}Smoke", JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "fr.koka.sanctuary.worldgen.heritage.Heritage${component}19Smoke"
|
|
}
|
|
tasks.named('check') { dependsOn(smoke) }
|
|
}
|
|
|
|
// Generation20 architecture retains the previous renderers and verifies connected block states.
|
|
[
|
|
connectedBlocks20Smoke: 'detail.ConnectedBlocks20Smoke',
|
|
heritage20RendererSmoke: 'heritage.HeritageRenderer20Smoke',
|
|
heritage20PieceSmoke: 'heritage.HeritagePiece20Smoke',
|
|
ruins20RendererSmoke: 'ruins.RuinsRenderer20Smoke',
|
|
lostCityUnderground20Smoke: 'city.LostCityUnderground20Smoke',
|
|
lostCitySurface20Smoke: 'city.LostCitySurface20Smoke',
|
|
lostCityInteriors20Smoke: 'city.LostCityInteriors20Smoke'
|
|
].each { name, harness ->
|
|
def smoke = tasks.register(name, JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "fr.koka.sanctuary.worldgen.${harness}"
|
|
}
|
|
tasks.named('check') { dependsOn(smoke) }
|
|
}
|
|
|
|
// Optional actual block-state exports for architectural review; never enabled in ordinary checks.
|
|
tasks.named('heritage20RendererSmoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.test.heritage20.export', rootProject.layout.buildDirectory.dir('alpha20-preview/heritage').get().asFile.absolutePath)
|
|
}
|
|
tasks.named('lostCityInteriors20Smoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.city20.preview', rootProject.layout.buildDirectory.file('alpha20-preview/city.json').get().asFile.absolutePath)
|
|
}
|
|
tasks.named('lostCitySurface20Smoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.city20.exteriorPreview', rootProject.layout.buildDirectory.file('alpha20-preview/exterior.json').get().asFile.absolutePath)
|
|
}
|
|
|
|
// Generation21 keeps published20 renderers immutable.
|
|
[
|
|
heritage21RendererSmoke: 'heritage.HeritageRenderer21Smoke',
|
|
heritage21PieceSmoke: 'heritage.HeritagePiece21Smoke',
|
|
heritage21PlannerSmoke: 'heritage.HeritagePlanner21Smoke',
|
|
lostCity21PlannerSmoke: 'city.LostCityPlanner21Smoke',
|
|
lostCitySurface21Smoke: 'city.LostCitySurface21Smoke',
|
|
lostCityInteriors21Smoke: 'city.LostCityInteriors21Smoke',
|
|
transit21Smoke: 'transit.Transit21Smoke'
|
|
].each { name, harness ->
|
|
def smoke = tasks.register(name, JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "fr.koka.sanctuary.worldgen.${harness}"
|
|
}
|
|
tasks.named('check') { dependsOn(smoke) }
|
|
}
|
|
tasks.named('heritage21RendererSmoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.test.heritage21.export', rootProject.layout.buildDirectory.dir('alpha21-preview/heritage').get().asFile.absolutePath)
|
|
}
|
|
tasks.named('lostCityInteriors21Smoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.city21.preview', rootProject.layout.buildDirectory.file('alpha21-preview/city.json').get().asFile.absolutePath)
|
|
}
|
|
tasks.named('lostCitySurface21Smoke') {
|
|
if (providers.gradleProperty('sanctuaryArchitecturePreview').isPresent())
|
|
systemProperty('sanctuary.city21.exteriorPreview', rootProject.layout.buildDirectory.file('alpha21-preview/exterior.json').get().asFile.absolutePath)
|
|
}
|
|
|
|
// Generation22 filters surface placement and adds an independent core hall; historical tests still run.
|
|
[
|
|
lostCity22PlannerSmoke: 'city.LostCityPlanner22Smoke',
|
|
underground22Smoke: 'city.LostCityUnderground22Smoke',
|
|
heritage22PlannerSmoke: 'heritage.HeritagePlanner22Smoke',
|
|
transit22PlannerSmoke: 'transit.TransitPlanner22Smoke',
|
|
transit22RouteSmoke: 'transit.TransitRoute22Smoke',
|
|
transit22RendererSmoke: 'transit.TransitRenderer22Smoke'
|
|
].each { name, harness ->
|
|
def smoke = tasks.register(name, JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "fr.koka.sanctuary.worldgen.${harness}"
|
|
}
|
|
tasks.named('check') { dependsOn(smoke) }
|
|
}
|
|
|
|
// New geography has a pure harness in addition to native world witnesses.
|
|
tasks.register('expansionOcean23Smoke', JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = 'fr.koka.sanctuary.expansion.ExpansionOcean23Smoke'
|
|
}
|
|
tasks.named('check') { dependsOn('expansionOcean23Smoke') }
|
|
|
|
[
|
|
secrets23Smoke: 'fr.koka.sanctuary.worldgen.mineral.Secrets23Smoke',
|
|
structureCensusSmoke: 'fr.koka.sanctuary.knowledge.structures.StructureCensusSmoke',
|
|
expansionPriorities23Smoke: 'fr.koka.sanctuary.expansion.ExpansionPriorities23Smoke'
|
|
].each { taskName, harness ->
|
|
tasks.register(taskName, JavaExec) {
|
|
group = 'verification'
|
|
dependsOn('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = harness
|
|
}
|
|
tasks.named('check') { dependsOn(taskName) }
|
|
}
|