mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-11-01 08:50:06 +00:00
Datapack export
- /iris datapack export compiles one pack dimension into a worldgen datapack for Minecraft 26.3 and later - Bukkit and mod loaders take the same version, mode, namespace, output, format, objects and replace arguments - The default overworld mode replaces the Overworld of a new world with the default world type - Preset and dimension modes write a selectable world preset or a separate dimension - The export runs in the background and publishes the zip or folder atomically - Pack compiler stages turn noise, terrain, caves, subterrain, biomes, surface, decoration, objects and structures into a version-neutral IR - Capability lowering fits every field to 26.3 density function ranges - Disjoint min and max nodes fold to the input that always wins - The 26.3 writer emits density functions, noise settings, biomes, features, structures, presets and dimensions - Every export carries the Iris logo as its pack.png - Unused objects, templates and features are pruned from the output - The pruner keeps pack.png without reading references from its bytes - Imported pack datapacks are bundled into the export - Every approximation reports an export limit diagnostic - Generation cost is counted against a node budget and reported as a warning - Cave biomes over the wall palette limit use the closest kept palette - Jigsaw exports share the template encoder, block states, destinations and publisher with the worldgen export - DataVersion carries the pack format minor and world data version - Both platforms expose vanilla data from the server classpath - GoldenHashEngine and the export probes share one chunk spiral scan - Headless 26.3 probes measure export cost and compare column and chunk likeness against Iris - Real-codec tests decode the exported resources with the 26.3 registries - Paper registry tests run in isolated registry scopes - Command help and messages cover the export in every language file
This commit is contained in:
1 parent
b00e28e42e
commit
1ed1044474
385 files changed
+48102
-535
No files matched your search
@@ -821,6 +821,13 @@ project(':adapters:bukkit:nms:v26_3_R1') {
|
||||
}
|
||||
sourceSets.test.compileClasspath += sourceSets.offline.output
|
||||
sourceSets.test.runtimeClasspath += sourceSets.offline.output
|
||||
tasks.named('test').configure {
|
||||
String exportProbePack = providers.gradleProperty('iris.exportProbePack').orNull
|
||||
if (exportProbePack != null) {
|
||||
systemProperty('iris.exportProbePack', exportProbePack)
|
||||
maxHeapSize = '6g'
|
||||
}
|
||||
}
|
||||
|
||||
TaskProvider<Jar> offlineJar = tasks.register('offlineJar', Jar) {
|
||||
dependsOn(offlineClasses)
|
||||
@@ -848,6 +855,30 @@ project(':adapters:bukkit:nms:v26_3_R1') {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('datapackCostProbe', JavaExec) {
|
||||
group = 'verification'
|
||||
description = 'Exports an Iris dimension as a 26.3 worldgen datapack and measures its load, chunk and density function cost against vanilla.'
|
||||
dependsOn(offlineClasses)
|
||||
mainClass = 'art.arcane.iris.probe.DatapackCostProbe'
|
||||
classpath = sourceSets.offline.runtimeClasspath
|
||||
maxHeapSize = providers.gradleProperty('probeHeap').getOrElse('24G')
|
||||
jvmArgs('--add-modules', 'jdk.incubator.vector', '-Djava.awt.headless=true')
|
||||
doFirst {
|
||||
String dimension = providers.gradleProperty('probeDimension').getOrElse('overworld')
|
||||
String output = providers.gradleProperty('probeOutput')
|
||||
.getOrElse(layout.buildDirectory.file("reports/datapack-cost/${dimension}.json").get().asFile.absolutePath)
|
||||
args([rootProject.file(providers.gradleProperty('probePack').get()).absolutePath, dimension,
|
||||
providers.gradleProperty('probeSeed').getOrElse('1337'),
|
||||
providers.gradleProperty('probeChunkSide').getOrElse('6'),
|
||||
providers.gradleProperty('probeRounds').getOrElse('4'),
|
||||
providers.gradleProperty('probeWarmupSide').getOrElse('6'),
|
||||
providers.gradleProperty('probeCalls').getOrElse('256'),
|
||||
providers.gradleProperty('probeCallSeconds').getOrElse('60'),
|
||||
rootProject.file(output).absolutePath,
|
||||
layout.buildDirectory.dir('tmp/datapack-cost').get().asFile.absolutePath])
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('regionMantleInspection', JavaExec) {
|
||||
group = 'verification'
|
||||
dependsOn(testClasses)
|
||||
@@ -877,6 +908,32 @@ project(':adapters:bukkit:nms:v26_3_R1') {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register('datapackFidelityProbe', JavaExec) {
|
||||
group = 'verification'
|
||||
description = 'Exports an Iris dimension as a 26.3 worldgen datapack and compares both generators on the same seed.'
|
||||
dependsOn(offlineClasses)
|
||||
mainClass = 'art.arcane.iris.probe.DatapackFidelityProbe'
|
||||
classpath = sourceSets.offline.runtimeClasspath
|
||||
maxHeapSize = '8G'
|
||||
jvmArgs('--add-modules', 'jdk.incubator.vector', '-Djava.awt.headless=true')
|
||||
doFirst {
|
||||
String dimension = providers.gradleProperty('probeDimension').get()
|
||||
String seed = providers.gradleProperty('probeSeed').get()
|
||||
String mode = providers.gradleProperty('probeMode').getOrElse('full')
|
||||
boolean biomes = mode == 'biomes'
|
||||
String output = providers.gradleProperty('probeOutput')
|
||||
.getOrElse(layout.buildDirectory.file("reports/datapack-fidelity/${dimension}-${seed}${biomes ? '-biomes' : ''}.json").get().asFile.absolutePath)
|
||||
args([rootProject.file(providers.gradleProperty('probePack').get()).absolutePath, dimension, seed,
|
||||
biomes ? providers.gradleProperty('probeRadiusChunks').getOrElse('0') : providers.gradleProperty('probeRadiusChunks').get(),
|
||||
biomes ? providers.gradleProperty('probeStride').getOrElse('1') : providers.gradleProperty('probeStride').get(),
|
||||
rootProject.file(output).absolutePath,
|
||||
providers.gradleProperty('probeSurveyBlocks').getOrElse('65536'),
|
||||
providers.gradleProperty('probeSurveyStride').getOrElse('256'),
|
||||
providers.gradleProperty('probeSurveySeeds').getOrElse(biomes ? '7' : '1'),
|
||||
mode])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user