diff --git a/build.gradle b/build.gradle index 92c4939..7f0eb0e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'java' id 'application' + id 'idea' } group 'ley.anvil' @@ -15,7 +16,7 @@ repositories { dependencies { compile 'com.squareup.okhttp3:okhttp:4.8.0' - compile 'com.github.Anvilcraft:addonscript-java:788659c89a' + compile 'com.github.Anvilcraft:addonscript-java:425271587d' compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' compile 'com.moandjiezana.toml:toml4j:0.7.2' compile "com.github.TheRandomLabs:CurseAPI:master-SNAPSHOT" diff --git a/src/main/java/ley/anvil/modpacktools/commands/AddMod.java b/src/main/java/ley/anvil/modpacktools/commands/AddMod.java index 7bcb013..3377b34 100644 --- a/src/main/java/ley/anvil/modpacktools/commands/AddMod.java +++ b/src/main/java/ley/anvil/modpacktools/commands/AddMod.java @@ -63,9 +63,9 @@ public class AddMod implements ICommand { //Get Mods in manifest file //Check if Mod already exsits for(AddonscriptJSON.Relation file : version.relations) { - if(file.file != null) { - String[] parts = file.file.split(":"); - if(parts.length == 3 && parts[0].equals("curse")) { //TODO check, if it is a Curse repo, waiting for Addonscript to update this + if(file.file != null && file.file.artifact != null) { + String[] parts = file.file.artifact.split(":"); + if(parts.length == 3 && parts[0].equals("curse")) { int projID = Integer.parseInt(parts[1]); if(projID == projectID) { return CommandReturn.fail("The Mod Is already Installed"); @@ -78,7 +78,7 @@ public class AddMod implements ICommand { AddonscriptJSON.Relation rel = new AddonscriptJSON.Relation(); rel.file = CurseTools.toArtifact(projectID, fileID); rel.type = "included"; - rel.installer = "internal.dir"; + rel.file.installer = "internal.dir"; //Add Mod to array if(version.relations == null) { version.relations = new ArrayList<>(); @@ -89,9 +89,10 @@ public class AddMod implements ICommand { } }else { AddonscriptJSON.Relation rel = new AddonscriptJSON.Relation(); - rel.file = args[1]; + rel.file = new AddonscriptJSON.File(); + rel.file.link = args[1]; rel.type = "included"; - rel.installer = "internal.dir"; + rel.file.installer = "internal.dir"; if(version.relations == null) { version.relations = new ArrayList<>(); } diff --git a/src/main/java/ley/anvil/modpacktools/commands/ConvertManifestToModpackJSON.java b/src/main/java/ley/anvil/modpacktools/commands/ConvertManifestToModpackJSON.java index 281b81c..4f040b2 100644 --- a/src/main/java/ley/anvil/modpacktools/commands/ConvertManifestToModpackJSON.java +++ b/src/main/java/ley/anvil/modpacktools/commands/ConvertManifestToModpackJSON.java @@ -47,7 +47,7 @@ public class ConvertManifestToModpackJSON implements ICommand { @Nonnull @Override public String getName() { - return "convertmanifesttomodpackjson"; + return "import"; } @Nonnull diff --git a/src/main/java/ley/anvil/modpacktools/commands/CreateModList.java b/src/main/java/ley/anvil/modpacktools/commands/CreateModList.java index 9e2355f..9f019be 100644 --- a/src/main/java/ley/anvil/modpacktools/commands/CreateModList.java +++ b/src/main/java/ley/anvil/modpacktools/commands/CreateModList.java @@ -2,6 +2,8 @@ package ley.anvil.modpacktools.commands; import j2html.TagCreator; import j2html.tags.ContainerTag; +import ley.anvil.addonscript.v1.AddonscriptJSON; +import ley.anvil.modpacktools.Main; import ley.anvil.modpacktools.command.CommandReturn; import ley.anvil.modpacktools.command.ICommand; import ley.anvil.modpacktools.command.LoadCommand; @@ -33,23 +35,24 @@ public class CreateModList implements ICommand { try(CSVPrinter printer = new CSVPrinter(new FileWriter(csvFile), CSVFormat.EXCEL.withDelimiter(';'))) { printer.printRecord("Name", "Authors", "Link", "Downloads", "ID"); printer.println(); - ArrayList modlist = ModInfo.getModInfo(); - Collections.sort(modlist, Comparator.comparing(a -> a.getName().toLowerCase())); - for(ModInfo mod : modlist) { - String name = mod.getName(); - String[] authorArr = mod.getAuthors(); - String link = mod.getLink(); - int downloads = mod.getDownloads(); - int id = mod.getId(); + ArrayList modlist = new ArrayList<>(); + for (AddonscriptJSON.Relation rel : Main.MPJH.getJson().getDefaultVersion().getRelations("client", false, null)) { + modlist.add(rel.getMeta(Main.MPJH.getJson().indexes)); + } + Collections.sort(modlist, Comparator.comparing(a -> a.name.toLowerCase())); + for(AddonscriptJSON.Meta mod : modlist) { + String name = mod.name; + AddonscriptJSON.Contributor[] authorArr = mod.contributors.toArray(new AddonscriptJSON.Contributor[0]); + String link = mod.website; StringBuilder sb = new StringBuilder(); - for(String author : authorArr) { - sb.append(author); + for(AddonscriptJSON.Contributor author : authorArr) { + sb.append(author.name); sb.append(", "); } String authors = sb.toString(); authors = authors.substring(0, authors.length() - 2); - printer.printRecord(name, authors, link, downloads, id); + printer.printRecord(name, authors, link); } }catch(IOException e) { e.printStackTrace(); @@ -59,8 +62,11 @@ public class CreateModList implements ICommand { if(htmlFile.exists()) { return CommandReturn.fail("Delete " + htmlFile); } - ArrayList mods = ModInfo.getModInfo(); - Collections.sort(mods, Comparator.comparing(a -> a.getName().toLowerCase())); + ArrayList mods = new ArrayList<>(); + for (AddonscriptJSON.Relation rel : Main.MPJH.getJson().getDefaultVersion().getRelations("client", false, null)) { + mods.add(rel.getMeta(Main.MPJH.getJson().indexes)); + } + Collections.sort(mods, Comparator.comparing(a -> a.name.toLowerCase())); ContainerTag table = body( TagCreator.table(TagCreator.attrs("#mods"), TagCreator.tbody( tr(td(b("Name")), @@ -70,20 +76,18 @@ public class CreateModList implements ICommand { ), TagCreator.each(mods, i -> { StringBuilder sb = new StringBuilder(); - for(String author : i.getAuthors()) { - sb.append(author); + for(AddonscriptJSON.Contributor author : i.contributors) { + sb.append(author.name); sb.append(", "); } String authors = sb.toString(); authors = authors.substring(0, authors.length() - 2); - return tr(td(a(i.getName()) - .withHref(i.getLink()) + return tr(td(a(i.name) + .withHref(i.website) .withRel("noopener noreferrer") .withTarget("_blank")), - td(authors), - td(String.valueOf(i.getId())), - td(String.valueOf(i.getDownloads()))); + td(authors)); }) )) ); diff --git a/src/main/java/ley/anvil/modpacktools/commands/DownloadMods.java b/src/main/java/ley/anvil/modpacktools/commands/DownloadMods.java index c71d66c..57f3588 100644 --- a/src/main/java/ley/anvil/modpacktools/commands/DownloadMods.java +++ b/src/main/java/ley/anvil/modpacktools/commands/DownloadMods.java @@ -1,5 +1,6 @@ package ley.anvil.modpacktools.commands; +import ley.anvil.modpacktools.Main; import ley.anvil.modpacktools.command.CommandReturn; import ley.anvil.modpacktools.command.ICommand; import ley.anvil.modpacktools.command.LoadCommand; @@ -33,11 +34,10 @@ public class DownloadMods implements ICommand { }; FileDownloader.downloadAsync( - ModInfo.getModInfo() - .stream() + Main.MPJH.getJson().getDefaultVersion().getRelLinks(Main.MPJH.getJson().indexes, "client", false, "internal.dir:mods", null).stream() .collect(Collectors.toMap( - i -> Util.sanitizeURL(toURL.apply(i.getDownload())), - i -> new File(args[1], Paths.get(toURL.apply(i.getDownload()).getPath()).getFileName().toString()) + i -> Util.sanitizeURL(toURL.apply(i.getKey())), + i -> new File(args[1], Paths.get(toURL.apply(i.getKey()).getPath()).getFileName().toString()) )), r -> { //Synced to prevent the exception being printed too late