Check for nullsy

This commit is contained in:
libraryaddict 2024-07-13 12:30:35 +12:00
parent c2d7bf96b3
commit fcf965ecad
2 changed files with 12 additions and 3 deletions

View File

@ -45,14 +45,21 @@ public abstract class ParamInfo<T> {
this.possibleValues = new LinkedHashMap<>(); this.possibleValues = new LinkedHashMap<>();
// Pointless to trigger an error if it doesn't matter
if (possibleValues.length == 0) {
return;
}
if (paramClass.isEnum()) { if (paramClass.isEnum()) {
for (T anEnum : possibleValues) { for (T anEnum : possibleValues) {
this.getValues().put(((Enum) anEnum).name(), anEnum); this.getValues().put(((Enum) anEnum).name(), anEnum);
} }
} else { } else if (Keyed.class.isAssignableFrom(paramClass)) {
for (T anEnum : possibleValues) { for (T anEnum : possibleValues) {
this.getValues().put(((Keyed) anEnum).getKey().getKey(), anEnum); 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");
} }
} }

View File

@ -5,6 +5,7 @@ import me.libraryaddict.disguise.utilities.parser.DisguiseParseException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Keyed; import org.bukkit.Keyed;
import java.lang.reflect.Array;
import java.util.Map; import java.util.Map;
/** /**
@ -12,8 +13,9 @@ import java.util.Map;
*/ */
public class ParamInfoEnum<T> extends ParamInfo<T> { public class ParamInfoEnum<T> extends ParamInfo<T> {
public ParamInfoEnum(Class<T> paramClass, String name, String description) { public ParamInfoEnum(Class<T> paramClass, String name, String description) {
super(paramClass, name, name, description, super(paramClass, name, name, description, paramClass.isEnum() ? paramClass.getEnumConstants() :
paramClass.isEnum() ? paramClass.getEnumConstants() : (T[]) Bukkit.getRegistry((Class<Keyed>) paramClass).stream().toArray()); (T[]) (Bukkit.getServer() == null ? Array.newInstance(paramClass, 0) :
Bukkit.getRegistry((Class<Keyed>) paramClass).stream().toArray()));
} }
public ParamInfoEnum(Class paramClass, String name, String valueType, String description, T[] possibleValues) { public ParamInfoEnum(Class paramClass, String name, String valueType, String description, T[] possibleValues) {