From ea66347f0920693bfe68de95751b9c13e48784f1 Mon Sep 17 00:00:00 2001 From: Draww Date: Fri, 15 Mar 2019 15:47:18 +0300 Subject: [PATCH] added redesign placeholder itemstack --- src/main/java/me/draww/superrup/RankMenu.java | 10 ++++---- .../superrup/utils/ItemStackBuilder.java | 20 ++++++++++++++++ .../me/draww/superrup/utils/ItemUtil.java | 23 +++++++++++++++++++ src/main/resources/ranks.yml | 2 +- 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/main/java/me/draww/superrup/RankMenu.java b/src/main/java/me/draww/superrup/RankMenu.java index 9aad4b0..8e51058 100644 --- a/src/main/java/me/draww/superrup/RankMenu.java +++ b/src/main/java/me/draww/superrup/RankMenu.java @@ -86,10 +86,10 @@ public RankMenu(Player player) { ranks.forEach(rank -> { if (!rank.getGroup().equals(group)) { if (finalIndexPlayer > rank.getQueue()) { - addLast(ElementUtil.emptyElement(rank.getIconLow())); + addLast(ElementUtil.emptyElement(ItemUtil.redesignPlaceholderItemStack(player, rank.getIconLow()))); } else if (finalIndexPlayer < rank.getQueue()) { if (rank.getQueue().equals(finalIndexPlayer + 1)) { - addLast(new BasicElement(rank.getIconJump(), + addLast(new BasicElement(ItemUtil.redesignPlaceholderItemStack(player, rank.getIconJump()), new BasicTarget(e -> { e.cancel(); boolean controlConditions = ConditionProvider.testAllConditions(player, rank); @@ -100,13 +100,13 @@ public RankMenu(Player player) { e.closeView(); }))); } else { - addLast(ElementUtil.emptyElement(rank.getIconHigh())); + addLast(ElementUtil.emptyElement(ItemUtil.redesignPlaceholderItemStack(player, rank.getIconHigh()))); } } else if (rank.getGroup().equals(group)) { - addLast(ElementUtil.emptyElement(rank.getIconEqual())); + addLast(ElementUtil.emptyElement(ItemUtil.redesignPlaceholderItemStack(player, rank.getIconEqual()))); } } else { - addLast(ElementUtil.emptyElement(rank.getIconEqual())); + addLast(ElementUtil.emptyElement(ItemUtil.redesignPlaceholderItemStack(player, rank.getIconEqual()))); } }); } diff --git a/src/main/java/me/draww/superrup/utils/ItemStackBuilder.java b/src/main/java/me/draww/superrup/utils/ItemStackBuilder.java index 8651b7f..70ca46a 100644 --- a/src/main/java/me/draww/superrup/utils/ItemStackBuilder.java +++ b/src/main/java/me/draww/superrup/utils/ItemStackBuilder.java @@ -77,6 +77,16 @@ public ItemStackBuilder lore(String... lines) { }); } + public ItemStackBuilder newLore(String... lines) { + return transformMeta(meta -> { + List lore = new ArrayList<>(); + for (String line : lines) { + lore.add(Text.colorize(line)); + } + meta.setLore(lore); + }); + } + public ItemStackBuilder lore(Iterable lines) { return transformMeta(meta -> { List lore = meta.getLore() == null ? new ArrayList<>() : meta.getLore(); @@ -87,6 +97,16 @@ public ItemStackBuilder lore(Iterable lines) { }); } + public ItemStackBuilder newLore(Iterable lines) { + return transformMeta(meta -> { + List lore = new ArrayList<>(); + for (String line : lines) { + lore.add(Text.colorize(line)); + } + meta.setLore(lore); + }); + } + public ItemStackBuilder clearLore() { return transformMeta(meta -> meta.setLore(new ArrayList<>())); } diff --git a/src/main/java/me/draww/superrup/utils/ItemUtil.java b/src/main/java/me/draww/superrup/utils/ItemUtil.java index f4d53b4..2deee92 100644 --- a/src/main/java/me/draww/superrup/utils/ItemUtil.java +++ b/src/main/java/me/draww/superrup/utils/ItemUtil.java @@ -7,6 +7,7 @@ import org.bukkit.FireworkEffect; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.*; import org.bukkit.potion.PotionData; @@ -21,6 +22,28 @@ public class ItemUtil { + public static ItemStack redesignPlaceholderItemStack(Player player, ItemStack item, String... variables) { + ItemMeta meta = item.getItemMeta(); + String newName = StringUtil.replacePlayerPlaceholders(player, meta.getDisplayName()); + if (variables.length > 1) { + for (int i = 0; i < variables.length; i += 2) { + newName = newName.replace(variables[i], variables[i + 1]); + } + } + List oldLores = meta.getLore(); + List newLores = new ArrayList<>(); + for (String lore : oldLores) { + String newLore = StringUtil.replacePlayerPlaceholders(player, lore); + if (variables.length > 1) { + for (int i = 0; i < variables.length; i += 2) { + newLore = newLore.replace(variables[i], variables[i + 1]); + } + } + newLores.add(newLore); + } + return ItemStackBuilder.of(item).name(Text.colorize(newName)).newLore(Text.colorizeList(newLores)).build(); + } + public static ItemStack deserializeItemStack(ConfigurationSection section, Rank rank) { //TODO: remove the return null effects if (section.contains("template") && section.isString("template")) { ConfigurationSection templateSection = Main.getInstance().getTemplateConfig().getConfigurationSection("icons." + section.getString("template")); diff --git a/src/main/resources/ranks.yml b/src/main/resources/ranks.yml index 0c908b5..f44a93f 100644 --- a/src/main/resources/ranks.yml +++ b/src/main/resources/ranks.yml @@ -7,7 +7,7 @@ example_rank_1: jump: material: DIAMOND_BLOCK:0 amount: 1 - name: '&b%rank%' + name: '&b%rank% - %player_name%' lores: - "&aYou need $500 to raise your rank." high: