mirror of https://github.com/FabricMC/yarn.git
More buildscript updates (#3566)
This commit is contained in:
parent
09085b2dbb
commit
31a9278db7
|
@ -4,7 +4,7 @@ jobs:
|
||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
java: [17-jdk, 18-jdk]
|
java: [17-jdk, 20-jdk]
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: eclipse-temurin:${{ matrix.java }}
|
image: eclipse-temurin:${{ matrix.java }}
|
||||||
|
@ -13,7 +13,7 @@ jobs:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- run: ./gradlew build javadocJar checkMappings --stacktrace --warning-mode fail
|
- run: ./gradlew build javadocJar checkMappings --stacktrace --warning-mode fail
|
||||||
- name: Build artifacts
|
- name: Build artifacts
|
||||||
if: ${{ matrix.java == '18-jdk' }}
|
if: ${{ matrix.java == '20-jdk' }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
|
@ -23,7 +23,7 @@ jobs:
|
||||||
test-build-logic:
|
test-build-logic:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: eclipse-temurin:18-jdk
|
image: eclipse-temurin:20-jdk
|
||||||
options: --user root
|
options: --user root
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
|
@ -6,7 +6,7 @@ jobs:
|
||||||
if: ${{ github.repository_owner == 'FabricMC' }}
|
if: ${{ github.repository_owner == 'FabricMC' }}
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: eclipse-temurin:18-jdk
|
image: eclipse-temurin:20-jdk
|
||||||
options: --user root
|
options: --user root
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
|
@ -4,7 +4,7 @@ jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
image: eclipse-temurin:18-jdk
|
image: eclipse-temurin:20-jdk
|
||||||
options: --user root
|
options: --user root
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
223
build.gradle
223
build.gradle
|
@ -9,7 +9,6 @@ buildscript {
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "cuchaz:enigma-cli:${project.enigma_version}"
|
classpath "cuchaz:enigma-cli:${project.enigma_version}"
|
||||||
classpath "net.fabricmc:stitch:${project.stitch_version}"
|
|
||||||
classpath "net.fabricmc:name-proposal:${project.name_proposal_version}"
|
classpath "net.fabricmc:name-proposal:${project.name_proposal_version}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,72 +99,26 @@ def minecraftLibraries = configurations.minecraftLibraries
|
||||||
import cuchaz.enigma.command.CheckMappingsCommand
|
import cuchaz.enigma.command.CheckMappingsCommand
|
||||||
import net.fabricmc.filament.task.MapJarTask
|
import net.fabricmc.filament.task.MapJarTask
|
||||||
import net.fabricmc.filament.task.DownloadTask
|
import net.fabricmc.filament.task.DownloadTask
|
||||||
import net.fabricmc.filament.task.ExtractZipEntryTask
|
|
||||||
import net.fabricmc.filament.task.UnpickJarTask
|
import net.fabricmc.filament.task.UnpickJarTask
|
||||||
import net.fabricmc.filament.task.base.WithFileInput
|
import net.fabricmc.filament.task.base.WithFileInput
|
||||||
import net.fabricmc.filament.task.base.WithFileOutput
|
import net.fabricmc.filament.task.base.WithFileOutput
|
||||||
import net.fabricmc.filament.task.enigma.ConvertMappingsTask
|
|
||||||
import net.fabricmc.filament.task.enigma.MapSpecializedMethodsTask
|
import net.fabricmc.filament.task.enigma.MapSpecializedMethodsTask
|
||||||
import net.fabricmc.stitch.commands.CommandMergeTiny
|
import net.fabricmc.filament.task.mappingio.ConvertMappingsTask
|
||||||
import net.fabricmc.stitch.commands.CommandReorderTiny
|
import net.fabricmc.filament.task.mappingio.MergeMappingsTask
|
||||||
import net.fabricmc.stitch.commands.tinyv2.CommandMergeTinyV2
|
import net.fabricmc.mappingio.format.MappingFormat
|
||||||
import net.fabricmc.stitch.commands.tinyv2.CommandReorderTinyV2
|
|
||||||
import net.fabricmc.nameproposal.MappingNameCompleter
|
import net.fabricmc.nameproposal.MappingNameCompleter
|
||||||
import org.gradle.work.DisableCachingByDefault
|
import org.gradle.work.DisableCachingByDefault
|
||||||
|
|
||||||
import java.util.zip.GZIPOutputStream
|
import java.util.zip.GZIPOutputStream
|
||||||
|
|
||||||
task downloadIntermediary(type: DownloadTask) {
|
tasks.register('downloadIntermediary', DownloadTask) {
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
url = "https://github.com/FabricMC/intermediary/raw/master/mappings/${minecraft_version}.tiny"
|
url = "https://github.com/FabricMC/intermediary/raw/master/mappings/${minecraft_version}.tiny"
|
||||||
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary.tiny")
|
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary.tiny")
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadIntermediaryV2(type: DownloadTask) {
|
tasks.register('mapIntermediaryJar', MapJarTask) {
|
||||||
group = buildMappingGroup
|
dependsOn downloadIntermediary, mergeMinecraftJars
|
||||||
url = "https://maven.fabricmc.net/net/fabricmc/intermediary/${minecraft_version}/intermediary-${minecraft_version}-v2.jar"
|
|
||||||
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-v2.jar")
|
|
||||||
}
|
|
||||||
|
|
||||||
task extractIntermediaryV2(type: ExtractZipEntryTask) {
|
|
||||||
input = downloadIntermediaryV2.output
|
|
||||||
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-v2.tiny")
|
|
||||||
entry = "mappings/mappings.tiny"
|
|
||||||
}
|
|
||||||
|
|
||||||
task invertIntermediary(dependsOn: downloadIntermediary, type: FileInputOutput) {
|
|
||||||
group = buildMappingGroup
|
|
||||||
input = downloadIntermediary.output
|
|
||||||
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-inverted.tiny")
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
String[] v1Args = [
|
|
||||||
inputFile.getAbsolutePath(),
|
|
||||||
outputFile.getAbsolutePath(),
|
|
||||||
"intermediary", "official"
|
|
||||||
]
|
|
||||||
|
|
||||||
new CommandReorderTiny().run(v1Args)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task invertIntermediaryv2(dependsOn: [downloadIntermediaryV2, extractIntermediaryV2], type: FileInputOutput) {
|
|
||||||
group = buildMappingGroup
|
|
||||||
output = new File(cacheFilesMinecraft, "${minecraft_version}-intermediary-inverted-v2.tiny")
|
|
||||||
input = extractIntermediaryV2.output
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
String[] v2Args = [
|
|
||||||
inputFile.getAbsolutePath(),
|
|
||||||
outputFile.getAbsolutePath(),
|
|
||||||
"intermediary", "official"
|
|
||||||
]
|
|
||||||
|
|
||||||
new CommandReorderTinyV2().run(v2Args)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task mapIntermediaryJar(type: MapJarTask, dependsOn: [downloadIntermediary, mergeMinecraftJars]) {
|
|
||||||
group = mapJarGroup
|
group = mapJarGroup
|
||||||
output = file("${minecraft_version}-intermediary.jar")
|
output = file("${minecraft_version}-intermediary.jar")
|
||||||
input = mergeMinecraftJars.output
|
input = mergeMinecraftJars.output
|
||||||
|
@ -175,7 +128,8 @@ task mapIntermediaryJar(type: MapJarTask, dependsOn: [downloadIntermediary, merg
|
||||||
to = 'intermediary'
|
to = 'intermediary'
|
||||||
}
|
}
|
||||||
|
|
||||||
task mapServerIntermediaryJar(type: MapJarTask, dependsOn: [downloadIntermediary, extractBundledServer]) {
|
tasks.register('mapServerIntermediaryJar', MapJarTask) {
|
||||||
|
dependsOn downloadIntermediary, extractBundledServer
|
||||||
group = mapJarGroup
|
group = mapJarGroup
|
||||||
output = file("${minecraft_version}-server-intermediary.jar")
|
output = file("${minecraft_version}-server-intermediary.jar")
|
||||||
input = extractBundledServer.output
|
input = extractBundledServer.output
|
||||||
|
@ -185,19 +139,20 @@ task mapServerIntermediaryJar(type: MapJarTask, dependsOn: [downloadIntermediary
|
||||||
to = 'intermediary'
|
to = 'intermediary'
|
||||||
}
|
}
|
||||||
|
|
||||||
task yarn(dependsOn: mapIntermediaryJar, type: EnigmaTask) {
|
tasks.register('yarn', EnigmaTask) {
|
||||||
|
dependsOn mapIntermediaryJar
|
||||||
group = yarnGroup
|
group = yarnGroup
|
||||||
jar = mapIntermediaryJar.output
|
jar = mapIntermediaryJar.output
|
||||||
mappings = mappingsDir
|
mappings = mappingsDir
|
||||||
}
|
}
|
||||||
|
|
||||||
task yarnCommon(type: EnigmaTask) {
|
tasks.register('yarnCommon', EnigmaTask) {
|
||||||
group = yarnGroup
|
group = yarnGroup
|
||||||
jar = mapServerIntermediaryJar.output
|
jar = mapServerIntermediaryJar.output
|
||||||
mappings = mappingsDir
|
mappings = mappingsDir
|
||||||
}
|
}
|
||||||
|
|
||||||
task checkMappings() {
|
tasks.register('checkMappings') {
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
inputs.dir mappingsDir
|
inputs.dir mappingsDir
|
||||||
inputs.file mapIntermediaryJar.output
|
inputs.file mapIntermediaryJar.output
|
||||||
|
@ -206,8 +161,8 @@ task checkMappings() {
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
String[] args = [
|
String[] args = [
|
||||||
intermediaryJarPath,
|
intermediaryJarPath,
|
||||||
mappingsDir.getAbsolutePath()
|
mappingsDir.getAbsolutePath()
|
||||||
]
|
]
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -218,7 +173,7 @@ task checkMappings() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task mapSpecializedMethods(type: MapSpecializedMethodsTask) {
|
tasks.register('mapSpecializedMethods', MapSpecializedMethodsTask) {
|
||||||
intermediaryJarFile = mapIntermediaryJar.output
|
intermediaryJarFile = mapIntermediaryJar.output
|
||||||
mappings = mappingsDir
|
mappings = mappingsDir
|
||||||
output = new File(tempDir, "yarn-mappings-v2.tiny")
|
output = new File(tempDir, "yarn-mappings-v2.tiny")
|
||||||
|
@ -227,48 +182,18 @@ task mapSpecializedMethods(type: MapSpecializedMethodsTask) {
|
||||||
outputMappingsFormat = "tinyv2:intermediary:named"
|
outputMappingsFormat = "tinyv2:intermediary:named"
|
||||||
}
|
}
|
||||||
|
|
||||||
task convertToV1(type: ConvertMappingsTask) {
|
tasks.register('convertToV1', ConvertMappingsTask) {
|
||||||
input = mapSpecializedMethods.output
|
input = mapSpecializedMethods.output
|
||||||
output = new File(tempDir, "yarn-mappings.tiny")
|
output = new File(tempDir, "yarn-mappings.tiny")
|
||||||
|
outputFormat = MappingFormat.TINY
|
||||||
inputMappingsFormat = "tinyv2"
|
|
||||||
outputMappingsFormat = "tiny:intermediary:named"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task mergeTiny(dependsOn: ["convertToV1", "invertIntermediary"], type: FileOutput) {
|
tasks.register('mergeTiny', MergeMappingsTask) {
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
|
|
||||||
def unorderedResultMappings = new File(tempDir, "mappings-unordered.tiny")
|
|
||||||
outputs.file unorderedResultMappings
|
|
||||||
|
|
||||||
output = new File(tempDir, "mappings.tiny")
|
output = new File(tempDir, "mappings.tiny")
|
||||||
|
mappingInputs.from downloadIntermediary.output
|
||||||
inputs.file convertToV1.output
|
mappingInputs.from convertToV1.output
|
||||||
inputs.file invertIntermediary.output
|
outputFormat = MappingFormat.TINY
|
||||||
|
|
||||||
def intermediaryTinyPath = invertIntermediary.outputFile.absolutePath
|
|
||||||
def yarnTinyPath = convertToV1.outputFile.absolutePath
|
|
||||||
def outputPath = unorderedResultMappings.absolutePath
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
String[] args = [
|
|
||||||
intermediaryTinyPath,
|
|
||||||
yarnTinyPath,
|
|
||||||
outputPath,
|
|
||||||
"intermediary",
|
|
||||||
"official"
|
|
||||||
]
|
|
||||||
|
|
||||||
new CommandMergeTiny().run(args)
|
|
||||||
|
|
||||||
String[] args2 = [
|
|
||||||
unorderedResultMappings.getAbsolutePath(),
|
|
||||||
output.getAbsolutePath(),
|
|
||||||
"official", "intermediary", "named"
|
|
||||||
]
|
|
||||||
|
|
||||||
new CommandReorderTiny().run(args2)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable the default jar task
|
// Disable the default jar task
|
||||||
|
@ -276,7 +201,8 @@ jar {
|
||||||
enabled = false
|
enabled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
task tinyJar(type: Jar, dependsOn: mergeTiny) {
|
tasks.register('tinyJar', Jar) {
|
||||||
|
dependsOn mergeTiny
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
archiveFileName = "yarn-${yarnVersion}.jar"
|
archiveFileName = "yarn-${yarnVersion}.jar"
|
||||||
destinationDirectory.set(file("build/libs"))
|
destinationDirectory.set(file("build/libs"))
|
||||||
|
@ -290,7 +216,8 @@ task tinyJar(type: Jar, dependsOn: mergeTiny) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task compressTiny(dependsOn: [tinyJar, mergeTiny], type: FileInputOutput) {
|
tasks.register('compressTiny', FileInputOutput) {
|
||||||
|
dependsOn tinyJar, mergeTiny
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
|
|
||||||
input = mergeTiny.output
|
input = mergeTiny.output
|
||||||
|
@ -322,7 +249,7 @@ sourceSets {
|
||||||
packageDocs // package info files
|
packageDocs // package info files
|
||||||
}
|
}
|
||||||
|
|
||||||
task constantsJar(type: Jar) {
|
tasks.register('constantsJar', Jar) {
|
||||||
from sourceSets.constants.output
|
from sourceSets.constants.output
|
||||||
archiveClassifier = "constants"
|
archiveClassifier = "constants"
|
||||||
}
|
}
|
||||||
|
@ -355,7 +282,8 @@ spotless {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
tasks.register('sourcesJar', Jar) {
|
||||||
|
dependsOn classes
|
||||||
archiveClassifier = "sources"
|
archiveClassifier = "sources"
|
||||||
from sourceSets.constants.allSource
|
from sourceSets.constants.allSource
|
||||||
}
|
}
|
||||||
|
@ -364,7 +292,8 @@ task sourcesJar(type: Jar, dependsOn: classes) {
|
||||||
|
|
||||||
build.dependsOn constantsJar
|
build.dependsOn constantsJar
|
||||||
|
|
||||||
task insertAutoGeneratedEnumMappings(dependsOn : [mapIntermediaryJar, downloadIntermediary], type : FileInputOutput){
|
tasks.register('insertAutoGeneratedEnumMappings', FileInputOutput) {
|
||||||
|
dependsOn mapIntermediaryJar, downloadIntermediary
|
||||||
group = buildMappingGroup
|
group = buildMappingGroup
|
||||||
input = mapSpecializedMethods.output
|
input = mapSpecializedMethods.output
|
||||||
output = new File(tempDir, "unmerged-named-v2-with-enum.tiny")
|
output = new File(tempDir, "unmerged-named-v2-with-enum.tiny")
|
||||||
|
@ -377,10 +306,10 @@ task insertAutoGeneratedEnumMappings(dependsOn : [mapIntermediaryJar, downloadIn
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
MappingNameCompleter.completeNames(
|
MappingNameCompleter.completeNames(
|
||||||
intermediaryJarPath,
|
intermediaryJarPath,
|
||||||
inputPath,
|
inputPath,
|
||||||
intermediaryMappingsPath,
|
intermediaryMappingsPath,
|
||||||
outputPath
|
outputPath
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -391,7 +320,7 @@ remapUnpickDefinitionsIntermediary {
|
||||||
mappings = insertAutoGeneratedEnumMappings.output
|
mappings = insertAutoGeneratedEnumMappings.output
|
||||||
}
|
}
|
||||||
|
|
||||||
task unpickIntermediaryJar(type: UnpickJarTask) {
|
tasks.register('unpickIntermediaryJar', UnpickJarTask) {
|
||||||
group = 'unpick'
|
group = 'unpick'
|
||||||
input = mapIntermediaryJar.output
|
input = mapIntermediaryJar.output
|
||||||
output = file("${minecraft_version}-intermediary-unpicked.jar")
|
output = file("${minecraft_version}-intermediary-unpicked.jar")
|
||||||
|
@ -400,48 +329,23 @@ task unpickIntermediaryJar(type: UnpickJarTask) {
|
||||||
classpath.from minecraftLibraries
|
classpath.from minecraftLibraries
|
||||||
}
|
}
|
||||||
|
|
||||||
task yarnUnpicked(dependsOn: "unpickIntermediaryJar", type: EnigmaTask) {
|
tasks.register('yarnUnpicked', EnigmaTask) {
|
||||||
|
dependsOn "unpickIntermediaryJar"
|
||||||
group = yarnGroup
|
group = yarnGroup
|
||||||
jar = unpickIntermediaryJar.output
|
jar = unpickIntermediaryJar.output
|
||||||
mappings = mappingsDir
|
mappings = mappingsDir
|
||||||
}
|
}
|
||||||
|
|
||||||
task mergeV2(dependsOn: ["v2UnmergedYarnJar"], type: FileOutput) {
|
tasks.register('mergeV2', MergeMappingsTask) {
|
||||||
def mergedV2 = new File(tempDir, "merged-v2.tiny");
|
group = buildMappingGroup
|
||||||
outputs.file mergedV2
|
output = new File(tempDir, "merged-v2.tiny")
|
||||||
|
mappingInputs.from downloadIntermediary.output
|
||||||
output = new File(tempDir, "merged-reordered-v2.tiny")
|
mappingInputs.from insertAutoGeneratedEnumMappings.output
|
||||||
|
outputFormat = MappingFormat.TINY_2
|
||||||
inputs.file insertAutoGeneratedEnumMappings.output
|
|
||||||
inputs.file invertIntermediaryv2.output
|
|
||||||
|
|
||||||
def intermediaryPath = invertIntermediaryv2.outputFile.absolutePath
|
|
||||||
def mappingsPath = insertAutoGeneratedEnumMappings.outputFile.absolutePath
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
String[] args = [
|
|
||||||
intermediaryPath,
|
|
||||||
mappingsPath,
|
|
||||||
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, combineUnpickDefinitions], type: Jar) {
|
tasks.register('v2UnmergedYarnJar', Jar) {
|
||||||
|
dependsOn insertAutoGeneratedEnumMappings, combineUnpickDefinitions
|
||||||
def mappings = insertAutoGeneratedEnumMappings.output
|
def mappings = insertAutoGeneratedEnumMappings.output
|
||||||
group = "mapping build"
|
group = "mapping build"
|
||||||
archiveFileName = "yarn-${yarnVersion}-v2.jar"
|
archiveFileName = "yarn-${yarnVersion}-v2.jar"
|
||||||
|
@ -452,7 +356,7 @@ task v2UnmergedYarnJar(dependsOn: [insertAutoGeneratedEnumMappings, combineUnpic
|
||||||
from(combineUnpickDefinitions.output) {
|
from(combineUnpickDefinitions.output) {
|
||||||
rename combineUnpickDefinitions.output.get().asFile.name, "extras/definitions.unpick"
|
rename combineUnpickDefinitions.output.get().asFile.name, "extras/definitions.unpick"
|
||||||
}
|
}
|
||||||
from (file(unpickMetaFile)) {
|
from(file(unpickMetaFile)) {
|
||||||
expand version: project.unpick_version
|
expand version: project.unpick_version
|
||||||
rename unpickMetaFile.name, "extras/unpick.json"
|
rename unpickMetaFile.name, "extras/unpick.json"
|
||||||
}
|
}
|
||||||
|
@ -462,8 +366,9 @@ task v2UnmergedYarnJar(dependsOn: [insertAutoGeneratedEnumMappings, combineUnpic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task v2MergedYarnJar(dependsOn: ["mergeV2"], type: Jar) {
|
tasks.register('v2MergedYarnJar', Jar) {
|
||||||
def mappings = mergeV2.output
|
dependsOn mergeV2
|
||||||
|
def mappings = mergeV2.outputFile
|
||||||
group = "mapping build"
|
group = "mapping build"
|
||||||
archiveFileName = "yarn-${yarnVersion}-mergedv2.jar"
|
archiveFileName = "yarn-${yarnVersion}-mergedv2.jar"
|
||||||
|
|
||||||
|
@ -473,7 +378,7 @@ task v2MergedYarnJar(dependsOn: ["mergeV2"], type: Jar) {
|
||||||
from(combineUnpickDefinitions.output) {
|
from(combineUnpickDefinitions.output) {
|
||||||
rename combineUnpickDefinitions.output.get().asFile.name, "extras/definitions.unpick"
|
rename combineUnpickDefinitions.output.get().asFile.name, "extras/definitions.unpick"
|
||||||
}
|
}
|
||||||
from (file(unpickMetaFile)) {
|
from(file(unpickMetaFile)) {
|
||||||
expand version: project.unpick_version
|
expand version: project.unpick_version
|
||||||
rename unpickMetaFile.name, "extras/unpick.json"
|
rename unpickMetaFile.name, "extras/unpick.json"
|
||||||
}
|
}
|
||||||
|
@ -483,7 +388,8 @@ task v2MergedYarnJar(dependsOn: ["mergeV2"], type: Jar) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task mapNamedJar(type: MapJarTask, dependsOn: ["mergeV2", "unpickIntermediaryJar"]) {
|
tasks.register('mapNamedJar', MapJarTask) {
|
||||||
|
dependsOn mergeV2, unpickIntermediaryJar
|
||||||
group = mapJarGroup
|
group = mapJarGroup
|
||||||
output = file("${minecraft_version}-named.jar")
|
output = file("${minecraft_version}-named.jar")
|
||||||
input = unpickIntermediaryJar.output
|
input = unpickIntermediaryJar.output
|
||||||
|
@ -492,22 +398,23 @@ task mapNamedJar(type: MapJarTask, dependsOn: ["mergeV2", "unpickIntermediaryJar
|
||||||
from = 'intermediary'
|
from = 'intermediary'
|
||||||
to = 'named'
|
to = 'named'
|
||||||
classMappings = [
|
classMappings = [
|
||||||
"javax/annotation/Nullable": "org/jetbrains/annotations/Nullable",
|
"javax/annotation/Nullable" : "org/jetbrains/annotations/Nullable",
|
||||||
"javax/annotation/Nonnull": "org/jetbrains/annotations/NotNull",
|
"javax/annotation/Nonnull" : "org/jetbrains/annotations/NotNull",
|
||||||
"javax/annotation/concurrent/Immutable": "org/jetbrains/annotations/Unmodifiable"
|
"javax/annotation/concurrent/Immutable": "org/jetbrains/annotations/Unmodifiable"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
def mcLibsDir = file('build/tmp/mclibs')
|
def mcLibsDir = file('build/tmp/mclibs')
|
||||||
|
|
||||||
// Task to copy all the mc libs into a single directory.
|
// Task to copy all the mc libs into a single directory.
|
||||||
task syncDependencies(type: Sync) {
|
tasks.register('syncDependencies', Sync) {
|
||||||
from minecraftLibraries
|
from minecraftLibraries
|
||||||
into mcLibsDir
|
into mcLibsDir
|
||||||
}
|
}
|
||||||
|
|
||||||
def fakeSourceDir = file(".gradle/temp/fakeSource")
|
def fakeSourceDir = file(".gradle/temp/fakeSource")
|
||||||
task genFakeSource(type: JavaExec, dependsOn: ["mergeV2", "mapNamedJar", syncDependencies]) {
|
tasks.register('genFakeSource', JavaExec) {
|
||||||
|
dependsOn mergeV2, mapNamedJar, syncDependencies
|
||||||
group = "javadoc generation"
|
group = "javadoc generation"
|
||||||
|
|
||||||
inputs.file mergeV2.output
|
inputs.file mergeV2.output
|
||||||
|
@ -519,10 +426,11 @@ task genFakeSource(type: JavaExec, dependsOn: ["mergeV2", "mapNamedJar", syncDep
|
||||||
mainClass = "net.fabricmc.mappingpoet.Main"
|
mainClass = "net.fabricmc.mappingpoet.Main"
|
||||||
classpath configurations.mappingPoet
|
classpath configurations.mappingPoet
|
||||||
// use merged v2 so we have all namespaces in jd
|
// use merged v2 so we have all namespaces in jd
|
||||||
args mergeV2.output.getAbsolutePath(), mapNamedJar.outputFile.getAbsolutePath(), fakeSourceDir.getAbsolutePath(), mcLibsDir.getAbsolutePath()
|
args mergeV2.outputFile.getAbsolutePath(), mapNamedJar.outputFile.getAbsolutePath(), fakeSourceDir.getAbsolutePath(), mcLibsDir.getAbsolutePath()
|
||||||
}
|
}
|
||||||
|
|
||||||
task decompileCFR(type: JavaExec, dependsOn: [mapNamedJar]) {
|
tasks.register('decompileCFR', JavaExec) {
|
||||||
|
dependsOn mapNamedJar
|
||||||
mainClass = "org.benf.cfr.reader.Main"
|
mainClass = "org.benf.cfr.reader.Main"
|
||||||
|
|
||||||
args mapNamedJar.outputFile.getAbsolutePath(), "--outputdir", file("namedSrc").absolutePath
|
args mapNamedJar.outputFile.getAbsolutePath(), "--outputdir", file("namedSrc").absolutePath
|
||||||
|
@ -618,7 +526,8 @@ javadoc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task javadocJar(type: Jar, dependsOn: ["javadoc"]) {
|
tasks.register('javadocJar', Jar) {
|
||||||
|
dependsOn javadoc
|
||||||
group = "javadoc generation"
|
group = "javadoc generation"
|
||||||
|
|
||||||
from javadoc.destinationDir
|
from javadoc.destinationDir
|
||||||
|
@ -680,7 +589,7 @@ publishing {
|
||||||
}
|
}
|
||||||
|
|
||||||
// A task to ensure that the version being released has not already been released.
|
// A task to ensure that the version being released has not already been released.
|
||||||
task checkVersion {
|
tasks.register('checkVersion') {
|
||||||
doFirst {
|
doFirst {
|
||||||
def xml = new URL("https://maven.fabricmc.net/net/fabricmc/yarn/maven-metadata.xml").text
|
def xml = new URL("https://maven.fabricmc.net/net/fabricmc/yarn/maven-metadata.xml").text
|
||||||
def metadata = new XmlSlurper().parseText(xml)
|
def metadata = new XmlSlurper().parseText(xml)
|
||||||
|
@ -693,10 +602,6 @@ task checkVersion {
|
||||||
|
|
||||||
publish.mustRunAfter checkVersion
|
publish.mustRunAfter checkVersion
|
||||||
|
|
||||||
abstract class FileOutput extends DefaultTask {
|
|
||||||
@OutputFile
|
|
||||||
File output
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class FileInputOutput extends DefaultTask implements WithFileInput, WithFileOutput {
|
abstract class FileInputOutput extends DefaultTask implements WithFileInput, WithFileOutput {
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ repositories {
|
||||||
url 'https://maven.fabricmc.net'
|
url 'https://maven.fabricmc.net'
|
||||||
}
|
}
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -34,20 +35,16 @@ dependencies {
|
||||||
implementation "net.fabricmc.unpick:unpick:$properties.unpick_version"
|
implementation "net.fabricmc.unpick:unpick:$properties.unpick_version"
|
||||||
implementation "net.fabricmc.unpick:unpick-format-utils:$properties.unpick_version"
|
implementation "net.fabricmc.unpick:unpick-format-utils:$properties.unpick_version"
|
||||||
implementation "net.fabricmc.unpick:unpick-cli:$properties.unpick_version"
|
implementation "net.fabricmc.unpick:unpick-cli:$properties.unpick_version"
|
||||||
implementation "net.fabricmc:tiny-mappings-parser:$properties.tiny_mappings_parser_version"
|
|
||||||
implementation "net.fabricmc:tiny-remapper:$properties.tiny_remapper_version"
|
implementation "net.fabricmc:tiny-remapper:$properties.tiny_remapper_version"
|
||||||
implementation "net.fabricmc:mappingpoet:$properties.mappingpoet_version"
|
implementation "net.fabricmc:mappingpoet:$properties.mappingpoet_version"
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4.2'
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4.2'
|
||||||
|
implementation 'net.fabricmc:mapping-io:0.4.0'
|
||||||
|
|
||||||
// Contains a number of useful utilities we can re-use.
|
// Contains a number of useful utilities we can re-use.
|
||||||
implementation ("net.fabricmc:fabric-loom:1.1.10") {
|
implementation ("net.fabricmc:fabric-loom:1.2.7") {
|
||||||
transitive = false
|
transitive = false
|
||||||
}
|
}
|
||||||
|
|
||||||
implementation ('net.fabricmc:stitch:0.6.2') {
|
|
||||||
exclude module: 'enigma'
|
|
||||||
}
|
|
||||||
|
|
||||||
testImplementation platform("org.junit:junit-bom:$properties.junit_version")
|
testImplementation platform("org.junit:junit-bom:$properties.junit_version")
|
||||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||||
testImplementation "org.assertj:assertj-core:$properties.assertj_version"
|
testImplementation "org.assertj:assertj-core:$properties.assertj_version"
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
filament_version=0.5.0
|
filament_version=0.6.0
|
|
@ -1,24 +0,0 @@
|
||||||
package net.fabricmc.filament.task;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
|
|
||||||
import org.gradle.api.provider.Property;
|
|
||||||
import org.gradle.api.tasks.Input;
|
|
||||||
import org.gradle.api.tasks.TaskAction;
|
|
||||||
|
|
||||||
import net.fabricmc.filament.task.base.FilamentTask;
|
|
||||||
import net.fabricmc.filament.task.base.WithFileInput;
|
|
||||||
import net.fabricmc.filament.task.base.WithFileOutput;
|
|
||||||
import net.fabricmc.loom.util.ZipUtils;
|
|
||||||
|
|
||||||
public abstract class ExtractZipEntryTask extends FilamentTask implements WithFileInput, WithFileOutput {
|
|
||||||
@Input
|
|
||||||
public abstract Property<String> getEntry();
|
|
||||||
|
|
||||||
@TaskAction
|
|
||||||
public void run() throws IOException {
|
|
||||||
byte[] bytes = ZipUtils.unpack(getInputPath(), getEntry().get());
|
|
||||||
Files.write(getOutputPath(), bytes);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +1,7 @@
|
||||||
package net.fabricmc.filament.task;
|
package net.fabricmc.filament.task;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.UncheckedIOException;
|
import java.io.UncheckedIOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -30,11 +28,9 @@ import org.gradle.workers.WorkerExecutor;
|
||||||
|
|
||||||
import net.fabricmc.filament.util.FileUtil;
|
import net.fabricmc.filament.util.FileUtil;
|
||||||
import net.fabricmc.filament.util.UnpickUtil;
|
import net.fabricmc.filament.util.UnpickUtil;
|
||||||
import net.fabricmc.mapping.tree.ClassDef;
|
import net.fabricmc.mappingio.MappingReader;
|
||||||
import net.fabricmc.mapping.tree.FieldDef;
|
import net.fabricmc.mappingio.tree.MappingTree;
|
||||||
import net.fabricmc.mapping.tree.MethodDef;
|
import net.fabricmc.mappingio.tree.MemoryMappingTree;
|
||||||
import net.fabricmc.mapping.tree.TinyMappingFactory;
|
|
||||||
import net.fabricmc.mapping.tree.TinyTree;
|
|
||||||
|
|
||||||
public abstract class RemapUnpickDefinitionsTask extends DefaultTask {
|
public abstract class RemapUnpickDefinitionsTask extends DefaultTask {
|
||||||
@InputFile
|
@InputFile
|
||||||
|
@ -98,28 +94,28 @@ public abstract class RemapUnpickDefinitionsTask extends DefaultTask {
|
||||||
Map<String, String> classMappings = new HashMap<>();
|
Map<String, String> classMappings = new HashMap<>();
|
||||||
Map<MethodKey, String> methodMappings = new HashMap<>();
|
Map<MethodKey, String> methodMappings = new HashMap<>();
|
||||||
Map<FieldKey, String> fieldMappings = new HashMap<>();
|
Map<FieldKey, String> fieldMappings = new HashMap<>();
|
||||||
String fromM = getParameters().getSourceNamespace().get();
|
|
||||||
String toM = getParameters().getTargetNamespace().get();
|
|
||||||
|
|
||||||
try (BufferedReader reader = new BufferedReader(new FileReader(getParameters().getMappings().getAsFile().get()))) {
|
final MemoryMappingTree mappingTree = new MemoryMappingTree();
|
||||||
TinyTree tinyTree = TinyMappingFactory.loadWithDetection(reader);
|
MappingReader.read(getParameters().getMappings().getAsFile().get().toPath(), mappingTree);
|
||||||
|
|
||||||
for (ClassDef classDef : tinyTree.getClasses()) {
|
final int fromM = mappingTree.getNamespaceId(getParameters().getSourceNamespace().get());
|
||||||
classMappings.put(classDef.getName(fromM), classDef.getName(toM));
|
final int toM = mappingTree.getNamespaceId(getParameters().getTargetNamespace().get());
|
||||||
|
|
||||||
for (MethodDef methodDef : classDef.getMethods()) {
|
for (MappingTree.ClassMapping classDef : mappingTree.getClasses()) {
|
||||||
methodMappings.put(
|
classMappings.put(classDef.getName(fromM), classDef.getName(toM));
|
||||||
new MethodKey(classDef.getName(fromM), methodDef.getName(fromM), methodDef.getDescriptor(fromM)),
|
|
||||||
methodDef.getName(toM)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (FieldDef fieldDef : classDef.getFields()) {
|
for (MappingTree.MethodMapping methodDef : classDef.getMethods()) {
|
||||||
fieldMappings.put(
|
methodMappings.put(
|
||||||
new FieldKey(classDef.getName(fromM), fieldDef.getName(fromM)),
|
new MethodKey(classDef.getName(fromM), methodDef.getName(fromM), methodDef.getDesc(fromM)),
|
||||||
fieldDef.getName(toM)
|
methodDef.getName(toM)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (MappingTree.FieldMapping fieldDef : classDef.getFields()) {
|
||||||
|
fieldMappings.put(
|
||||||
|
new FieldKey(classDef.getName(fromM), fieldDef.getName(fromM)),
|
||||||
|
fieldDef.getName(toM)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
package net.fabricmc.filament.task.enigma;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import cuchaz.enigma.command.Command;
|
|
||||||
import cuchaz.enigma.command.ConvertMappingsCommand;
|
|
||||||
import org.gradle.api.provider.Property;
|
|
||||||
import org.gradle.api.tasks.Input;
|
|
||||||
|
|
||||||
import net.fabricmc.filament.task.base.WithFileInput;
|
|
||||||
import net.fabricmc.filament.task.base.WithFileOutput;
|
|
||||||
|
|
||||||
public abstract class ConvertMappingsTask extends EnigmaCommandTask implements WithFileInput, WithFileOutput {
|
|
||||||
@Input
|
|
||||||
public abstract Property<String> getInputMappingsFormat();
|
|
||||||
|
|
||||||
@Input
|
|
||||||
public abstract Property<String> getOutputMappingsFormat();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<? extends Command> getCommandClass() {
|
|
||||||
return ConvertMappingsCommand.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<String> getArguments() {
|
|
||||||
return List.of(
|
|
||||||
getInputMappingsFormat().get(),
|
|
||||||
getInputFile().getAbsolutePath(),
|
|
||||||
getOutputMappingsFormat().get(),
|
|
||||||
getOutputFile().getAbsolutePath()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package net.fabricmc.filament.task.mappingio;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import net.fabricmc.filament.task.base.WithFileInput;
|
||||||
|
import net.fabricmc.mappingio.MappingReader;
|
||||||
|
import net.fabricmc.mappingio.MappingWriter;
|
||||||
|
|
||||||
|
public abstract class ConvertMappingsTask extends MappingOutputTask implements WithFileInput {
|
||||||
|
@Override
|
||||||
|
void run(MappingWriter writer) throws IOException {
|
||||||
|
MappingReader.read(getInputPath(), writer);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package net.fabricmc.filament.task.mappingio;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.gradle.api.provider.Property;
|
||||||
|
import org.gradle.api.tasks.Input;
|
||||||
|
import org.gradle.api.tasks.TaskAction;
|
||||||
|
|
||||||
|
import net.fabricmc.filament.task.base.FilamentTask;
|
||||||
|
import net.fabricmc.filament.task.base.WithFileOutput;
|
||||||
|
import net.fabricmc.mappingio.MappingWriter;
|
||||||
|
import net.fabricmc.mappingio.format.MappingFormat;
|
||||||
|
|
||||||
|
public abstract class MappingOutputTask extends FilamentTask implements WithFileOutput {
|
||||||
|
@Input
|
||||||
|
public abstract Property<MappingFormat> getOutputFormat();
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
public final void run() throws IOException {
|
||||||
|
try (MappingWriter mappingWriter = MappingWriter.create(getOutputPath(), getOutputFormat().get())) {
|
||||||
|
run(mappingWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract void run(MappingWriter writer) throws IOException;
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
package net.fabricmc.filament.task.mappingio;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.gradle.api.file.ConfigurableFileCollection;
|
||||||
|
import org.gradle.api.tasks.InputFiles;
|
||||||
|
|
||||||
|
import net.fabricmc.mappingio.MappingReader;
|
||||||
|
import net.fabricmc.mappingio.MappingWriter;
|
||||||
|
import net.fabricmc.mappingio.adapter.MappingDstNsReorder;
|
||||||
|
import net.fabricmc.mappingio.adapter.MappingNsCompleter;
|
||||||
|
import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch;
|
||||||
|
import net.fabricmc.mappingio.tree.MappingTree;
|
||||||
|
import net.fabricmc.mappingio.tree.MemoryMappingTree;
|
||||||
|
|
||||||
|
public abstract class MergeMappingsTask extends MappingOutputTask {
|
||||||
|
@InputFiles
|
||||||
|
public abstract ConfigurableFileCollection getMappingInputs();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void run(MappingWriter writer) throws IOException {
|
||||||
|
var mappingTree = new MemoryMappingTree();
|
||||||
|
|
||||||
|
for (File file : getMappingInputs().getFiles()) {
|
||||||
|
var nsSwitch = new MappingSourceNsSwitch(mappingTree, "intermediary");
|
||||||
|
MappingReader.read(file.toPath(), nsSwitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
fixInnerClasses(mappingTree);
|
||||||
|
|
||||||
|
var nsCompleter = new MappingNsCompleter(writer, Map.of("named", "intermediary"), true);
|
||||||
|
var dstReorder = new MappingDstNsReorder(nsCompleter, List.of("official", "named"));
|
||||||
|
mappingTree.accept(dstReorder);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fixInnerClasses(MemoryMappingTree mappingTree) {
|
||||||
|
int named = mappingTree.getNamespaceId("named");
|
||||||
|
|
||||||
|
for (MappingTree.ClassMapping entry : mappingTree.getClasses()) {
|
||||||
|
String name = entry.getName(named);
|
||||||
|
|
||||||
|
if (name != null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry.setDstName(matchEnclosingClass(entry.getSrcName(), mappingTree), named);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Takes something like net/minecraft/class_123$class_124 that doesn't have a mapping, tries to find net/minecraft/class_123
|
||||||
|
* , say the mapping of net/minecraft/class_123 is path/to/someclass and then returns a class of the form
|
||||||
|
* path/to/someclass$class124
|
||||||
|
*/
|
||||||
|
private String matchEnclosingClass(String sharedName, MemoryMappingTree mappingTree) {
|
||||||
|
final int named = mappingTree.getNamespaceId("named");
|
||||||
|
final String[] path = sharedName.split(Pattern.quote("$"));
|
||||||
|
|
||||||
|
for (int i = path.length - 2; i >= 0; i--) {
|
||||||
|
final String currentPath = String.join("$", Arrays.copyOfRange(path, 0, i + 1));
|
||||||
|
final MappingTree.ClassMapping match = mappingTree.getClass(currentPath);
|
||||||
|
|
||||||
|
if (match != null && match.getName(named) != null) {
|
||||||
|
return match.getName(named) + "$" + String.join("$", Arrays.copyOfRange(path, i + 1, path.length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sharedName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,7 +7,7 @@ import org.gradle.api.tasks.InputFile;
|
||||||
import org.gradle.api.tasks.TaskAction;
|
import org.gradle.api.tasks.TaskAction;
|
||||||
|
|
||||||
import net.fabricmc.filament.task.base.FileOutputTask;
|
import net.fabricmc.filament.task.base.FileOutputTask;
|
||||||
import net.fabricmc.stitch.merge.JarMerger;
|
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftJarMerger;
|
||||||
|
|
||||||
public abstract class MergeMinecraftTask extends FileOutputTask {
|
public abstract class MergeMinecraftTask extends FileOutputTask {
|
||||||
@InputFile
|
@InputFile
|
||||||
|
@ -18,7 +18,7 @@ public abstract class MergeMinecraftTask extends FileOutputTask {
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
public void run() throws IOException {
|
public void run() throws IOException {
|
||||||
try (JarMerger jarMerger = new JarMerger(
|
try (MinecraftJarMerger jarMerger = new MinecraftJarMerger(
|
||||||
getClientJar().getAsFile().get(),
|
getClientJar().getAsFile().get(),
|
||||||
getServerJar().getAsFile().get(),
|
getServerJar().getAsFile().get(),
|
||||||
getOutput().getAsFile().get())) {
|
getOutput().getAsFile().get())) {
|
||||||
|
|
|
@ -4,12 +4,10 @@ org.gradle.parallel=true
|
||||||
org.gradle.configuration-cache=true
|
org.gradle.configuration-cache=true
|
||||||
|
|
||||||
enigma_version=2.3.1
|
enigma_version=2.3.1
|
||||||
stitch_version=0.6.1
|
|
||||||
unpick_version=2.3.0
|
unpick_version=2.3.0
|
||||||
cfr_version=0.1.1
|
cfr_version=0.1.1
|
||||||
name_proposal_version=0.1.4
|
name_proposal_version=0.1.4
|
||||||
tiny_remapper_version=0.8.5
|
asm_version=9.5
|
||||||
asm_version=9.4
|
|
||||||
|
|
||||||
# Javadoc generation/linking
|
# Javadoc generation/linking
|
||||||
fabric_loader_version=0.14.14
|
fabric_loader_version=0.14.14
|
||||||
|
@ -17,6 +15,6 @@ jetbrains_annotations_version=23.0.0
|
||||||
mappingpoet_version=0.3.2
|
mappingpoet_version=0.3.2
|
||||||
|
|
||||||
# Build logic
|
# Build logic
|
||||||
tiny_mappings_parser_version=0.3.0+build.17
|
tiny_remapper_version=0.8.5
|
||||||
junit_version=5.7.1
|
junit_version=5.7.1
|
||||||
assertj_version=3.19.0
|
assertj_version=3.19.0
|
||||||
|
|
Loading…
Reference in New Issue