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 64790b05..8d542fdd 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menu.java @@ -4,6 +4,7 @@ import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.api.PlayerMenuOpenEvent; import com.hibiscusmc.hmccosmetics.api.PlayerWardrobeLeaveEvent; 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.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; @@ -15,6 +16,7 @@ import dev.triumphteam.gui.guis.GuiItem; import me.clip.placeholderapi.PlaceholderAPI; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -123,31 +125,28 @@ public class Menu { MessagesUtil.sendDebugMessages("something went wrong! " + item); continue; } + ItemStack originalItem = item.clone(); + item = updateLore(player, item); - if (item.hasItemMeta()) { - List processedLore = new ArrayList<>(); + Type type = null; - if (item.getItemMeta().hasLore()) { - for (String loreLine : item.getItemMeta().getLore()) { - processedLore.add(PlaceholderAPI.setPlaceholders(player, loreLine)); - } - } - - ItemMeta itemMeta = item.getItemMeta(); - itemMeta.setLore(processedLore); - item.setItemMeta(itemMeta); + if (!config.node("type").virtual()) { + String typeId = config.node("type").getString(); + if (Types.isType(typeId)) type = Types.getType(typeId); } GuiItem guiItem = ItemBuilder.from(item).asGuiItem(); + + Type finalType = type; guiItem.setAction(event -> { - if (config.node("type").virtual()) return; - String type = config.node("type").getString(); - if (Types.isType(type)) Types.getType(type).run(user, config); + if (finalType != null) finalType.run(user, config); for (int i : slots) { - gui.updateItem(i, guiItem); + gui.updateItem(i, updateLore(player, originalItem.clone())); + MessagesUtil.sendDebugMessages("Updated slot " + i); } }); + MessagesUtil.sendDebugMessages("Added " + slots + " as " + guiItem + " in the menu"); gui.setItem(slots, guiItem); } @@ -177,4 +176,21 @@ public class Menu { for (int i = small; i <= max; i++) slots.add(i); return slots; } + + private ItemStack updateLore(Player player, ItemStack itemStack) { + if (itemStack.hasItemMeta()) { + List processedLore = new ArrayList<>(); + + if (itemStack.getItemMeta().hasLore()) { + for (String loreLine : itemStack.getItemMeta().getLore()) { + processedLore.add(PlaceholderAPI.setPlaceholders(player, loreLine)); + } + } + + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.setLore(processedLore); + itemStack.setItemMeta(itemMeta); + } + return itemStack; + } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java index dc2677ff..a1d11f02 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/type/Type.java @@ -1,8 +1,16 @@ package com.hibiscusmc.hmccosmetics.gui.type; +import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; +import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.spongepowered.configurate.ConfigurationNode; +import java.util.ArrayList; +import java.util.List; + public class Type { private String id; @@ -19,4 +27,9 @@ public class Type { public void run(CosmeticUser user, ConfigurationNode config) { // Override } + + public ItemMeta setLore(CosmeticUser user, ConfigurationNode config, ItemMeta itemMeta) { + //TODO: Finish this + return null; // Override + } } 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 0d9167d6..e1e2b3ab 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 @@ -8,6 +8,9 @@ import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu; import com.hibiscusmc.hmccosmetics.gui.type.Type; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; +import me.clip.placeholderapi.PlaceholderAPI; +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/hooks/PAPIHook.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java index 2e6b7b9f..bd52742a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/PAPIHook.java @@ -47,7 +47,7 @@ public class PAPIHook extends PlaceholderExpansion { CosmeticUser user = CosmeticUsers.getUser(player.getPlayer()); if (user == null) return null; - List placeholderArgs = Arrays.asList(params.split("_")); + List placeholderArgs = Arrays.asList(params.split("_", 3)); switch (placeholderArgs.get(0).toLowerCase()) { case "using": @@ -94,7 +94,14 @@ public class PAPIHook extends PlaceholderExpansion { } if (placeholderArgs.get(1) != null) { Cosmetic cosmetic = Cosmetics.getCosmetic(placeholderArgs.get(1)); - if (cosmetic == null) return "INVALID_COSMETIC"; + if (cosmetic == null) { + Cosmetic secondAttemptCosmetic = Cosmetics.getCosmetic(placeholderArgs.get(1) + "_" + placeholderArgs.get(2)); + if (secondAttemptCosmetic == null) { + return "INVALID_COSMETIC"; + } else { + cosmetic = secondAttemptCosmetic; + } + } return TranslationUtil.getTranslation("unlockedCosmetic", String.valueOf(user.canEquipCosmetic(cosmetic))); } case "equipped": @@ -103,7 +110,14 @@ public class PAPIHook extends PlaceholderExpansion { } if (placeholderArgs.get(1) != null) { Cosmetic cosmetic = Cosmetics.getCosmetic(placeholderArgs.get(1)); - if (cosmetic == null) return "INVALID_COSMETIC"; + if (cosmetic == null) { + Cosmetic secondAttemptCosmetic = Cosmetics.getCosmetic(placeholderArgs.get(1) + "_" + placeholderArgs.get(2)); + if (secondAttemptCosmetic == null) { + return "INVALID_COSMETIC"; + } else { + cosmetic = secondAttemptCosmetic; + } + } if (user.getCosmetic(cosmetic.getSlot()) == null) return "false"; if (cosmetic.getId() == user.getCosmetic(cosmetic.getSlot()).getId()) { return "true";