From 58f38489a6c8200478b69ac2787c3904f2ae7942 Mon Sep 17 00:00:00 2001 From: okx-code Date: Fri, 12 Jul 2019 16:01:58 +0100 Subject: [PATCH] refactoring --- build.gradle | 2 +- src/main/java/sh/okx/rankup/AutoRankup.java | 9 +- src/main/java/sh/okx/rankup/Rankup.java | 225 +++--------------- src/main/java/sh/okx/rankup/RankupHelper.java | 188 +++++++++++++++ .../sh/okx/rankup/RankupRegisterEvent.java | 4 +- .../okx/rankup/commands/PrestigeCommand.java | 6 +- .../sh/okx/rankup/commands/RankupCommand.java | 6 +- .../java/sh/okx/rankup/gui/GuiListener.java | 6 +- .../okx/rankup/messages/MessageBuilder.java | 5 +- ...geBuilder.java => NullMessageBuilder.java} | 6 +- .../rankup/placeholders/RankupExpansion.java | 5 + .../java/sh/okx/rankup/prestige/Prestige.java | 2 +- src/main/java/sh/okx/rankup/ranks/Rank.java | 10 +- .../requirement/MobKillsRequirement.java | 1 + src/main/resources/plugin.yml | 4 +- .../rankup/messages/MessageBuilderTest.java | 2 +- 16 files changed, 261 insertions(+), 220 deletions(-) create mode 100644 src/main/java/sh/okx/rankup/RankupHelper.java rename src/main/java/sh/okx/rankup/messages/{EmptyMessageBuilder.java => NullMessageBuilder.java} (75%) diff --git a/build.gradle b/build.gradle index fe919be..e971046 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { } group 'sh.okx' -version '3.5.4' +version '3.5.6' repositories { mavenCentral() diff --git a/src/main/java/sh/okx/rankup/AutoRankup.java b/src/main/java/sh/okx/rankup/AutoRankup.java index 160ac0c..9d5749d 100644 --- a/src/main/java/sh/okx/rankup/AutoRankup.java +++ b/src/main/java/sh/okx/rankup/AutoRankup.java @@ -11,12 +11,13 @@ public class AutoRankup extends BukkitRunnable { @Override public void run() { + RankupHelper helper = rankup.getHelper(); for (Player player : Bukkit.getOnlinePlayers()) { if (player.hasPermission("rankup.auto")) { - if (rankup.checkRankup(player, false)) { - rankup.rankup(player); - } else if (rankup.getPrestiges() != null && rankup.checkPrestige(player, false)) { - rankup.prestige(player); + if (helper.checkRankup(player, false)) { + helper.rankup(player); + } else if (rankup.getPrestiges() != null && helper.checkPrestige(player, false)) { + helper.prestige(player); } } } diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/Rankup.java index b57a7a6..c87f5e1 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/Rankup.java @@ -4,6 +4,7 @@ import lombok.Getter; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -11,6 +12,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryView; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import sh.okx.rankup.commands.InfoCommand; @@ -20,7 +22,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.NullMessageBuilder; import sh.okx.rankup.messages.Message; import sh.okx.rankup.messages.MessageBuilder; import sh.okx.rankup.messages.Variable; @@ -44,7 +46,6 @@ import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.WeakHashMap; import java.util.function.Supplier; public class Rankup extends JavaPlugin { @@ -56,7 +57,7 @@ public class Rankup extends JavaPlugin { * The registry for listing the requirements to /rankup. */ @Getter - private RequirementRegistry requirementRegistry; + private RequirementRegistry requirements; @Getter private FileConfiguration messages; @Getter @@ -67,10 +68,8 @@ public class Rankup extends JavaPlugin { private Prestiges prestiges; @Getter private Placeholders placeholders; - /** - * Players who cannot rankup/prestige for a certain amount of time. - */ - private Map cooldowns; + @Getter + private RankupHelper helper; private AutoRankup autoRankup; @Override @@ -117,7 +116,6 @@ public class Rankup extends JavaPlugin { } public void reload() { - cooldowns = new WeakHashMap<>(); closeInventories(); loadConfigs(); @@ -139,6 +137,8 @@ public class Rankup extends JavaPlugin { getLogger().severe("You may then copy in your config values from the old config."); getLogger().severe("Check the changelog on the Rankup spigot page to see the changes."); } + + helper = new RankupHelper(this); } private void addAll(Map map, RankList ranks) { @@ -191,6 +191,7 @@ public class Rankup extends JavaPlugin { e.printStackTrace(); Bukkit.getPluginManager().disablePlugin(this); getLogger().severe("Could not finish enabling Rankup"); + Bukkit.broadcast(ChatColor.RED + "Could not reload rankup successfully, please check console for more information.", "rankup.reload"); } } @@ -217,34 +218,36 @@ public class Rankup extends JavaPlugin { } private void registerRequirements() { - requirementRegistry = new RequirementRegistry(); + requirements = new RequirementRegistry(); + requirements.addRequirement(new XpLevelRequirement(this)); + requirements.addRequirement(new PlaytimeMinutesRequirement(this)); + requirements.addRequirement(new GroupRequirement(this)); + requirements.addRequirement(new PermissionRequirement(this)); + requirements.addRequirement(new PlaceholderRequirement(this)); + requirements.addRequirement(new WorldRequirement(this)); + requirements.addRequirement(new BlockBreakRequirement(this)); + requirements.addRequirement(new PlayerKillsRequirement(this)); + requirements.addRequirement(new MobKillsRequirement(this)); + requirements.addRequirement(new ItemRequirement(this)); + requirements.addRequirement(new UseItemRequirement(this)); + requirements.addRequirement(new TotalMobKillsRequirement(this)); + requirements.addRequirement(new CraftItemRequirement(this)); if (economy != null) { - requirementRegistry.addRequirement(new MoneyRequirement(this)); + requirements.addRequirement(new MoneyRequirement(this)); } - requirementRegistry.addRequirement(new XpLevelRequirement(this)); - requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this)); - requirementRegistry.addRequirement(new GroupRequirement(this)); - requirementRegistry.addRequirement(new PermissionRequirement(this)); - requirementRegistry.addRequirement(new PlaceholderRequirement(this)); - requirementRegistry.addRequirement(new WorldRequirement(this)); - requirementRegistry.addRequirement(new BlockBreakRequirement(this)); - requirementRegistry.addRequirement(new PlayerKillsRequirement(this)); - requirementRegistry.addRequirement(new MobKillsRequirement(this)); - if (Bukkit.getPluginManager().isPluginEnabled("mcMMO")) { - requirementRegistry.addRequirement(new McMMOSkillRequirement(this)); - requirementRegistry.addRequirement(new McMMOPowerLevelRequirement(this)); + + PluginManager pluginManager = Bukkit.getPluginManager(); + if (pluginManager.isPluginEnabled("mcMMO")) { + requirements.addRequirement(new McMMOSkillRequirement(this)); + requirements.addRequirement(new McMMOPowerLevelRequirement(this)); } - if (Bukkit.getPluginManager().isPluginEnabled("AdvancedAchievements")) { - requirementRegistry.addRequirement(new AdvancedAchievementsAchievementRequirement(this)); - requirementRegistry.addRequirement(new AdvancedAchievementsTotalRequirement(this)); + if (pluginManager.isPluginEnabled("AdvancedAchievements")) { + requirements.addRequirement(new AdvancedAchievementsAchievementRequirement(this)); + requirements.addRequirement(new AdvancedAchievementsTotalRequirement(this)); } - if (Bukkit.getPluginManager().isPluginEnabled("VotingPlugin")) { - requirementRegistry.addRequirement(new VotingPluginVotesRequirement(this)); + if (pluginManager.isPluginEnabled("VotingPlugin")) { + requirements.addRequirement(new VotingPluginVotesRequirement(this)); } - requirementRegistry.addRequirement(new ItemRequirement(this)); - requirementRegistry.addRequirement(new UseItemRequirement(this)); - requirementRegistry.addRequirement(new TotalMobKillsRequirement(this)); - requirementRegistry.addRequirement(new CraftItemRequirement(this)); } private void setupPermissions() { @@ -289,166 +292,8 @@ public class Rankup extends JavaPlugin { return MessageBuilder.of(messages, message); } - private boolean checkCooldown(Player player, Rank rank) { - if (cooldowns.containsKey(player)) { - long time = System.currentTimeMillis() - cooldowns.get(player); - // if time passed is less than the cooldown - long cooldownSeconds = config.getInt("cooldown"); - long timeLeft = (cooldownSeconds * 1000) - time; - if (timeLeft > 0) { - long secondsLeft = (long) Math.ceil(timeLeft / 1000f); - getMessage(rank, secondsLeft > 1 ? Message.COOLDOWN_PLURAL : Message.COOLDOWN_SINGULAR) - .failIfEmpty() - .replaceRanks(player, rank.getRank()) - .replaceFromTo(rank) - .replace(Variable.SECONDS, cooldownSeconds) - .replace(Variable.SECONDS_LEFT, secondsLeft) - .send(player); - return true; - } - // cooldown has expired so remove it - cooldowns.remove(player); - } - return false; - } - - private void applyCooldown(Player player) { - if (config.getInt("cooldown") > 0) { - cooldowns.put(player, System.currentTimeMillis()); - } - } - - public void rankup(Player player) { - if (!checkRankup(player)) { - return; - } - - Rank oldRank = rankups.getByPlayer(player); - String next = oldRank.getNext(); - - oldRank.applyRequirements(player); - - permissions.playerRemoveGroup(null, player, oldRank.getRank()); - permissions.playerAddGroup(null, player, next); - - getMessage(oldRank, Message.SUCCESS_PUBLIC) - .failIfEmpty() - .replaceRanks(player, oldRank, next) - .broadcast(); - getMessage(oldRank, Message.SUCCESS_PRIVATE) - .failIfEmpty() - .replaceRanks(player, oldRank, next) - .send(player); - - oldRank.runCommands(player, next); - applyCooldown(player); - } - - public boolean checkRankup(Player player) { - return checkRankup(player, true); - } - - /** - * Checks if a player can rankup, - * and if they can't, sends the player a message and returns false - * - * @param player the player to check if they can rankup - * @return true if the player can rankup, false otherwise - */ - public boolean checkRankup(Player player, boolean message) { - Rank rank = rankups.getByPlayer(player); - if (rankups.isLast(permissions, player)) { - getMessage(prestiges == null ? Message.NO_RANKUP : prestiges.isLast(permissions, player) ? Message.NO_RANKUP : Message.MUST_PRESTIGE) - .failIf(!message) - .replaceRanks(player, rankups.getLast()) - .send(player); - return false; - } else if (rank == null) { // check if in ladder - getMessage(Message.NOT_IN_LADDER) - .failIf(!message) - .replace(Variable.PLAYER, player.getName()) - .send(player); - return false; - } else if (!rank.hasRequirements(player)) { // check if they can afford it - if (message) { - replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET) - .replaceRanks(player, rank, rank.getNext()), player, rank) - .send(player); - } - return false; - } else if (message && checkCooldown(player, rank)) { - return false; - } - - return true; - } - - public void prestige(Player player) { - if (!checkPrestige(player)) { - return; - } - - Prestige oldPrestige = prestiges.getByPlayer(player); - - oldPrestige.applyRequirements(player); - - permissions.playerRemoveGroup(null, player, oldPrestige.getFrom()); - permissions.playerAddGroup(null, player, oldPrestige.getTo()); - if (oldPrestige.getRank() != null) { - permissions.playerRemoveGroup(null, player, oldPrestige.getRank()); - } - permissions.playerAddGroup(null, player, oldPrestige.getNext()); - - getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PUBLIC) - .failIfEmpty() - .replaceRanks(player, oldPrestige,oldPrestige.getNext()) - .replaceFromTo(oldPrestige) - .broadcast(); - getMessage(oldPrestige, Message.PRESTIGE_SUCCESS_PRIVATE) - .failIfEmpty() - .replaceRanks(player, oldPrestige, oldPrestige.getNext()) - .replaceFromTo(oldPrestige) - .send(player); - - oldPrestige.runCommands(player, oldPrestige.getNext()); - applyCooldown(player); - } - - public boolean checkPrestige(Player player) { - return checkPrestige(player, true); - } - - public boolean checkPrestige(Player player, boolean message) { - Prestige prestige = prestiges.getByPlayer(player); - if (prestige == null || !prestige.isEligable(player)) { // check if in ladder - getMessage(Message.NOT_HIGH_ENOUGH) - .failIf(!message) - .replace(Variable.PLAYER, player.getName()) - .send(player); - return false; - } else if (prestiges.isLast(permissions, player)) { // check if they are at the highest rank - getMessage(prestige, Message.PRESTIGE_NO_PRESTIGE) - .failIf(!message) - .replaceRanks(player, prestige.getRank()) - .replaceFromTo(prestige) - .send(player); - return false; - } else if (!prestige.hasRequirements(player)) { // check if they can afford it - replaceMoneyRequirements(getMessage(prestige, Message.PRESTIGE_REQUIREMENTS_NOT_MET) - .failIf(!message) - .replaceRanks(player, prestige, prestiges.next(prestige).getRank()), player, prestige) - .replaceFromTo(prestige) - .send(player); - return false; - } else if (checkCooldown(player, prestige)) { - return false; - } - - return true; - } - public MessageBuilder replaceMoneyRequirements(MessageBuilder builder, CommandSender sender, Rank rank) { - if (builder instanceof EmptyMessageBuilder) { + if (builder instanceof NullMessageBuilder) { return builder; } diff --git a/src/main/java/sh/okx/rankup/RankupHelper.java b/src/main/java/sh/okx/rankup/RankupHelper.java new file mode 100644 index 0000000..0d1b425 --- /dev/null +++ b/src/main/java/sh/okx/rankup/RankupHelper.java @@ -0,0 +1,188 @@ +package sh.okx.rankup; + +import lombok.RequiredArgsConstructor; +import net.milkbowl.vault.permission.Permission; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; +import sh.okx.rankup.messages.Message; +import sh.okx.rankup.messages.Variable; +import sh.okx.rankup.prestige.Prestige; +import sh.okx.rankup.prestige.Prestiges; +import sh.okx.rankup.ranks.Rank; +import sh.okx.rankup.ranks.Rankups; + +import java.util.HashMap; +import java.util.Map; + +public class RankupHelper { + private final Rankup plugin; + private final ConfigurationSection config; + private final Permission permissions; + /** + * Players who cannot rankup/prestige for a certain amount of time. + */ + private Map cooldowns = new HashMap<>(); + + public RankupHelper(Rankup plugin) { + this.plugin = plugin; + this.config = plugin.getConfig(); + this.permissions = plugin.getPermissions(); + } + + private void doRankup(Player player, Rank rank) { + rank.runCommands(player); + applyCooldown(player); + + permissions.playerRemoveGroup(null, player, rank.getRank()); + permissions.playerAddGroup(null, player, rank.getNext()); + } + + private boolean checkCooldown(Player player, Rank rank) { + if (cooldowns.containsKey(player)) { + long time = System.currentTimeMillis() - cooldowns.get(player); + // if time passed is less than the cooldown + long cooldownSeconds = config.getInt("cooldown"); + long timeLeft = (cooldownSeconds * 1000) - time; + if (timeLeft > 0) { + long secondsLeft = (long) Math.ceil(timeLeft / 1000f); + plugin.getMessage(rank, secondsLeft > 1 ? Message.COOLDOWN_PLURAL : Message.COOLDOWN_SINGULAR) + .failIfEmpty() + .replaceRanks(player, rank.getRank()) + .replaceFromTo(rank) + .replace(Variable.SECONDS, cooldownSeconds) + .replace(Variable.SECONDS_LEFT, secondsLeft) + .send(player); + return true; + } + // cooldown has expired so remove it + cooldowns.remove(player); + } + return false; + } + + private void applyCooldown(Player player) { + if (config.getInt("cooldown") > 0) { + cooldowns.put(player, System.currentTimeMillis()); + } + } + + public void rankup(Player player) { + if (!checkRankup(player)) { + return; + } + + Rank rank = plugin.getRankups().getByPlayer(player); + rank.applyRequirements(player); + doRankup(player, rank); + + plugin.getMessage(rank, Message.SUCCESS_PUBLIC) + .failIfEmpty() + .replaceRanks(player, rank, rank.getNext()) + .broadcast(); + plugin.getMessage(rank, Message.SUCCESS_PRIVATE) + .failIfEmpty() + .replaceRanks(player, rank, rank.getNext()) + .send(player); + } + + public boolean checkRankup(Player player) { + return checkRankup(player, true); + } + + /** + * Checks if a player can rankup, + * and if they can't, sends the player a message and returns false + * + * @param player the player to check if they can rankup + * @return true if the player can rankup, false otherwise + */ + public boolean checkRankup(Player player, boolean message) { + Rankups rankups = plugin.getRankups(); + Rank rank = rankups.getByPlayer(player); + if (rankups.isLast(permissions, player)) { + Prestiges prestiges = plugin.getPrestiges(); + plugin.getMessage(prestiges == null ? Message.NO_RANKUP : prestiges.isLast(permissions, player) ? Message.NO_RANKUP : Message.MUST_PRESTIGE) + .failIf(!message) + .replaceRanks(player, rankups.getLast()) + .send(player); + return false; + } else if (rank == null) { // check if in ladder + plugin.getMessage(Message.NOT_IN_LADDER) + .failIf(!message) + .replace(Variable.PLAYER, player.getName()) + .send(player); + return false; + } else if (!rank.hasRequirements(player)) { // check if they can afford it + if (message) { + plugin.replaceMoneyRequirements(plugin.getMessage(rank, Message.REQUIREMENTS_NOT_MET) + .replaceRanks(player, rank, rank.getNext()), player, rank) + .send(player); + } + return false; + } else if (message && checkCooldown(player, rank)) { + return false; + } + + return true; + } + + public void prestige(Player player) { + if (!checkPrestige(player)) { + return; + } + + Prestige prestige = plugin.getPrestiges().getByPlayer(player); + prestige.applyRequirements(player); + doRankup(player, prestige); + + if (prestige.getRank() != null) { + permissions.playerRemoveGroup(null, player, prestige.getRank()); + } + permissions.playerAddGroup(null, player, prestige.getNext()); + + plugin.getMessage(prestige, Message.PRESTIGE_SUCCESS_PUBLIC) + .failIfEmpty() + .replaceRanks(player, prestige,prestige.getNext()) + .replaceFromTo(prestige) + .broadcast(); + plugin.getMessage(prestige, Message.PRESTIGE_SUCCESS_PRIVATE) + .failIfEmpty() + .replaceRanks(player, prestige, prestige.getNext()) + .replaceFromTo(prestige) + .send(player); + } + + public boolean checkPrestige(Player player) { + return checkPrestige(player, true); + } + + public boolean checkPrestige(Player player, boolean message) { + Prestiges prestiges = plugin.getPrestiges(); + Prestige prestige = prestiges.getByPlayer(player); + if (prestige == null || !prestige.isEligable(player)) { // check if in ladder + plugin.getMessage(Message.NOT_HIGH_ENOUGH) + .failIf(!message) + .replace(Variable.PLAYER, player.getName()) + .send(player); + return false; + } else if (prestiges.isLast(plugin.getPermissions(), player)) { // check if they are at the highest rank + plugin.getMessage(prestige, Message.PRESTIGE_NO_PRESTIGE) + .failIf(!message) + .replaceRanks(player, prestige.getRank()) + .replaceFromTo(prestige) + .send(player); + return false; + } else if (!prestige.hasRequirements(player)) { // check if they can afford it + plugin.replaceMoneyRequirements(plugin.getMessage(prestige, Message.PRESTIGE_REQUIREMENTS_NOT_MET) + .failIf(!message) + .replaceRanks(player, prestige, prestiges.next(prestige).getRank()), player, prestige) + .replaceFromTo(prestige) + .send(player); + return false; + } else if (checkCooldown(player, prestige)) { + return false; + } + + return true; + } +} diff --git a/src/main/java/sh/okx/rankup/RankupRegisterEvent.java b/src/main/java/sh/okx/rankup/RankupRegisterEvent.java index 444331e..b19151a 100644 --- a/src/main/java/sh/okx/rankup/RankupRegisterEvent.java +++ b/src/main/java/sh/okx/rankup/RankupRegisterEvent.java @@ -24,11 +24,11 @@ public class RankupRegisterEvent extends Event { } public RequirementRegistry getRequirementRegistry() { - return plugin.getRequirementRegistry(); + return plugin.getRequirements(); } public void addRequirement(Requirement requirement) { - plugin.getRequirementRegistry().addRequirement(requirement); + plugin.getRequirements().addRequirement(requirement); } @Override diff --git a/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java b/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java index b6f8d65..303b91a 100644 --- a/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java +++ b/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java @@ -30,7 +30,7 @@ public class PrestigeCommand implements CommandExecutor { Prestiges prestiges = plugin.getPrestiges(); Prestige prestige = prestiges.getByPlayer(player); - if (!plugin.checkPrestige(player)) { + if (!plugin.getHelper().checkPrestige(player)) { return true; } @@ -39,7 +39,7 @@ public class PrestigeCommand implements CommandExecutor { if (confirmationType.equals("text") && confirming.containsKey(player)) { long time = System.currentTimeMillis() - confirming.remove(player); if (time < config.getInt("text.timeout") * 1000) { - plugin.prestige(player); + plugin.getHelper().prestige(player); return true; } } @@ -59,7 +59,7 @@ public class PrestigeCommand implements CommandExecutor { Gui.of(player, prestige, prestige.getNext(), plugin).open(player); break; case "none": - plugin.prestige(player); + plugin.getHelper().prestige(player); break; default: throw new IllegalArgumentException("Invalid confirmation type " + confirmationType); diff --git a/src/main/java/sh/okx/rankup/commands/RankupCommand.java b/src/main/java/sh/okx/rankup/commands/RankupCommand.java index 0103e63..1e4a3d7 100644 --- a/src/main/java/sh/okx/rankup/commands/RankupCommand.java +++ b/src/main/java/sh/okx/rankup/commands/RankupCommand.java @@ -32,7 +32,7 @@ public class RankupCommand implements CommandExecutor { Rankups rankups = plugin.getRankups(); Rank rank = rankups.getByPlayer(player); - if (!plugin.checkRankup(player)) { + if (!plugin.getHelper().checkRankup(player)) { return true; } /*Rank next = rankups.next(rank); @@ -51,7 +51,7 @@ public class RankupCommand implements CommandExecutor { if (confirmationType.equals("text") && confirming.containsKey(player)) { long time = System.currentTimeMillis() - confirming.remove(player); if (time < config.getInt("text.timeout") * 1000) { - plugin.rankup(player); + plugin.getHelper().rankup(player); return true; } } @@ -67,7 +67,7 @@ public class RankupCommand implements CommandExecutor { Gui.of(player, rank, next, plugin).open(player); break; case "none": - plugin.rankup(player); + plugin.getHelper().rankup(player); break; default: throw new IllegalArgumentException("Invalid confirmation type " + confirmationType); diff --git a/src/main/java/sh/okx/rankup/gui/GuiListener.java b/src/main/java/sh/okx/rankup/gui/GuiListener.java index 692c102..550b9d4 100644 --- a/src/main/java/sh/okx/rankup/gui/GuiListener.java +++ b/src/main/java/sh/okx/rankup/gui/GuiListener.java @@ -18,7 +18,7 @@ public class GuiListener implements Listener { Inventory inventory = e.getInventory(); if (inventory == null || !(inventory.getHolder() instanceof Gui) - || !e.getInventory().equals(e.getClickedInventory())) { + || !inventory.equals(e.getClickedInventory())) { return; } e.setCancelled(true); @@ -29,9 +29,9 @@ public class GuiListener implements Listener { if (gui.getRankup().isSimilar(e.getCurrentItem())) { Bukkit.getScheduler().runTask(plugin, player::closeInventory); if (gui.isPrestige()) { - plugin.prestige(player); + plugin.getHelper().prestige(player); } else { - plugin.rankup(player); + plugin.getHelper().rankup(player); } } else if (gui.getCancel().isSimilar(e.getCurrentItem())) { Bukkit.getScheduler().runTask(plugin, player::closeInventory); diff --git a/src/main/java/sh/okx/rankup/messages/MessageBuilder.java b/src/main/java/sh/okx/rankup/messages/MessageBuilder.java index 54bd8bf..8444a00 100644 --- a/src/main/java/sh/okx/rankup/messages/MessageBuilder.java +++ b/src/main/java/sh/okx/rankup/messages/MessageBuilder.java @@ -84,8 +84,7 @@ public class MessageBuilder { /** * Fails the MessageBuilder if the message is empty. * if this fails, all subsequent calls to that MessageBuilder will do nothing - * - * @return an EmptyMessageBuilder if the message is empty, itself otherwise + * @return a NullMessageBuilder if the message is empty, itself otherwise */ public MessageBuilder failIfEmpty() { return failIf(message.isEmpty()); @@ -93,7 +92,7 @@ public class MessageBuilder { public MessageBuilder failIf(boolean value) { if (value) { - return new EmptyMessageBuilder(); + return new NullMessageBuilder(); } else { return this; } diff --git a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java b/src/main/java/sh/okx/rankup/messages/NullMessageBuilder.java similarity index 75% rename from src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java rename to src/main/java/sh/okx/rankup/messages/NullMessageBuilder.java index 376d6b6..216a20f 100644 --- a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java +++ b/src/main/java/sh/okx/rankup/messages/NullMessageBuilder.java @@ -2,13 +2,13 @@ package sh.okx.rankup.messages; import org.bukkit.command.CommandSender; -public class EmptyMessageBuilder extends MessageBuilder { - EmptyMessageBuilder() { +public class NullMessageBuilder extends MessageBuilder { + NullMessageBuilder() { super(null); } @Override - public MessageBuilder failIfEmpty() { + public MessageBuilder failIf(boolean value) { return this; } diff --git a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java index 08f2a4f..9b9b6c3 100644 --- a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java +++ b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java @@ -185,4 +185,9 @@ public class RankupExpansion extends PlaceholderExpansion { public String getVersion() { return plugin.getDescription().getVersion(); } + + @Override + public boolean persist() { + return true; + } } diff --git a/src/main/java/sh/okx/rankup/prestige/Prestige.java b/src/main/java/sh/okx/rankup/prestige/Prestige.java index ca4998b..aa969ad 100644 --- a/src/main/java/sh/okx/rankup/prestige/Prestige.java +++ b/src/main/java/sh/okx/rankup/prestige/Prestige.java @@ -28,7 +28,7 @@ public class Prestige extends Rank { public static Prestige deserialize(Rankup plugin, ConfigurationSection section) { List requirementsList = section.getStringList("requirements"); - Set requirements = plugin.getRequirementRegistry().getRequirements(requirementsList); + Set requirements = plugin.getRequirements().getRequirements(requirementsList); return new Prestige(section, plugin, section.getString("next"), diff --git a/src/main/java/sh/okx/rankup/ranks/Rank.java b/src/main/java/sh/okx/rankup/ranks/Rank.java index a3b5b89..83e2056 100644 --- a/src/main/java/sh/okx/rankup/ranks/Rank.java +++ b/src/main/java/sh/okx/rankup/ranks/Rank.java @@ -34,7 +34,7 @@ public class Rank { public static Rank deserialize(Rankup plugin, ConfigurationSection section) { List requirementsList = section.getStringList("requirements"); - Set requirements = plugin.getRequirementRegistry().getRequirements(requirementsList); + Set requirements = plugin.getRequirements().getRequirements(requirementsList); return new Rank(section, plugin, section.getString("next"), @@ -87,11 +87,13 @@ public class Rank { } } - public void runCommands(Player player, String next) { + public void runCommands(Player player) { for (String command : commands) { String string = new MessageBuilder(command).replaceRanks(player, this, next).toString(); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), - PlaceholderAPI.setPlaceholders(player, string)); + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + string = PlaceholderAPI.setPlaceholders(player, string); + } + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), string); } } } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java index 856dad5..3115068 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java @@ -18,6 +18,7 @@ public class MobKillsRequirement extends ProgressiveRequirement { super(clone); } + @SuppressWarnings("deprecation") @Override public double getProgress(Player player) { EntityType entity = Objects.requireNonNull(EntityType.fromName(getSub()), "Invalid entity type '" + getSub() + "' in mob-kills requirement."); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 82f72ab..2b01c13 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,10 +1,10 @@ name: Rankup -version: 3.5.4 +version: 3.5.6 main: sh.okx.rankup.Rankup author: Okx depend: [Vault] softdepend: [PlaceholderAPI, mcMMO, AdvancedAchievements] -api-version: 1.13 +api-version: '1.13' commands: rankup: diff --git a/src/test/java/sh/okx/rankup/messages/MessageBuilderTest.java b/src/test/java/sh/okx/rankup/messages/MessageBuilderTest.java index f6c4226..8ac0837 100644 --- a/src/test/java/sh/okx/rankup/messages/MessageBuilderTest.java +++ b/src/test/java/sh/okx/rankup/messages/MessageBuilderTest.java @@ -9,6 +9,6 @@ import static org.junit.Assert.assertThat; public class MessageBuilderTest { @Test public void testFailIfEmpty() { - assertThat(new MessageBuilder("").failIfEmpty(), instanceOf(EmptyMessageBuilder.class)); + assertThat(new MessageBuilder("").failIfEmpty(), instanceOf(NullMessageBuilder.class)); } } \ No newline at end of file