From af6c2987e92f11143bb6dcba4977fbf94a56a5d6 Mon Sep 17 00:00:00 2001 From: DerFrZocker Date: Tue, 23 May 2023 21:25:28 +0200 Subject: [PATCH] Make missing Frog variant abstract --- src/main/java/org/bukkit/Registry.java | 2 +- src/main/java/org/bukkit/entity/Frog.java | 49 +++++++++++++++++------ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java index af6e88e5..e9fe44b0 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java @@ -215,7 +215,7 @@ public interface Registry extends Iterable { * * @see Frog.Variant */ - Registry FROG_VARIANT = new SimpleRegistry<>(Frog.Variant.class); + Registry FROG_VARIANT = Objects.requireNonNull(Bukkit.getRegistry(Frog.Variant.class), "No registry present for Frog Variant. This is a bug."); /** * Game events. * diff --git a/src/main/java/org/bukkit/entity/Frog.java b/src/main/java/org/bukkit/entity/Frog.java index 0960bdbb..51aac622 100644 --- a/src/main/java/org/bukkit/entity/Frog.java +++ b/src/main/java/org/bukkit/entity/Frog.java @@ -1,8 +1,11 @@ package org.bukkit.entity; -import java.util.Locale; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import org.bukkit.Keyed; import org.bukkit.NamespacedKey; +import org.bukkit.Registry; +import org.bukkit.util.OldEnum; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -44,30 +47,50 @@ public interface Frog extends Animals { /** * Represents the variant of a frog - ie its color. */ - public enum Variant implements Keyed { + abstract class Variant extends OldEnum implements Keyed { /** * Temperate (brown-orange) frog. */ - TEMPERATE, + public static final Variant TEMPERATE = getVariant("temperate"); /** * Warm (gray) frog. */ - WARM, + public static final Variant WARM = getVariant("warm"); /** * Cold (green) frog. */ - COLD; - private final NamespacedKey key; - - private Variant() { - this.key = NamespacedKey.minecraft(name().toLowerCase(Locale.ROOT)); - } + public static final Variant COLD = getVariant("cold"); @NotNull - @Override - public NamespacedKey getKey() { - return key; + private static Variant getVariant(@NotNull String key) { + NamespacedKey namespacedKey = NamespacedKey.minecraft(key); + Variant variant = Registry.FROG_VARIANT.get(namespacedKey); + Preconditions.checkNotNull(variant, "No frog variant found for %s. This is a bug.", namespacedKey); + return variant; + } + + /** + * @param name of the frog variant. + * @return the frog variant with the given name. + * @deprecated only for backwards compatibility, use {@link Registry#get(NamespacedKey)} instead. + */ + @NotNull + @Deprecated + public static Variant valueOf(@NotNull String name) { + Variant variant = Registry.FROG_VARIANT.get(NamespacedKey.fromString(name.toLowerCase())); + Preconditions.checkArgument(variant != null, "No frog variant found with the name %s", name); + return variant; + } + + /** + * @return an array of all known frog variants. + * @deprecated use {@link Registry#iterator()}. + */ + @NotNull + @Deprecated + public static Variant[] values() { + return Lists.newArrayList(Registry.FROG_VARIANT).toArray(new Variant[0]); } } }