diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java index 04900fc..7adaa0d 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/page/handler/PageableHandler.java @@ -2,7 +2,12 @@ package cn.hamster3.mc.plugin.core.bukkit.page.handler; import cn.hamster3.mc.plugin.core.bukkit.page.ButtonGroup; import cn.hamster3.mc.plugin.core.bukkit.page.PageConfig; +import lombok.Getter; +import lombok.Setter; +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.Sound; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; @@ -27,28 +32,36 @@ import java.util.Map; @SuppressWarnings("unused") public abstract class PageableHandler extends FixedPageHandler { private static final ItemStack EMPTY_STACK = new ItemStack(Material.AIR); - + private final HashMap elementSlot; + @Setter private String previewButtonName = "preview"; + @Setter private String nextButtonName = "next"; + @Setter private String barrierButtonName = "barrier"; + @Setter + @Getter private String elementButtonName = "element"; - + @Setter + @Getter private int page; - private HashMap elementSlot; public PageableHandler(@NotNull HumanEntity player) { super(player); this.page = 0; + elementSlot = new HashMap<>(); } public PageableHandler(@NotNull HumanEntity player, int page) { super(player); this.page = page; + elementSlot = new HashMap<>(); } public PageableHandler(@NotNull PageConfig config, @NotNull HumanEntity player, int page) { super(config, player); this.page = page; + elementSlot = new HashMap<>(); } @NotNull @@ -56,14 +69,6 @@ public abstract class PageableHandler extends FixedPageHandler { public abstract void onClickElement(@NotNull ClickType clickType, @NotNull InventoryAction action, @NotNull E element); - public String getElementButtonName() { - return elementButtonName; - } - - public void setElementButtonName(String elementButtonName) { - this.elementButtonName = elementButtonName; - } - @NotNull public String getElementButtonName(@NotNull E element) { return elementButtonName; @@ -128,7 +133,7 @@ public abstract class PageableHandler extends FixedPageHandler { ArrayList buttonIndexes = group.getButtonAllIndex(elementButtonName); int pageSize = buttonIndexes.size(); // 一页有多少个按钮 - elementSlot = new HashMap<>(); + elementSlot.clear(); HashMap variables = getPageVariables(); @@ -166,21 +171,34 @@ public abstract class PageableHandler extends FixedPageHandler { if (meta == null) { return; } + HumanEntity player = getPlayer(); if (meta.hasDisplayName()) { String displayName = meta.getDisplayName(); for (Map.Entry entry : variables.entrySet()) { displayName = displayName.replace(entry.getKey(), entry.getValue()); } + if (player instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + displayName = PlaceholderAPI.setPlaceholders((OfflinePlayer) player, displayName); + } meta.setDisplayName(displayName); } List lore = meta.getLore(); if (lore != null) { - for (int i = 0; i < lore.size(); i++) { - String s = lore.get(i); - for (Map.Entry entry : variables.entrySet()) { - s = s.replace(entry.getKey(), entry.getValue()); - } - lore.set(i, s); + if (player instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + lore.replaceAll(s -> { + for (Map.Entry entry : variables.entrySet()) { + s = s.replace(entry.getKey(), entry.getValue()); + s = PlaceholderAPI.setPlaceholders((OfflinePlayer) player, s); + } + return s; + }); + } else { + lore.replaceAll(s -> { + for (Map.Entry entry : variables.entrySet()) { + s = s.replace(entry.getKey(), entry.getValue()); + } + return s; + }); } meta.setLore(lore); } @@ -203,23 +221,4 @@ public abstract class PageableHandler extends FixedPageHandler { return elementSlot; } - public int getPage() { - return page; - } - - public void setPage(int page) { - this.page = page; - } - - public void setPreviewButtonName(String previewButtonName) { - this.previewButtonName = previewButtonName; - } - - public void setNextButtonName(String nextButtonName) { - this.nextButtonName = nextButtonName; - } - - public void setBarrierButtonName(String barrierButtonName) { - this.barrierButtonName = barrierButtonName; - } }