Files
2026-07-04 20:27:08 +02:00

166 lines
6.2 KiB
Groovy

plugins {
id "java"
id "maven-publish"
id "net.fabricmc.fabric-loom" version "${loom_version}"
}
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
version = project.mod_version
group = project.maven_group
base {
archivesName = project.archives_base_name
}
loom {
splitEnvironmentSourceSets()
runs {
client {
programArgs "--username", "BlocodexDev", "--uuid", "000000000000400080000000000b10cd"
}
}
mods {
blocodex {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}
}
dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.3"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.3"
testRuntimeOnly "org.junit.platform:junit-platform-launcher"
}
processResources {
inputs.property "version", project.version
filesMatching("fabric.mod.json") {
expand "version": inputs.properties.version
}
}
tasks.withType(JavaCompile).configureEach {
options.release = 25
}
java {
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}
jar {
from("license.txt")
}
test {
useJUnitPlatform()
}
tasks.register("importWsmcSnapshot") {
group = "blocodex"
description = "Import the local WSMC snapshot into a compact runtime asset."
def sourceFile = file("/Users/koka/Documents/wsmc/data/output/latest/snapshot.json")
def outputFile = file("src/main/resources/assets/blocodex/data/wsmc_snapshot_compact.json")
inputs.file(sourceFile)
outputs.file(outputFile)
doLast {
if (!sourceFile.isFile()) {
throw new GradleException("WSMC snapshot not found: ${sourceFile}")
}
def snapshot = new JsonSlurper().parse(sourceFile)
def entries = (snapshot.blocks ?: [])
.findAll { it.visible == true && ["block", "item", "mob"].contains(it.entry_type) }
.collect { entry ->
[
id : entry.id,
name : entry.name,
entry_type : entry.entry_type,
description: entry.description ?: "",
history : (entry.history ?: []).collect { note ->
[
version: note.version ?: "",
status : note.status ?: "",
notes : note.notes ?: ""
]
},
colors : [
primary : entry.colors?.primary ?: entry.colors?.average_hex ?: entry.colors?.dominant_hex ?: "#000000",
dominant_hex : entry.colors?.dominant_hex ?: entry.colors?.primary ?: "#000000",
average_hex : entry.colors?.average_hex ?: entry.colors?.primary ?: "#000000",
hue_group : entry.colors?.hue_group ?: "neutral",
lightness : entry.colors?.lightness ?: 0.0,
saturation : entry.colors?.saturation ?: 0.0,
palette : entry.colors?.palette ?: [],
color_groups : (entry.colors?.color_groups ?: []).collect { group ->
[
hex : group.hex ?: "#000000",
weight : group.weight ?: 0.0,
lightness : group.lightness ?: 0.0,
saturation: group.saturation ?: 0.0,
hue_group : group.hue_group ?: "neutral"
]
},
source : entry.colors?.source ?: ""
],
icon : entry.icon ?: "",
family : entry.family ?: "",
relations : (entry.relations ?: []).collect { relation ->
[
type : relation.type ?: "",
target : relation.target ?: "",
label : relation.label ?: "",
confidence: relation.confidence ?: 0.0
]
},
category : entry.category ?: ""
]
}
.sort { a, b -> a.id <=> b.id }
def counts = entries.countBy { it.entry_type }
def compact = [
kind : "blocodex-wsmc-compact",
schema_version : "0.1.0",
minecraft_version: snapshot.minecraft_version ?: project.minecraft_version,
source : sourceFile.absolutePath,
source_fingerprint: snapshot.source_fingerprint ?: "",
generated_at : snapshot.generated_at ?: "",
entry_count : entries.size(),
entry_type_counts: [
block: counts.block ?: 0,
item : counts.item ?: 0,
mob : counts.mob ?: 0
],
entries : entries
]
outputFile.parentFile.mkdirs()
outputFile.text = JsonOutput.toJson(compact) + "\n"
logger.lifecycle("Imported ${entries.size()} WSMC entries into ${outputFile}")
}
}
publishing {
publications {
create("mavenJava", MavenPublication) {
artifactId = project.archives_base_name
from components.java
}
}
}