Generate a mergedv2 jar, update engima + some other tweaks. Closes #1071

This commit is contained in:
modmuss50 2020-03-09 19:28:16 +00:00
parent d24dec94fb
commit 355a622b46
2 changed files with 98 additions and 12 deletions

View File

@ -6,7 +6,7 @@ jdk:
script:
- chmod +x gradlew
- ./gradlew build mapNamedJar --stacktrace
- ./gradlew build mapNamedJar checkMappings --stacktrace
notifications:
email: false

View File

@ -7,12 +7,12 @@ buildscript {
}
}
dependencies {
classpath "cuchaz:enigma:0.14.3.148"
classpath "cuchaz:enigma:0.15.150"
classpath "net.fabricmc:stitch:0.4.3.71"
classpath "commons-io:commons-io:2.6"
classpath "com.google.guava:guava:28.0-jre"
classpath 'de.undercouch:gradle-download-task:4.0.2'
classpath 'net.fabricmc:tiny-remapper:+'
classpath 'net.fabricmc:tiny-remapper:0.2.1.63'
}
}
@ -49,7 +49,7 @@ configurations {
dependencies {
enigmaRuntime "net.fabricmc:stitch:0.4.3.71"
enigmaRuntime "cuchaz:enigma:0.14.3.148"
enigmaRuntime "cuchaz:enigma:0.15.150"
}
def setupGroup = "jar setup"
@ -83,6 +83,8 @@ import net.fabricmc.stitch.commands.CommandProposeFieldNames
import net.fabricmc.stitch.commands.CommandReorderTiny
import net.fabricmc.stitch.commands.CommandRewriteIntermediary
import net.fabricmc.stitch.commands.tinyv2.CommandProposeV2FieldNames
import net.fabricmc.stitch.commands.tinyv2.CommandMergeTinyV2
import net.fabricmc.stitch.commands.tinyv2.CommandReorderTinyV2
import net.fabricmc.stitch.merge.JarMerger
import net.fabricmc.tinyremapper.OutputConsumerPath
import net.fabricmc.tinyremapper.TinyRemapper
@ -172,14 +174,16 @@ task downloadMcJars(dependsOn: downloadWantedVersionManifest) {
logger.lifecycle(":downloading minecraft jars")
if (!clientJar.exists() || !validateChecksum(clientJar, version.downloads.client.sha1)) {
logger.lifecycle(":downloading minecraft client")
FileUtils.copyURLToFile(new URL(version.downloads.client.url), clientJar)
download {
src new URL(version.downloads.client.url)
dest clientJar
overwrite false
}
if (!serverJar.exists() || !validateChecksum(serverJar, version.downloads.server.sha1)) {
logger.lifecycle(":downloading minecraft server")
FileUtils.copyURLToFile(new URL(version.downloads.server.url), serverJar)
download {
src new URL(version.downloads.server.url)
dest serverJar
overwrite false
}
}
}
@ -191,6 +195,22 @@ task downloadIntermediary(type: Download) {
dest new File(cacheFilesMinecraft, "${minecraft_version}-intermediary.tiny")
}
task downloadIntermediaryV2(type: Download) {
group = buildMappingGroup
def url = "https://maven.fabricmc.net/net/fabricmc/intermediary/${minecraft_version}/intermediary-${minecraft_version}-v2.jar"
src com.google.common.net.UrlEscapers.urlFragmentEscaper().escape(url)
dest new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-v2.jar")
}
task extractIntermediaryV2(dependsOn: downloadIntermediaryV2, type: Copy) {
def output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-v2.tiny")
from({ zipTree(downloadIntermediaryV2.dest) }) {
include 'mappings/mappings.tiny'
rename 'mappings.tiny', "../${output.name}"
}
into output.parentFile
}
task mergeJars(dependsOn: downloadMcJars) {
group = setupGroup
inputs.files downloadMcJars.outputs.files.files
@ -268,9 +288,31 @@ task invertIntermediary(dependsOn: downloadIntermediary, type: FileOutput) {
}
}
task invertIntermediaryv2(dependsOn: extractIntermediaryV2, type: FileOutput) {
group = buildMappingGroup
def v2Input = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-v2.tiny")
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-inverted-v2.tiny")
outputs.file(output)
outputs.upToDateWhen { false }
doLast {
logger.lifecycle(":building inverted intermediary v2")
String[] v2Args = [
v2Input.getAbsolutePath(),
output.getAbsolutePath(),
"intermediary", "official"
]
new CommandReorderTinyV2().run(v2Args)
}
}
task patchIntermediary(dependsOn: [mergeJars, downloadIntermediary]) {
group = buildMappingGroup
def intermediaryTinyInput = downloadIntermediary.dest
def intermediaryTinyInput = downloadIntermediary.outputs.files.singleFile
def outputFile = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-full.tiny")
outputs.file(outputFile)
@ -454,7 +496,7 @@ clean.doFirst {
delete tempDir, cacheFilesMinecraft
}
tasks.build.dependsOn "compressTiny","tinyJar","v2UnmergedYarnJar"
tasks.build.dependsOn "compressTiny","tinyJar","v2UnmergedYarnJar", "v2MergedYarnJar"
task mapYarnJar(dependsOn: [compressTiny, mapIntermediaryJar]) {
group = mapJarGroup
@ -566,6 +608,36 @@ task insertAutoGeneratedEnumMappings(dependsOn : [buildYarnTiny,mapIntermediaryJ
}
}
task mergeV2(dependsOn: ["v2UnmergedYarnJar", "invertIntermediaryv2"], type: FileOutput) {
def mergedV2 = new File(tempDir, "merged-v2.tiny");
output = new File(tempDir, "merged-reordered-v2.tiny")
outputs.upToDateWhen { false }
doLast {
logger.lifecycle(":merging yarn and intermediary v2")
String[] args = [
invertIntermediaryv2.output.getAbsolutePath(),
insertAutoGeneratedEnumMappings.output.getAbsolutePath(),
mergedV2.getAbsolutePath(),
"intermediary",
"official"
]
new CommandMergeTinyV2().run(args)
//Reorder the mappings to match the output of loom
args = [
mergedV2.getAbsolutePath(),
output.getAbsolutePath(),
"official",
"intermediary",
"named"
]
new CommandReorderTinyV2().run(args)
}
}
task v2UnmergedYarnJar(dependsOn: insertAutoGeneratedEnumMappings, type: Jar) {
def mappings = insertAutoGeneratedEnumMappings.output
group = "mapping build"
@ -578,6 +650,17 @@ task v2UnmergedYarnJar(dependsOn: insertAutoGeneratedEnumMappings, type: Jar) {
destinationDirectory.set(file("build/libs"))
}
task v2MergedYarnJar(dependsOn: ["mergeV2"], type: Jar) {
def mappings = mergeV2.output
group = "mapping build"
outputs.upToDateWhen { false }
archiveFileName = "yarn-${yarnVersion}-mergedv2.jar"
from(file(mappings)) {
rename mappings.name, "mappings/mappings.tiny"
}
destinationDirectory.set(file("build/libs"))
}
publishing {
publications {
@ -594,6 +677,9 @@ publishing {
artifact(v2UnmergedYarnJar) {
classifier "v2"
}
artifact(v2MergedYarnJar) {
classifier "mergedv2"
}
}
}