From f05d4e33c36e4a29ffd6dbb32fc6ccb4b98799a2 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Fri, 24 Jul 2020 21:52:44 +0200 Subject: [PATCH] Fix some bugs --- .../anvil/addonscript/curse/ManifestJSON.java | 1 - .../anvil/addonscript/forge/ForgeMeta.java | 24 ++++++++ .../anvil/addonscript/forge/ForgeTools.java | 59 ------------------- .../anvil/addonscript/v1/AddonscriptJSON.java | 27 +++++---- .../addonscript/wrapper/LinkInstPair.java | 52 ++++++++++++++++ 5 files changed, 91 insertions(+), 72 deletions(-) create mode 100644 src/main/java/ley/anvil/addonscript/forge/ForgeMeta.java delete mode 100644 src/main/java/ley/anvil/addonscript/forge/ForgeTools.java create mode 100644 src/main/java/ley/anvil/addonscript/wrapper/LinkInstPair.java diff --git a/src/main/java/ley/anvil/addonscript/curse/ManifestJSON.java b/src/main/java/ley/anvil/addonscript/curse/ManifestJSON.java index d9ce851..fcf419f 100644 --- a/src/main/java/ley/anvil/addonscript/curse/ManifestJSON.java +++ b/src/main/java/ley/anvil/addonscript/curse/ManifestJSON.java @@ -1,6 +1,5 @@ package ley.anvil.addonscript.curse; -import ley.anvil.addonscript.forge.ForgeTools; import ley.anvil.addonscript.util.JSON; import ley.anvil.addonscript.v1.AddonscriptJSON; diff --git a/src/main/java/ley/anvil/addonscript/forge/ForgeMeta.java b/src/main/java/ley/anvil/addonscript/forge/ForgeMeta.java new file mode 100644 index 0000000..3d99cc1 --- /dev/null +++ b/src/main/java/ley/anvil/addonscript/forge/ForgeMeta.java @@ -0,0 +1,24 @@ +package ley.anvil.addonscript.forge; + +import ley.anvil.addonscript.v1.AddonscriptJSON; + +import java.util.ArrayList; + +public class ForgeMeta extends AddonscriptJSON.Meta { + + public ForgeMeta() { + name = "Minecraft Forge"; + contributors = new ArrayList<>(); + contributors.add(getContrib("LexManos", "owner")); //TODO Complete Contributor list + website = "https://forums.minecraftforge.net/"; + } + + private AddonscriptJSON.Contributor getContrib(String name, String role) { + AddonscriptJSON.Contributor con = new AddonscriptJSON.Contributor(); + con.name = name; + con.roles = new ArrayList<>(); + con.roles.add(role); + return con; + } + +} diff --git a/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java b/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java deleted file mode 100644 index bf6178c..0000000 --- a/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java +++ /dev/null @@ -1,59 +0,0 @@ -package ley.anvil.addonscript.forge; - -import ley.anvil.addonscript.v1.AddonscriptJSON; - -import java.util.ArrayList; - -public class ForgeTools { - - public static void addForgeRepo(AddonscriptJSON as) { - if (as.repositories == null) { - as.repositories = new ArrayList<>(); - } - boolean alreadyAdded = false; - for (AddonscriptJSON.Repository repo : as.repositories) { - if (repo.id != null && repo.id.equals("forge")) { - alreadyAdded = true; - } - } - if (!alreadyAdded) { - AddonscriptJSON.Repository repo = new AddonscriptJSON.Repository(); - repo.id = "forge"; - repo.type = "forge"; - repo.url = "https://files.minecraftforge.net/"; - as.repositories.add(repo); - } - } - - public static void addForge(AddonscriptJSON as, int version, String forgeVersion) { - addForgeRepo(as); - if (as.versions == null) { - as.versions = new ArrayList<>(); - as.versions.add(new AddonscriptJSON.Version()); - } - AddonscriptJSON.Version ver = null; - for (AddonscriptJSON.Version v : as.versions) { - if (v.versionid == version || v.versionid == -1) { - ver = v; - } - } - if (ver != null) { - AddonscriptJSON.Relation rel = new AddonscriptJSON.Relation(); - rel.id = "forge"; - rel.type = "required"; - if (as.type != null && as.type.equals("modpack")) { - rel.type = "included"; - } - rel.file = new AddonscriptJSON.File(); - rel.file.installer = "internal.forge"; - rel.file.artifact = "forge:"+ forgeVersion; - if (ver.relations == null) { - ver.relations = new ArrayList<>(); - } - ver.relations.add(rel); - } - } - - - -} diff --git a/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java b/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java index 33e8e07..95cbf76 100644 --- a/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java +++ b/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java @@ -1,16 +1,17 @@ package ley.anvil.addonscript.v1; import com.google.gson.annotations.Expose; -import javafx.util.Pair; import ley.anvil.addonscript.curse.CurseforgeRepository; +import ley.anvil.addonscript.forge.ForgeMeta; +import ley.anvil.addonscript.installer.IInstaller; +import ley.anvil.addonscript.installer.InternalDirInstaller; import ley.anvil.addonscript.maven.MavenRepository; import ley.anvil.addonscript.python.PythonInstaller; import ley.anvil.addonscript.util.ASBase; -import ley.anvil.addonscript.installer.IInstaller; import ley.anvil.addonscript.util.IRepository; -import ley.anvil.addonscript.installer.InternalDirInstaller; import ley.anvil.addonscript.util.Indexes; import ley.anvil.addonscript.util.Utils; +import ley.anvil.addonscript.wrapper.LinkInstPair; import org.python.jline.internal.Nullable; import java.io.Reader; @@ -133,20 +134,20 @@ public class AddonscriptJSON extends ASBase { return list; } - public List> getRelLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { - List> list = new ArrayList<>(); + public List getRelLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { + List list = new ArrayList<>(); for (Relation r : getRelations(side, optionals, edition)) { list.addAll(r.getLinks(indexes, side, optionals, installer, edition)); } return list; } - public List> getLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { - List> list = new ArrayList<>(); + public List getLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { + List list = new ArrayList<>(); for (File file : files) { if (file != null && file.hasOption(side) && (installer == null || installer.equals(file.installer) || installer.equals(file.installer.split(":")[0])) && ((file.hasOption("optional") && optionals) || file.hasOption("edition:" + edition) || file.hasOption("required"))) - list.add(new Pair<>(file.getLink(indexes), file.installer)); + list.add(new LinkInstPair(file.getLink(indexes), file.installer)); } return list; @@ -388,12 +389,14 @@ public class AddonscriptJSON extends ASBase { return indexes.ADDONS.get(id).meta; else if(meta != null) return meta; + else if (type != null && type.equals("modloader") && id != null && id.equals("forge")) + return new ForgeMeta(); else return file.getMeta(indexes); } - public List> getLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { - List> list = new ArrayList<>(); + public List getLinks(Indexes indexes, String side, boolean optionals, @Nullable String installer, @Nullable String edition) { + List list = new ArrayList<>(); if (indexes.ADDONS.containsKey(id)) { AddonscriptJSON addon = indexes.ADDONS.get(id); @@ -403,13 +406,13 @@ public class AddonscriptJSON extends ASBase { if (version != null) { for (File f : version.files) { if (f != null && f.hasOption(side) && (installer == null || installer.equals(f.installer) || installer.equals(f.installer.split(":")[0])) && ((f.hasOption("optional") && optionals) || f.hasOption("edition:" + edition) || f.hasOption("required"))) - list.add(new Pair<>(f.getLink(indexes), f.installer)); + list.add(new LinkInstPair(f.getLink(indexes), f.installer)); } } } if (file != null && hasOption(side) && (installer == null || installer.equals(file.installer) || installer.equals(file.installer.split(":")[0])) && ((hasOption("optional") && optionals) || hasOption("edition:" + edition) || hasOption("required"))) - list.add(new Pair<>(file.getLink(indexes), file.installer)); + list.add(new LinkInstPair(file.getLink(indexes), file.installer)); return list; } diff --git a/src/main/java/ley/anvil/addonscript/wrapper/LinkInstPair.java b/src/main/java/ley/anvil/addonscript/wrapper/LinkInstPair.java new file mode 100644 index 0000000..a5c1e70 --- /dev/null +++ b/src/main/java/ley/anvil/addonscript/wrapper/LinkInstPair.java @@ -0,0 +1,52 @@ +package ley.anvil.addonscript.wrapper; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; + +public class LinkInstPair { + + public String link; + public String installer; + + public LinkInstPair(String link, String installer) { + this.link = link; + this.installer = installer; + } + + public String getLink() { + return link; + } + + public String getInstaller() { + return installer; + } + + public boolean isURL() { + return link.startsWith("http://") || link.startsWith("https://"); + } + + public boolean isFile() { + return link.startsWith("file://"); + } + + public File asFile(String jsonDir) { + if (isFile()) { + String f = link.replace("file://", jsonDir + (jsonDir.endsWith("/") ? "" : "/")); + return new File(f); + } + throw new RuntimeException("This is not a file"); + } + + public URL asURL() { + if (isURL()) { + try { + return new URL(link); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + } + throw new RuntimeException("This is not a URL"); + } + +}