From 3b4bf97140fc50a5e1115670db5bd340338eef43 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 1 Feb 2021 16:20:21 +0000 Subject: [PATCH] Added API support for adding custom talisman strengths --- .../talismans/meta/TalismanStrength.java | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java index 792eb27..f9785a0 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/meta/TalismanStrength.java @@ -1,29 +1,36 @@ package com.willfp.talismans.talismans.meta; import com.willfp.eco.util.config.updating.annotations.ConfigUpdater; -import com.willfp.eco.util.plugin.AbstractEcoPlugin; import com.willfp.talismans.TalismansPlugin; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.function.Supplier; -public enum TalismanStrength { +public class TalismanStrength { + /** + * All registered strengths. + */ + private static final Map REGISTERED = new HashMap<>(); /** * Weakest. */ - TALISMAN(() -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.talisman.color")), + public static final TalismanStrength TALISMAN = new TalismanStrength("talisman", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.talisman.color")); /** * Middle. */ - RING(() -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.ring.color")), + public static final TalismanStrength RING = new TalismanStrength("ring", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.ring.color")); /** * Strongest. */ - RELIC(() -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.relic.color")); + public static final TalismanStrength RELIC = new TalismanStrength("relic", () -> TalismansPlugin.getInstance().getConfigYml().getString("strengths.relic.color")); /** * The color. @@ -31,6 +38,12 @@ public enum TalismanStrength { @Getter private String color; + /** + * The name. + */ + @Getter + private String name; + /** * Supplier to get the color. */ @@ -39,10 +52,13 @@ public enum TalismanStrength { /** * Create a new strength. * + * @param name The name. * @param colorSupplier The color supplier. */ - TalismanStrength(@NotNull final Supplier colorSupplier) { + TalismanStrength(@NotNull final String name, + @NotNull final Supplier colorSupplier) { this.colorSupplier = colorSupplier; + this.name = name; this.color = colorSupplier.get(); } @@ -55,4 +71,24 @@ public enum TalismanStrength { strength.color = strength.colorSupplier.get(); } } + + /** + * Get talisman strength by name. + * + * @param name The name. + * @return The strength, or null if not found. + */ + @Nullable + public static TalismanStrength valueOf(@NotNull final String name) { + return REGISTERED.get(name); + } + + /** + * Get all registered talisman strengths. + * + * @return A collection of strengths. + */ + public static Collection values() { + return REGISTERED.values(); + } }