diff --git a/build.gradle.kts b/build.gradle.kts index 006835af..55ea194e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -68,9 +68,6 @@ allprojects { compileOnly("com.ticxo.modelengine:api:R3.0.1") compileOnly("com.github.oraxen:oraxen:-SNAPSHOT") compileOnly("com.github.LoneDev6:API-ItemsAdder:3.2.5") - compileOnly("com.mineinabyss:idofront:0.12.111") - compileOnly("com.mineinabyss:geary-papermc-core:0.19.113") - compileOnly("com.mineinabyss:looty:0.8.67") compileOnly("com.sk89q.worldguard:worldguard-bukkit:7.1.0-SNAPSHOT") compileOnly("it.unimi.dsi:fastutil:8.5.11") @@ -157,8 +154,8 @@ bukkit { main = "com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin" apiVersion = "1.16" authors = listOf("LoJoSho") - depend = listOf("ProtocolLib", "PlaceholderAPI") - softDepend = listOf("ModelEngine", "Oraxen", "ItemsAdder", "Looty", "HMCColor", "WorldGuard", "MythicMobs") + depend = listOf("ProtocolLib") + softDepend = listOf("ModelEngine", "Oraxen", "ItemsAdder", "Looty", "HMCColor", "WorldGuard", "MythicMobs", "PlaceholderAPI") version = "${project.version}" commands { @@ -230,4 +227,4 @@ bukkit { java { toolchain.languageVersion.set(JavaLanguageVersion.of(17 )) -} +} \ No newline at end of file diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java index 3312a40a..3096f180 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java @@ -12,8 +12,8 @@ import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics; import com.hibiscusmc.hmccosmetics.database.Database; import com.hibiscusmc.hmccosmetics.gui.Menus; -import com.hibiscusmc.hmccosmetics.hooks.PAPIHook; -import com.hibiscusmc.hmccosmetics.hooks.items.ItemHooks; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; +import com.hibiscusmc.hmccosmetics.hooks.placeholders.HMCPlaceholderExpansion; import com.hibiscusmc.hmccosmetics.hooks.worldguard.WGHook; import com.hibiscusmc.hmccosmetics.hooks.worldguard.WGListener; import com.hibiscusmc.hmccosmetics.listener.PlayerConnectionListener; @@ -26,7 +26,6 @@ import com.jeff_media.updatechecker.UpdateChecker; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.permissions.Permission; @@ -105,11 +104,6 @@ public final class HMCCosmeticsPlugin extends JavaPlugin { // Database new Database(); - // PAPI - if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { - new PAPIHook().register(); - } - // ModelEngine if (Bukkit.getPluginManager().getPlugin("ModelEngine") != null) { hasModelEngine = true; @@ -197,8 +191,8 @@ public final class HMCCosmeticsPlugin extends JavaPlugin { throw new RuntimeException(e); } - // ItemHooks - ItemHooks.setup(); + // Misc Hooks setup (like items) + Hooks.setup(); // Cosmetics setup Cosmetics.setup(); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/serializer/ItemSerializer.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/serializer/ItemSerializer.java index 48f74301..70c34044 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/serializer/ItemSerializer.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/serializer/ItemSerializer.java @@ -1,7 +1,7 @@ package com.hibiscusmc.hmccosmetics.config.serializer; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; -import com.hibiscusmc.hmccosmetics.hooks.items.ItemHooks; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.ServerUtils; import com.hibiscusmc.hmccosmetics.util.builder.ColorBuilder; @@ -74,7 +74,7 @@ public class ItemSerializer implements TypeSerializer { String material = materialNode.getString(); - ItemStack item = ItemHooks.getItem(material); + ItemStack item = Hooks.getItem(material); if (item == null) { HMCCosmeticsPlugin.getInstance().getLogger().severe("Invalid Material -> " + material); return new ItemStack(Material.AIR); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java index 663d94db..46d0cdf7 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java @@ -5,22 +5,18 @@ import com.hibiscusmc.hmccosmetics.api.PlayerMenuOpenEvent; import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer; import com.hibiscusmc.hmccosmetics.gui.type.Type; import com.hibiscusmc.hmccosmetics.gui.type.Types; -import com.hibiscusmc.hmccosmetics.hooks.PAPIHook; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; -import com.hibiscusmc.hmccosmetics.user.CosmeticUsers; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.misc.Adventure; import com.hibiscusmc.hmccosmetics.util.misc.Placeholder; import dev.triumphteam.gui.builder.item.ItemBuilder; import dev.triumphteam.gui.guis.Gui; import dev.triumphteam.gui.guis.GuiItem; -import me.clip.placeholderapi.PlaceholderAPI; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.serialize.SerializationException; diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java index 32f1a02c..cfd717b7 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeCosmetic.java @@ -7,7 +7,7 @@ import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticArmorType; import com.hibiscusmc.hmccosmetics.gui.action.Actions; import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu; import com.hibiscusmc.hmccosmetics.gui.type.Type; -import com.hibiscusmc.hmccosmetics.hooks.PAPIHook; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.misc.StringUtils; @@ -123,11 +123,15 @@ public class TypeCosmetic extends Type { lockedName = StringUtils.parseStringToString(Utils.replaceIfNull(itemConfig.node("locked-name").getString(), "")); } - itemMeta.setDisplayName(PlaceholderAPI.setPlaceholders(user.getPlayer(), lockedName)); + if (Hooks.isActiveHook("PlaceHolderAPI")) { + lockedName = PlaceholderAPI.setPlaceholders(user.getPlayer(), lockedName); + } + itemMeta.setDisplayName(lockedName); if (itemMeta.hasLore()) { itemMeta.getLore().clear(); for (String loreLine : lockedLore) { - processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine)); + if (Hooks.isActiveHook("PlaceHolderAPI")) loreLine = PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine); + processedLore.add(loreLine); } } } catch (Exception e) { @@ -142,11 +146,11 @@ public class TypeCosmetic extends Type { private ItemMeta processLoreLines(CosmeticUser user, ItemMeta itemMeta) { List processedLore = new ArrayList<>(); - if (PAPIHook.isPAPIEnabled()) { - if (itemMeta.hasLore()) { - for (String loreLine : itemMeta.getLore()) { - processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine)); - } + if (itemMeta.hasLore()) { + for (String loreLine : itemMeta.getLore()) { + if (Hooks.isActiveHook("PlaceholderAPI")) + loreLine = PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine); + processedLore.add(loreLine); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java index d2ac006f..6ede404f 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/types/TypeEmpty.java @@ -2,7 +2,8 @@ package com.hibiscusmc.hmccosmetics.gui.type.types; import com.hibiscusmc.hmccosmetics.gui.action.Actions; import com.hibiscusmc.hmccosmetics.gui.type.Type; -import com.hibiscusmc.hmccosmetics.hooks.PAPIHook; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; +import com.hibiscusmc.hmccosmetics.hooks.placeholders.HMCPlaceholderExpansion; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.event.inventory.ClickType; @@ -55,11 +56,11 @@ public class TypeEmpty extends Type { public ItemMeta setLore(CosmeticUser user, ConfigurationNode config, ItemMeta itemMeta) { List processedLore = new ArrayList<>(); - if (PAPIHook.isPAPIEnabled()) { - if (itemMeta.hasLore()) { - for (String loreLine : itemMeta.getLore()) { - processedLore.add(PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine)); - } + if (itemMeta.hasLore()) { + for (String loreLine : itemMeta.getLore()) { + if (Hooks.isActiveHook("PlaceholderAPI")) + loreLine = PlaceholderAPI.setPlaceholders(user.getPlayer(), loreLine); + processedLore.add(loreLine); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hook.java similarity index 50% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hook.java index fac151c5..c8aaa450 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hook.java @@ -1,20 +1,25 @@ -package com.hibiscusmc.hmccosmetics.hooks.items; +package com.hibiscusmc.hmccosmetics.hooks; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class ItemHook implements Listener { +public class Hook implements Listener { private String id; private boolean active; + private boolean itemHook; - public ItemHook(String id) { + public Hook(String id) { this.id = id; active = false; - ItemHooks.addItemHook(this); + Hooks.addHook(this); } - public ItemStack get(String itemid) { + public void load() { + // Override + } + + public ItemStack getItem(String itemid) { return null; // Override } @@ -30,4 +35,12 @@ public class ItemHook implements Listener { public boolean getActive() { return this.active; } + + public void setEnabledItemHook(boolean enabled) { + itemHook = enabled; + } + + public boolean hasEnabledItemHook() { + return itemHook; + } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java new file mode 100644 index 00000000..84a204d8 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/Hooks.java @@ -0,0 +1,67 @@ +package com.hibiscusmc.hmccosmetics.hooks; + +import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.hooks.items.*; +import com.hibiscusmc.hmccosmetics.hooks.placeholders.HookPlaceholderAPI; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import java.util.HashMap; + +public class Hooks { + + private static HashMap hooks = new HashMap<>(); + private static HookOraxen ORAXEN_HOOK = new HookOraxen(); + private static HookItemAdder ITEMADDER_HOOK = new HookItemAdder(); + private static HookMythic MYTHIC_HOOK = new HookMythic(); + private static HookHMCCosmetics HMCCOSMETIC_HOOK = new HookHMCCosmetics(); + private static HookPlaceholderAPI PAPI_HOOK = new HookPlaceholderAPI(); + + public static Hook getHook(String id) { + return hooks.get(id.toLowerCase()); + } + + public static boolean isItemHook(String id) { + return hooks.containsKey(id.toLowerCase()); + } + + public static void addHook(Hook hook) { + hooks.put(hook.getId().toLowerCase(), hook); + } + + public static void setup() { + for (Hook hook : hooks.values()) { + if (Bukkit.getPluginManager().getPlugin(hook.getId()) != null) { + HMCCosmeticsPlugin.getInstance().getServer().getPluginManager().registerEvents(hook, HMCCosmeticsPlugin.getInstance()); + hook.setActive(true); + hook.load(); + HMCCosmeticsPlugin.getInstance().getLogger().info("Successfully hooked into " + hook.getId()); + } + } + } + + public static ItemStack getItem(String raw) { + if (!raw.contains(":")) { + Material mat = Material.getMaterial(raw.toUpperCase()); + if (mat == null) return null; + return new ItemStack(mat); + } + // Ex. Oraxen:BigSword + // split[0] is the plugin name + // split[1] is the item name + String[] split = raw.split(":", 2); + + if (!isItemHook(split[0])) return null; + Hook hook = getHook(split[0]); + if (!hook.hasEnabledItemHook()) return null; + if (!hook.getActive()) return null; + ItemStack item = hook.getItem(split[1]); + return item; + } + + public static boolean isActiveHook(String id) { + if (!hooks.containsKey(getHook(id))) return false; + return hooks.get(getHook(id)).getActive(); + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HMCCosmeticsHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookHMCCosmetics.java similarity index 65% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HMCCosmeticsHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookHMCCosmetics.java index f5b1957a..96ebe9b0 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HMCCosmeticsHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookHMCCosmetics.java @@ -2,17 +2,19 @@ package com.hibiscusmc.hmccosmetics.hooks.items; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics; +import com.hibiscusmc.hmccosmetics.hooks.Hook; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class HMCCosmeticsHook extends ItemHook implements Listener { +public class HookHMCCosmetics extends Hook implements Listener { - public HMCCosmeticsHook() { + public HookHMCCosmetics() { super("HMCCosmetics"); + setEnabledItemHook(true); } @Override - public ItemStack get(String itemid) { + public ItemStack getItem(String itemid) { Cosmetic cosmetic = Cosmetics.getCosmetic(itemid); if (cosmetic == null) return null; return cosmetic.getItem(); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemAdderHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookItemAdder.java similarity index 82% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemAdderHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookItemAdder.java index c1c9d6f6..f74fb16d 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemAdderHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookItemAdder.java @@ -1,6 +1,7 @@ package com.hibiscusmc.hmccosmetics.hooks.items; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.hooks.Hook; import dev.lone.itemsadder.api.CustomStack; import dev.lone.itemsadder.api.Events.ItemsAdderLoadDataEvent; import org.bukkit.Material; @@ -8,18 +9,19 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class ItemAdderHook extends ItemHook implements Listener { +public class HookItemAdder extends Hook implements Listener { // I hate IA, this overcomplicate stuff is so unneeded if it just did its stuff when its needed. private boolean enabled = false; - public ItemAdderHook() { + public HookItemAdder() { super("itemsadder"); + setEnabledItemHook(true); } @Override - public ItemStack get(String itemid) { + public ItemStack getItem(String itemid) { if (enabled) { CustomStack stack = CustomStack.getInstance(itemid); if (stack == null) return null; diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/LootyHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookLooty.java similarity index 68% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/LootyHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookLooty.java index 53acc3fa..bda7021f 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/LootyHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookLooty.java @@ -1,18 +1,20 @@ package com.hibiscusmc.hmccosmetics.hooks.items; +import com.hibiscusmc.hmccosmetics.hooks.Hook; import com.mineinabyss.geary.prefabs.PrefabKey; import com.mineinabyss.looty.LootyFactory; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class LootyHook extends ItemHook implements Listener { +public class HookLooty extends Hook implements Listener { - public LootyHook() { + public HookLooty() { super("looty"); + setEnabledItemHook(true); } @Override - public ItemStack get(String itemid) { + public ItemStack getItem(String itemid) { PrefabKey prefabKey = PrefabKey.Companion.ofOrNull(itemid); if (prefabKey == null) return null; return LootyFactory.INSTANCE.createFromPrefab(prefabKey); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/MythicHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookMythic.java similarity index 58% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/MythicHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookMythic.java index 4da2ee52..ef07b22d 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/MythicHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookMythic.java @@ -1,16 +1,18 @@ package com.hibiscusmc.hmccosmetics.hooks.items; +import com.hibiscusmc.hmccosmetics.hooks.Hook; import io.lumine.mythic.bukkit.MythicBukkit; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class MythicHook extends ItemHook implements Listener { - public MythicHook() { +public class HookMythic extends Hook implements Listener { + public HookMythic() { super("mythicmobs"); + setEnabledItemHook(true); } @Override - public ItemStack get(String itemid) { + public ItemStack getItem(String itemid) { return MythicBukkit.inst().getItemManager().getItemStack(itemid); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/OraxenHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookOraxen.java similarity index 65% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/OraxenHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookOraxen.java index fd3c1b84..baf9bcb9 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/OraxenHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/HookOraxen.java @@ -1,18 +1,20 @@ package com.hibiscusmc.hmccosmetics.hooks.items; +import com.hibiscusmc.hmccosmetics.hooks.Hook; import io.th0rgal.oraxen.api.OraxenItems; import io.th0rgal.oraxen.items.ItemBuilder; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -public class OraxenHook extends ItemHook implements Listener { +public class HookOraxen extends Hook implements Listener { - public OraxenHook() { + public HookOraxen() { super("oraxen"); + setEnabledItemHook(true); } @Override - public ItemStack get(String itemid) { + public ItemStack getItem(String itemid) { ItemBuilder builder = OraxenItems.getItemById(itemid); if (builder == null) return null; return builder.build(); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHooks.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHooks.java deleted file mode 100644 index 19b929d4..00000000 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/items/ItemHooks.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hibiscusmc.hmccosmetics.hooks.items; - -import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -import java.util.HashMap; - -public class ItemHooks { - - private static HashMap itemHooks = new HashMap<>(); - private static OraxenHook ORAXEN_HOOK = new OraxenHook(); - private static LootyHook LOOTY_HOOK = new LootyHook(); - private static ItemAdderHook ITEMADDER_HOOK = new ItemAdderHook(); - private static MythicHook MYTHIC_HOOK = new MythicHook(); - private static HMCCosmeticsHook HMCCOSMETIC_HOOK = new HMCCosmeticsHook(); - - public static ItemHook getItemHook(String id) { - return itemHooks.get(id.toLowerCase()); - } - - public static boolean isItemHook(String id) { - return itemHooks.containsKey(id.toLowerCase()); - } - - public static void addItemHook(ItemHook hook) { - itemHooks.put(hook.getId().toLowerCase(), hook); - } - - public static void setup() { - for (ItemHook itemHook : itemHooks.values()) { - if (Bukkit.getPluginManager().getPlugin(itemHook.getId()) != null) { - HMCCosmeticsPlugin.getInstance().getServer().getPluginManager().registerEvents(itemHook, HMCCosmeticsPlugin.getInstance()); - itemHook.setActive(true); - HMCCosmeticsPlugin.getInstance().getLogger().info("Successfully hooked into " + itemHook.getId()); - } - } - } - - public static ItemStack getItem(String raw) { - if (!raw.contains(":")) { - Material mat = Material.getMaterial(raw.toUpperCase()); - if (mat == null) return null; - return new ItemStack(mat); - } - // Ex. Oraxen:BigSword - // split[0] is the plugin name - // split[1] is the item name - String[] split = raw.split(":", 2); - - if (!isItemHook(split[0])) return null; - ItemHook itemHook = getItemHook(split[0]); - if (!itemHook.getActive()) return null; - ItemStack item = itemHook.get(split[1]); - return item; - } -} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HMCPlaceholderExpansion.java similarity index 96% rename from common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java rename to common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HMCPlaceholderExpansion.java index ba5cfe26..3aec14c1 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HMCPlaceholderExpansion.java @@ -1,4 +1,4 @@ -package com.hibiscusmc.hmccosmetics.hooks; +package com.hibiscusmc.hmccosmetics.hooks.placeholders; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; @@ -16,11 +16,11 @@ import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.List; -public class PAPIHook extends PlaceholderExpansion { +public class HMCPlaceholderExpansion extends PlaceholderExpansion { private static boolean papiEnabled = false; - public PAPIHook() { + public HMCPlaceholderExpansion() { papiEnabled = true; } @@ -66,6 +66,7 @@ public class PAPIHook extends PlaceholderExpansion { if (placeholderArgs.get(1) != null) { CosmeticSlot slot = CosmeticSlot.valueOf(placeholderArgs.get(1).toUpperCase()); if (slot == null) return null; + if (user.getCosmetic(slot) == null) return null; if (placeholderArgs.size() == 2) return user.getCosmetic(slot).getId(); switch (placeholderArgs.get(2).toLowerCase()) { case "material" -> { @@ -161,8 +162,4 @@ public class PAPIHook extends PlaceholderExpansion { } return null; } - - public static boolean isPAPIEnabled() { - return papiEnabled; - } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HookPlaceholderAPI.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HookPlaceholderAPI.java new file mode 100644 index 00000000..94e3f739 --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/placeholders/HookPlaceholderAPI.java @@ -0,0 +1,15 @@ +package com.hibiscusmc.hmccosmetics.hooks.placeholders; + +import com.hibiscusmc.hmccosmetics.hooks.Hook; + +public class HookPlaceholderAPI extends Hook { + + public HookPlaceholderAPI() { + super("placeholderapi"); + } + + @Override + public void load() { + new HMCPlaceholderExpansion().register(); + } +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/MessagesUtil.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/MessagesUtil.java index 2fd70554..b6413093 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/MessagesUtil.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/MessagesUtil.java @@ -3,7 +3,8 @@ package com.hibiscusmc.hmccosmetics.util; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.config.WardrobeSettings; -import com.hibiscusmc.hmccosmetics.hooks.PAPIHook; +import com.hibiscusmc.hmccosmetics.hooks.Hooks; +import com.hibiscusmc.hmccosmetics.hooks.placeholders.HMCPlaceholderExpansion; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.misc.Adventure; import me.clip.placeholderapi.PlaceholderAPI; @@ -95,7 +96,7 @@ public class MessagesUtil { if (!messages.containsKey(key)) return null; if (messages.get(key) == null) return null; String message = messages.get(key); - if (PAPIHook.isPAPIEnabled() && player != null) message = PlaceholderAPI.setPlaceholders(player, message); + if (Hooks.isActiveHook("PlaceholderAPI") && player != null) message = PlaceholderAPI.setPlaceholders(player, message); message = message.replaceAll("%prefix%", prefix); if (placeholders != null ) { return Adventure.MINI_MESSAGE.deserialize(message, placeholders); @@ -113,7 +114,7 @@ public class MessagesUtil { public static Component processStringNoKey(Player player, String message, TagResolver placeholders) { message = message.replaceAll("%prefix%", prefix); - if (PAPIHook.isPAPIEnabled() && player != null) message = PlaceholderAPI.setPlaceholders(player, message); + if (Hooks.isActiveHook("PlaceholderAPI") && player != null) message = PlaceholderAPI.setPlaceholders(player, message); if (placeholders != null ) { return Adventure.MINI_MESSAGE.deserialize(message, placeholders); } @@ -122,7 +123,7 @@ public class MessagesUtil { public static String processStringNoKeyString(Player player, String message) { message = message.replaceAll("%prefix%", prefix); - if (PAPIHook.isPAPIEnabled() && player != null) message = PlaceholderAPI.setPlaceholders(player, message); + if (Hooks.isActiveHook("PlaceholderAPI") && player != null) message = PlaceholderAPI.setPlaceholders(player, message); return message; }