From ee3558a2536a9138a060b5e3929f80c01f806d4f Mon Sep 17 00:00:00 2001 From: ShaneBee Date: Sat, 25 May 2024 11:40:20 -0700 Subject: [PATCH] Registry - more suggestions --- .../classes/registry/RegistryClassInfo.java | 24 ++----------------- ...RegistryUtils.java => RegistryParser.java} | 21 ++++++++++++---- 2 files changed, 19 insertions(+), 26 deletions(-) rename src/main/java/ch/njol/skript/classes/registry/{RegistryUtils.java => RegistryParser.java} (86%) diff --git a/src/main/java/ch/njol/skript/classes/registry/RegistryClassInfo.java b/src/main/java/ch/njol/skript/classes/registry/RegistryClassInfo.java index f62c93dce76..2a14ecca32e 100644 --- a/src/main/java/ch/njol/skript/classes/registry/RegistryClassInfo.java +++ b/src/main/java/ch/njol/skript/classes/registry/RegistryClassInfo.java @@ -19,14 +19,10 @@ package ch.njol.skript.classes.registry; import ch.njol.skript.classes.ClassInfo; -import ch.njol.skript.classes.Parser; import ch.njol.skript.expressions.base.EventValueExpression; import ch.njol.skript.lang.DefaultExpression; -import ch.njol.skript.lang.ParseContext; import org.bukkit.Keyed; import org.bukkit.Registry; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * This class can be used for easily creating ClassInfos for {@link Registry}s. @@ -46,28 +42,12 @@ public RegistryClassInfo(Class registryClass, Registry registry, String co */ public RegistryClassInfo(Class registryClass, Registry registry, String codeName, String languageNode, DefaultExpression defaultExpression) { super(registryClass, codeName); - RegistryUtils registryUtils = new RegistryUtils<>(registry, languageNode); + RegistryParser registryUtils = new RegistryParser<>(registry, languageNode); usage(registryUtils.getAllNames()) .supplier(registry::iterator) .serializer(new RegistrySerializer(registry)) .defaultExpression(defaultExpression) - .parser(new Parser() { - - @Override - public @Nullable R parse(String string, ParseContext context) { - return registryUtils.parse(string); - } - - @Override - public @NotNull String toString(R object, int flags) { - return registryUtils.toString(object, flags); - } - - @Override - public @NotNull String toVariableNameString(R object) { - return toString(object, 0); - } - }); + .parser(new RegistryParser(registry, codeName)); } } diff --git a/src/main/java/ch/njol/skript/classes/registry/RegistryUtils.java b/src/main/java/ch/njol/skript/classes/registry/RegistryParser.java similarity index 86% rename from src/main/java/ch/njol/skript/classes/registry/RegistryUtils.java rename to src/main/java/ch/njol/skript/classes/registry/RegistryParser.java index fab2bd9da7a..7b5eed73956 100644 --- a/src/main/java/ch/njol/skript/classes/registry/RegistryUtils.java +++ b/src/main/java/ch/njol/skript/classes/registry/RegistryParser.java @@ -18,6 +18,7 @@ */ package ch.njol.skript.classes.registry; +import ch.njol.skript.classes.Parser; import ch.njol.skript.localization.Language; import ch.njol.skript.localization.Noun; import ch.njol.util.NonNullPair; @@ -25,6 +26,7 @@ import org.bukkit.Keyed; import org.bukkit.NamespacedKey; import org.bukkit.Registry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -32,11 +34,11 @@ import java.util.Map; /** - * Utility class for {@link Registry} + * A parser based on a {@link Registry} used to parse data from a string or turn data into a string. * * @param Registry class */ -public class RegistryUtils { +public class RegistryParser extends Parser { private final Registry registry; private final String languageNode; @@ -44,7 +46,7 @@ public class RegistryUtils { private final Map names = new HashMap<>(); private final Map parseMap = new HashMap<>(); - public RegistryUtils(Registry registry, String languageNode) { + public RegistryParser(Registry registry, String languageNode) { assert !languageNode.isEmpty() && !languageNode.endsWith(".") : languageNode; this.registry = registry; this.languageNode = languageNode; @@ -119,10 +121,21 @@ public R parse(String input) { * @param flags not currently used * @return A string representation of the registry object. */ - public String toString(R object, int flags) { + public @NotNull String toString(R object, int flags) { return names.get(object); } + /** + * Returns a registry object's string representation in a variable name. + * + * @param object Object to represent in a variable name. + * @return The given object's representation in a variable name. + */ + @Override + public @NotNull String toVariableNameString(R object) { + return toString(object, 0); + } + /** * @return A comma-separated string containing a list of all names representing the registry. * Note that some entries may represent the same registry object.