From 434d0775330c7153c7cc2f6905b946beecd926d2 Mon Sep 17 00:00:00 2001 From: okx-code Date: Sun, 4 Nov 2018 14:36:49 +0000 Subject: [PATCH] fix autorankup error, allow requirement placeholders in items in the GUI --- build.gradle | 2 +- src/main/java/sh/okx/rankup/Rankup.java | 28 +++++++++++------ src/main/java/sh/okx/rankup/gui/Gui.java | 31 +++++++++++-------- .../rankup/messages/EmptyMessageBuilder.java | 2 +- src/main/resources/plugin.yml | 2 +- 5 files changed, 39 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index 2304aee..d987d83 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'sh.okx' -version '3.2.1-beta' +version '3.2.1-beta.1' repositories { mavenCentral() diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/Rankup.java index f743165..d68c2bb 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/Rankup.java @@ -21,6 +21,7 @@ import sh.okx.rankup.commands.RanksCommand; import sh.okx.rankup.commands.RankupCommand; import sh.okx.rankup.gui.Gui; import sh.okx.rankup.gui.GuiListener; +import sh.okx.rankup.messages.EmptyMessageBuilder; import sh.okx.rankup.messages.Message; import sh.okx.rankup.messages.MessageBuilder; import sh.okx.rankup.messages.Variable; @@ -319,8 +320,8 @@ public class Rankup extends JavaPlugin { Rank rank = rankups.getByPlayer(player); if (rank == null) { // check if in ladder getMessage(Message.NOT_IN_LADDER) - .replace(Variable.PLAYER, player.getName()) .failIf(!message) + .replace(Variable.PLAYER, player.getName()) .send(player); return false; } else if (rank.isLast()) { // check if they are at the highest rank @@ -339,10 +340,12 @@ public class Rankup extends JavaPlugin { .send(player); return false; } else if (!rank.hasRequirements(player)) { // check if they can afford it - replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET) - .failIf(!message) - .replaceRanks(player, rank, rankups.next(rank)), player, rank) - .send(player); + if (message) { + replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET) + .failIf(!message) + .replaceRanks(player, rank, rankups.next(rank)), player, rank) + .send(player); + } return false; } else if (message && checkCooldown(player, rank)) { return false; @@ -403,11 +406,12 @@ public class Rankup extends JavaPlugin { .send(player); return false; } else if (!prestige.hasRequirements(player)) { // check if they can afford it - replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET) - .failIf(!message) - .replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige) - .replaceFromTo(prestige) - .send(player); + if(message) { + replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET) + .replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige) + .replaceFromTo(prestige) + .send(player); + } return false; } else if (checkCooldown(player, prestige)) { return false; @@ -417,6 +421,10 @@ public class Rankup extends JavaPlugin { } public MessageBuilder replaceMoneyRequirements(MessageBuilder builder, CommandSender sender, Rank rank) { + if(builder instanceof EmptyMessageBuilder) { + return builder; + } + Requirement money = rank.getRequirement("money"); if(money != null) { Double amount = null; diff --git a/src/main/java/sh/okx/rankup/gui/Gui.java b/src/main/java/sh/okx/rankup/gui/Gui.java index 2eee2c1..a0ce837 100644 --- a/src/main/java/sh/okx/rankup/gui/Gui.java +++ b/src/main/java/sh/okx/rankup/gui/Gui.java @@ -35,14 +35,19 @@ public class Gui implements InventoryHolder { public static Gui of(Player player, Rank oldRank, Rank rank, Rankup plugin) { ConfigurationSection config = plugin.getConfig().getConfigurationSection("gui"); ItemStack[] items = new ItemStack[config.getInt("rows") * 9]; - addItem(items, config.getConfigurationSection("rankup"), player, oldRank, rank); - addItem(items, config.getConfigurationSection("cancel"), player, oldRank, rank); - addItem(items, config.getConfigurationSection("fill"), player, oldRank, rank); + + ItemStack fill = getItem(plugin, "rankup", player, oldRank, rank); + ItemStack cancel = getItem(plugin, "cancel", player, oldRank, rank); + ItemStack rankup = getItem(plugin, "rankup", player, oldRank, rank); + + addItem(items, config.getConfigurationSection("rankup"), rankup); + addItem(items, config.getConfigurationSection("cancel"), cancel); + addItem(items, config.getConfigurationSection("fill"), fill); Gui gui = new Gui(); gui.prestige = oldRank instanceof Prestige; - gui.rankup = getItem(config.getConfigurationSection("rankup"), player, oldRank, rank); - gui.cancel = getItem(config.getConfigurationSection("cancel"), player, oldRank, rank); + gui.rankup = rankup; + gui.cancel = cancel; Inventory inventory = Bukkit.createInventory(gui, items.length, plugin.getMessage(oldRank, gui.prestige ? Message.PRESTIGE_TITLE : Message.TITLE) @@ -54,7 +59,8 @@ public class Gui implements InventoryHolder { return gui; } - private static ItemStack getItem(ConfigurationSection section, Player player, Rank oldRank, Rank rank) { + private static ItemStack getItem(Rankup plugin, String name, Player player, Rank oldRank, Rank rank) { + ConfigurationSection section = plugin.getConfig().getConfigurationSection("gui").getConfigurationSection(name); boolean legacy = !Bukkit.getVersion().contains("1.13"); String materialName = section.getString("material").toUpperCase(); @@ -81,26 +87,25 @@ public class Gui implements InventoryHolder { ItemMeta meta = item.getItemMeta(); if (section.contains("lore")) { - meta.setLore(Arrays.stream(format(section.getString("lore"), player, oldRank, rank).split("\n")) + meta.setLore(Arrays.stream(format(plugin, section.getString("lore"), player, oldRank, rank).split("\n")) .map(string -> ChatColor.RESET + string) .collect(Collectors.toList())); } if (section.contains("name")) { - meta.setDisplayName(ChatColor.RESET + format(section.getString("name"), player, oldRank, rank)); + meta.setDisplayName(ChatColor.RESET + format(plugin, section.getString("name"), player, oldRank, rank)); } item.setItemMeta(meta); return item; } - private static String format(String message, Player player, Rank oldRank, Rank rank) { - return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', message)) - .replaceRanks(player, oldRank, rank) + private static String format(Rankup plugin, String message, Player player, Rank oldRank, Rank rank) { + return plugin.replaceMoneyRequirements(new MessageBuilder(ChatColor.translateAlternateColorCodes('&', message)) + .replaceRanks(player, oldRank, rank), player, oldRank) .toString(); } - private static void addItem(ItemStack[] items, ConfigurationSection section, Player player, Rank oldRank, Rank rank) { - ItemStack item = getItem(section, player, oldRank, rank); + private static void addItem(ItemStack[] items, ConfigurationSection section, ItemStack item) { if (section.getName().equalsIgnoreCase("fill")) { for (int i = 0; i < items.length; i++) { if (items[i] == null) { diff --git a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java b/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java index ab4ea89..376d6b6 100644 --- a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java +++ b/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java @@ -2,7 +2,7 @@ package sh.okx.rankup.messages; import org.bukkit.command.CommandSender; -class EmptyMessageBuilder extends MessageBuilder { +public class EmptyMessageBuilder extends MessageBuilder { EmptyMessageBuilder() { super(null); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d350562..39612a1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Rankup -version: 3.2.1-beta +version: 3.2.1-beta.1 main: sh.okx.rankup.Rankup author: Okx depend: [Vault]