271 lines
10 KiB
Groovy
271 lines
10 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.expansion', providers.gradleProperty('sanctuaryExpansionTests').getOrElse('false'))
|
|
systemProperty('sanctuary.test.expansionReload', providers.gradleProperty('sanctuaryExpansionReload').getOrElse('false'))
|
|
}
|
|
|
|
tasks.named('processGametestResources') {
|
|
def benchmark = providers.gradleProperty('sanctuaryBenchmark').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('benchmark', benchmark)
|
|
def expansion = providers.gradleProperty('sanctuaryExpansionTests').map { it.toBoolean() }.getOrElse(false)
|
|
inputs.property('expansion', expansion)
|
|
filesMatching('fabric.mod.json') {
|
|
expand(gametest_entrypoint: expansion ? 'fr.koka.sanctuary.gametest.ExpansionWorldGameTests' : benchmark
|
|
? 'fr.koka.sanctuary.gametest.WorldgenPerformanceGameTests'
|
|
: '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('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') }
|