From 31952dc43f4606571c052ccd115aa7b0ff47c175 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Fri, 5 Jun 2020 22:55:19 +0200 Subject: [PATCH] Added ID to Relations --- .../anvil/addonscript/curse/CurseTools.java | 17 ++++++++++++ .../anvil/addonscript/forge/ForgeTools.java | 1 + .../ley/anvil/addonscript/util/ASBase.java | 26 +++++++++++++++++++ .../anvil/addonscript/v1/AddonscriptJSON.java | 15 +++++------ 4 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ley/anvil/addonscript/util/ASBase.java diff --git a/src/main/java/ley/anvil/addonscript/curse/CurseTools.java b/src/main/java/ley/anvil/addonscript/curse/CurseTools.java index cc0ed95..c7734ff 100644 --- a/src/main/java/ley/anvil/addonscript/curse/CurseTools.java +++ b/src/main/java/ley/anvil/addonscript/curse/CurseTools.java @@ -1,8 +1,12 @@ package ley.anvil.addonscript.curse; +import com.therandomlabs.curseapi.CurseAPI; +import com.therandomlabs.curseapi.CurseException; +import com.therandomlabs.curseapi.project.CurseProject; import ley.anvil.addonscript.v1.AddonscriptJSON; import java.util.ArrayList; +import java.util.Optional; public class CurseTools { @@ -41,4 +45,17 @@ public class CurseTools { return false; } + public static String getID(int projectID) { + try { + Optional project = CurseAPI.project(projectID); + if (project.isPresent()) { + CurseProject proj = project.get(); + return proj.slug(); + } + } catch (CurseException e) { + return "NOID"; + } + return "NOID"; + } + } diff --git a/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java b/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java index 566d064..70ab810 100644 --- a/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java +++ b/src/main/java/ley/anvil/addonscript/forge/ForgeTools.java @@ -39,6 +39,7 @@ public class ForgeTools { } 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"; diff --git a/src/main/java/ley/anvil/addonscript/util/ASBase.java b/src/main/java/ley/anvil/addonscript/util/ASBase.java new file mode 100644 index 0000000..03edcea --- /dev/null +++ b/src/main/java/ley/anvil/addonscript/util/ASBase.java @@ -0,0 +1,26 @@ +package ley.anvil.addonscript.util; + +import ley.anvil.addonscript.v1.AddonscriptJSON; + +import java.io.Reader; + +public abstract class ASBase extends JSON { + + public ASBase fromJSON(Reader reader) { + ASBase base = gson.fromJson(reader, ASBase.class); + return gson.fromJson(reader, base.getImpl()); + } + + /** + * The version of the AddonScript file + */ + public int asversion; + + public Class getImpl() { + switch (asversion) { + case 1: return AddonscriptJSON.class; + default: return ASBase.class; + } + } + +} diff --git a/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java b/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java index f794b5a..b43c854 100644 --- a/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java +++ b/src/main/java/ley/anvil/addonscript/v1/AddonscriptJSON.java @@ -1,10 +1,10 @@ package ley.anvil.addonscript.v1; -import ley.anvil.addonscript.util.JSON; +import ley.anvil.addonscript.util.ASBase; import java.util.List; -public class AddonscriptJSON extends JSON { +public class AddonscriptJSON extends ASBase { public static AddonscriptJSON fromJSON(String json) { return fromJSON(json, AddonscriptJSON.class); @@ -16,11 +16,6 @@ public class AddonscriptJSON extends JSON { return as; } - /** - * The version of the AddonScript file - */ - public int asversion; - /** * The ID of the addon */ @@ -215,6 +210,11 @@ public class AddonscriptJSON extends JSON { } public static class Relation { + /** + * The ID of the relation + * This should be unique in this Addonscript file + */ + public String id; /** * The installer for this file * Format: ::... @@ -237,7 +237,6 @@ public class AddonscriptJSON extends JSON { * already exposing this information */ public Meta meta; - /** * A list of parameters for this relation. * Currently supportet parameters: