From c4635528cfb923284213b121babce5ee5ab5d356 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Mon, 27 Jul 2020 23:04:30 +0200 Subject: [PATCH] ASConverter.kt converts an Addonscript to a Curse Manifest and a Map with links/files and installer ids --- build.gradle | 2 +- .../modpacktools/commands/CreateModlist.kt | 2 +- .../anvil/modpacktools/util/ASConverter.kt | 76 +++++++++++++++++++ .../modpacktools/util/ManifestLinksPair.kt | 10 +++ 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/ley/anvil/modpacktools/util/ASConverter.kt create mode 100644 src/main/kotlin/ley/anvil/modpacktools/util/ManifestLinksPair.kt diff --git a/build.gradle b/build.gradle index f752f03..9e18135 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ dependencies { compile 'org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.3.8' //Other - compile 'com.github.Anvilcraft:addonscript-java:d83074cc1e' + compile 'com.github.Anvilcraft:addonscript-java:123e1f49cb' compile 'com.squareup.okhttp3:okhttp:4.8.0' compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' diff --git a/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt b/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt index 1b442dd..7ce912b 100644 --- a/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt +++ b/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt @@ -1,8 +1,8 @@ package ley.anvil.modpacktools.commands import j2html.TagCreator.* -import ley.anvil.addonscript.maven.ArtifactDestination import ley.anvil.addonscript.wrapper.ASWrapper +import ley.anvil.addonscript.wrapper.ArtifactDestination import ley.anvil.addonscript.wrapper.MetaData import ley.anvil.modpacktools.MPJH import ley.anvil.modpacktools.command.CommandReturn diff --git a/src/main/kotlin/ley/anvil/modpacktools/util/ASConverter.kt b/src/main/kotlin/ley/anvil/modpacktools/util/ASConverter.kt new file mode 100644 index 0000000..231d7b3 --- /dev/null +++ b/src/main/kotlin/ley/anvil/modpacktools/util/ASConverter.kt @@ -0,0 +1,76 @@ +package ley.anvil.modpacktools.util + +import ley.anvil.addonscript.curse.ManifestJSON +import ley.anvil.addonscript.wrapper.ASWrapper + +fun convertAStoManifest(addonscript: ASWrapper): ManifestLinksPair { + var ml = ManifestLinksPair() + var ver = addonscript.defaultVersion + var manifest = ManifestJSON() + + var mcv = ver.version?.mcversion!![0] + manifest.minecraft = ManifestJSON.Minecraft() + manifest.minecraft.version = mcv + manifest.minecraft.modLoaders = mutableListOf() + manifest.files = mutableListOf() + + manifest.manifestType = "minecraftModpack" + manifest.manifestVersion = 1 + manifest.name = addonscript.json.meta!!.name + if (manifest.name == null) + manifest.name = addonscript.json.id + manifest.version = ver.versionName + manifest.author = addonscript.json!!.meta!!.contributors[0].name + + + for (rel in ver.getRelations(arrayOf("client"), null)) { + if (rel.isModloader) { + if (rel.relation.id == "forge") { + var forge = ManifestJSON.Modloader() + forge.primary = true + forge.id = "forge-" + rel.versions.latestKnown + manifest.minecraft.modLoaders.add(forge) + } else { + println("Curse only allows Forge as a modloader. " + rel.relation.id + " is not allowed!") + } + } else if (rel.hasFile()) { + var file = rel.file + if (file.file.installer == "internal.jar") { + println("internal.jar is not supportet on Curse") + continue + } else if (file.isArtifact) { + var art = file.artifact + if (art.isCurseforge) { + var f = ManifestJSON.File() + f.fileID = art.fileID + f.projectID = art.projectID + f.required = rel.options.contains("required") + manifest.files.add(f); + } + } else if (rel.options.contains("required")) { + ml.links.put(file.link, file.file.installer) + } + } + } + + for (file in ver.getFiles(arrayOf("client", "required"), null)) { + if (file.file.installer == "internal.jar") { + println("internal.jar is not supportet on Curse") + continue + } else if (file.isArtifact) { + var art = file.artifact + if (art.isCurseforge) { + var f = ManifestJSON.File() + f.fileID = art.fileID + f.projectID = art.projectID + f.required = true + manifest.files.add(f); + } + } else { + ml.links.put(file.link, file.file.installer) + } + } + ml.manifest = manifest + + return ml +} \ No newline at end of file diff --git a/src/main/kotlin/ley/anvil/modpacktools/util/ManifestLinksPair.kt b/src/main/kotlin/ley/anvil/modpacktools/util/ManifestLinksPair.kt new file mode 100644 index 0000000..292ad83 --- /dev/null +++ b/src/main/kotlin/ley/anvil/modpacktools/util/ManifestLinksPair.kt @@ -0,0 +1,10 @@ +package ley.anvil.modpacktools.util + +import ley.anvil.addonscript.curse.ManifestJSON + +class ManifestLinksPair { + + var manifest: ManifestJSON? = null + var links: MutableMap = HashMap() + +} \ No newline at end of file