From 58c955a00f15956f33e4f64d9d3433a9c9e6cbd2 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Wed, 9 Jul 2025 18:06:22 -0500 Subject: [PATCH] feat: expose the config for a cosmetic if available --- .../hmccosmetics/cosmetic/Cosmetic.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java index a79fd524..a98e9d8f 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java @@ -12,6 +12,7 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -56,8 +57,12 @@ public abstract class Cosmetic { /** Whether the cosmetic is dyeable or not. */ private boolean dyeable; + /** The config for the cosmetic */ + private ConfigurationNode config; + protected Cosmetic(@NotNull String id, @NotNull ConfigurationNode config) { this.id = id; + this.config = config; if (!config.node("permission").virtual()) { this.permission = config.node("permission").getString(); @@ -135,4 +140,14 @@ public abstract class Cosmetic { throw new RuntimeException(e); } } + + /** + * While cosmetics registered in HMCC are made through a configuration, cosmetics registered from other plugins + * may not and instead opt for {@link Cosmetic#Cosmetic(String, String, ItemStack, String, CosmeticSlot, boolean)}, which doesn't use a config. + * This should be used only for reference. + */ + @ApiStatus.Experimental + public @Nullable ConfigurationNode getConfig() { + return config; + } }