From fcf965ecad767f2d52ef88de575665527aace58c Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sat, 13 Jul 2024 12:30:35 +1200 Subject: [PATCH] Check for nullsy --- .../disguise/utilities/params/ParamInfo.java | 9 ++++++++- .../disguise/utilities/params/types/ParamInfoEnum.java | 6 ++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java index e262c11a..449a5346 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java @@ -45,14 +45,21 @@ public abstract class ParamInfo { this.possibleValues = new LinkedHashMap<>(); + // Pointless to trigger an error if it doesn't matter + if (possibleValues.length == 0) { + return; + } + if (paramClass.isEnum()) { for (T anEnum : possibleValues) { this.getValues().put(((Enum) anEnum).name(), anEnum); } - } else { + } else if (Keyed.class.isAssignableFrom(paramClass)) { for (T anEnum : possibleValues) { this.getValues().put(((Keyed) anEnum).getKey().getKey(), anEnum); } + } else { + throw new IllegalArgumentException("The param class " + paramClass + " is not an enum and is not an instanceof Keyed"); } } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java index 7cd895a9..f1360fa4 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java @@ -5,6 +5,7 @@ import me.libraryaddict.disguise.utilities.parser.DisguiseParseException; import org.bukkit.Bukkit; import org.bukkit.Keyed; +import java.lang.reflect.Array; import java.util.Map; /** @@ -12,8 +13,9 @@ import java.util.Map; */ public class ParamInfoEnum extends ParamInfo { public ParamInfoEnum(Class paramClass, String name, String description) { - super(paramClass, name, name, description, - paramClass.isEnum() ? paramClass.getEnumConstants() : (T[]) Bukkit.getRegistry((Class) paramClass).stream().toArray()); + super(paramClass, name, name, description, paramClass.isEnum() ? paramClass.getEnumConstants() : + (T[]) (Bukkit.getServer() == null ? Array.newInstance(paramClass, 0) : + Bukkit.getRegistry((Class) paramClass).stream().toArray())); } public ParamInfoEnum(Class paramClass, String name, String valueType, String description, T[] possibleValues) {