diff --git a/build.gradle b/build.gradle index 7a7b0dd..867a921 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:7507be1' + compile 'com.github.Anvilcraft:addonscript-java:b560f84d5f' 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/java/ley/anvil/modpacktools/commands/AddMod.java b/src/main/java/ley/anvil/modpacktools/commands/AddMod.java index 47b7c03..dca28f9 100644 --- a/src/main/java/ley/anvil/modpacktools/commands/AddMod.java +++ b/src/main/java/ley/anvil/modpacktools/commands/AddMod.java @@ -24,7 +24,7 @@ public class AddMod implements ICommand { public CommandReturn execute(String[] args) { //Check if the command has the correct number of args if(args.length >= 2) { - AddonscriptJSON json = Main.MPJH.getJson(); + AddonscriptJSON json = Main.MPJH.getJson().getJson(); AddonscriptJSON.Version version = null; if(json != null && json.versions != null) { if(json.versions.size() == 1) { diff --git a/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt b/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt index 2fbd8e9..8af91cc 100644 --- a/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt +++ b/src/main/kotlin/ley/anvil/modpacktools/commands/CreateModlist.kt @@ -2,6 +2,7 @@ package ley.anvil.modpacktools.commands import j2html.TagCreator.* import ley.anvil.addonscript.v1.AddonscriptJSON +import ley.anvil.addonscript.wrapper.MetaData import ley.anvil.modpacktools.Main import ley.anvil.modpacktools.command.CommandReturn import ley.anvil.modpacktools.command.CommandReturn.Companion.fail @@ -43,7 +44,7 @@ object CreateModlist : ICommand { for(mod in getMods()) { printer.printRecord( mod.name, - mod.contributors.joinToString {c -> c.name}, + mod.contributors.keys.joinToString(), mod.website ) } @@ -81,7 +82,7 @@ object CreateModlist : ICommand { .withTarget("_blank")), td(ul( each(it.contributors) {contr -> - li(contr.name) + li(contr.key) } )) ) @@ -94,19 +95,23 @@ object CreateModlist : ICommand { return success("Wrote HTML file") } - private fun getMods(): List { + private fun getMods(): List { println("Getting mods... this may take a while (TODO)") val asJson = Main.MPJH.json - val mods = ArrayList() + val mods = ArrayList() + val toGet = ArrayList() - asJson!!.load() - - for(rel in asJson.defaultVersion.getRelations("client", false, null)) { - val meta = rel.getMeta(asJson.indexes) - println("got info for file ${meta.name}") - if(meta.name != null) mods.add(meta) else println("meta name == null") + for(rel in asJson!!.defaultVersion.getRelations(arrayOf("client"), null)) { + if (rel.hasLocalMeta()) { + println("got info for file ${rel.localMeta.name}") + mods.add(rel.localMeta) + } + else if (rel.hasFile() && rel.file.isArtifact) + toGet.add(rel.file.artifact) } - return mods.sortedBy {m -> m.name.toLowerCase()} + val metaMap = asJson.repositories.getMeta(toGet.toArray(emptyArray())) + mods.addAll(metaMap.values) + return mods.sortedBy {m -> m.name?.toLowerCase() } } private fun Array.checkArgs(): Boolean = this.size >= 3 && this[1] in arrayOf("html", "csv") diff --git a/src/main/kotlin/ley/anvil/modpacktools/commands/DownloadMods.kt b/src/main/kotlin/ley/anvil/modpacktools/commands/DownloadMods.kt index d7ff578..4bb0371 100644 --- a/src/main/kotlin/ley/anvil/modpacktools/commands/DownloadMods.kt +++ b/src/main/kotlin/ley/anvil/modpacktools/commands/DownloadMods.kt @@ -1,5 +1,6 @@ package ley.anvil.modpacktools.commands +import ley.anvil.addonscript.wrapper.ASWrapper import ley.anvil.addonscript.wrapper.LinkInstPair import ley.anvil.modpacktools.Main.MPJH import ley.anvil.modpacktools.command.CommandReturn @@ -26,12 +27,17 @@ object DownloadMods : ICommand { val json = MPJH.json - json!!.load() + var filelist = ArrayList() + for (rel in json?.defaultVersion?.getRelations(arrayOf("client"), "mod")!!) { + if (rel.hasFile()) + filelist.add(rel.file) + } + FileDownloader( - json!!.defaultVersion.getRelLinks(json.indexes, "client", false, "internal.dir:mods", null).stream() + filelist.stream() .filter {it.isURL} - .collect(toMap( - {it.asURL()}, + .collect(toMap( + {URL(it.link)}, //TODO Get the link using Multithreadding {File(args[1], Paths.get(URL(it.link).path).fileName.toString())}, {_: File, f: File -> f} )), diff --git a/src/main/kotlin/ley/anvil/modpacktools/util/ModpackJsonHandler.kt b/src/main/kotlin/ley/anvil/modpacktools/util/ModpackJsonHandler.kt index d7ed2d6..9e8cb32 100644 --- a/src/main/kotlin/ley/anvil/modpacktools/util/ModpackJsonHandler.kt +++ b/src/main/kotlin/ley/anvil/modpacktools/util/ModpackJsonHandler.kt @@ -1,16 +1,17 @@ package ley.anvil.modpacktools.util import ley.anvil.addonscript.v1.AddonscriptJSON +import ley.anvil.addonscript.wrapper.ASWrapper import java.io.File import java.io.FileReader class ModpackJsonHandler(val modpackJsonFile: File) { - var json: AddonscriptJSON? = null + var json: ASWrapper? = null private set get() = field ?: run { if(modpackJsonFile.exists()) { val reader = FileReader(modpackJsonFile) - field = AddonscriptJSON.read(reader, AddonscriptJSON::class.java) + field = ASWrapper(AddonscriptJSON.read(reader, AddonscriptJSON::class.java)) reader.close() } field