diff --git a/build.gradle.kts b/build.gradle.kts index 021ca54b..d4ea13ad 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "com.hibiscusmc" -version = "2.7.3-DEV" +version = "2.7.3-MIA" allprojects { apply(plugin = "java") diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/events/CosmeticTypeRegisterEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/events/CosmeticTypeRegisterEvent.java new file mode 100644 index 00000000..64452826 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/events/CosmeticTypeRegisterEvent.java @@ -0,0 +1,31 @@ +package com.hibiscusmc.hmccosmetics.api.events; + +import lombok.Getter; +import me.lojosho.shaded.configurate.ConfigurationNode; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +public class CosmeticTypeRegisterEvent extends Event { + private static final HandlerList handlers = new HandlerList(); + @Getter + private final String id; + @Getter + private final ConfigurationNode config; + + public CosmeticTypeRegisterEvent(String id, ConfigurationNode config) { + this.id = id; + this.config = config; + } + + @Override + @NotNull + public HandlerList getHandlers() { + return handlers; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticSlot.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticSlot.java index a9697ab6..60569768 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticSlot.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticSlot.java @@ -9,5 +9,6 @@ public enum CosmeticSlot { OFFHAND, BACKPACK, BALLOON, - EMOTE + EMOTE, + CUSTOM } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java index e8c5e6fc..dde62e1e 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java @@ -2,6 +2,7 @@ package com.hibiscusmc.hmccosmetics.cosmetic; import com.google.common.collect.HashBiMap; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.api.events.CosmeticTypeRegisterEvent; import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.cosmetic.types.*; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; @@ -105,12 +106,13 @@ public class Cosmetics { MessagesUtil.sendDebugMessages("Unable to create " + id + " because " + slotNode.getString() + " is not a valid slot!", Level.WARNING); continue; } - switch (CosmeticSlot.valueOf(cosmeticConfig.node("slot").getString())) { + switch (CosmeticSlot.valueOf(slotNode.getString())) { case BALLOON -> new CosmeticBalloonType(id, cosmeticConfig); case BACKPACK -> new CosmeticBackpackType(id, cosmeticConfig); case MAINHAND -> new CosmeticMainhandType(id, cosmeticConfig); case EMOTE -> new CosmeticEmoteType(id, cosmeticConfig); - default -> new CosmeticArmorType(id, cosmeticConfig); + case HELMET, CHESTPLATE, LEGGINGS, BOOTS, OFFHAND -> new CosmeticArmorType(id, cosmeticConfig); + default -> new CosmeticTypeRegisterEvent(id, cosmeticConfig).callEvent(); } } catch (Exception e) { if (Settings.isDebugMode()) e.printStackTrace();