From 3fca80a79bbfc8c203ab35a5348ec28e70266636 Mon Sep 17 00:00:00 2001 From: okx-code Date: Tue, 28 Aug 2018 19:38:09 +0100 Subject: [PATCH] add option to disable /ranks, make config clearer --- build.gradle | 2 +- src/main/java/sh/okx/rankup/Rankup.java | 10 ++++--- .../okx/rankup/commands/RankListCommand.java | 26 ++++++------------- .../sh/okx/rankup/commands/RankupCommand.java | 4 +-- src/main/resources/config.yml | 5 ++++ src/main/resources/messages.yml | 10 ++++--- src/main/resources/plugin.yml | 7 +++-- src/main/resources/rankups.yml | 4 +-- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/build.gradle b/build.gradle index aa3fd6b..9e587ce 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'sh.okx' -version '3.0-alpha.10' +version '3.0-alpha.12' sourceCompatibility = 1.8 diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/Rankup.java index be658de..36d6897 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/Rankup.java @@ -69,9 +69,11 @@ public class Rankup extends JavaPlugin { } }); + if(config.getBoolean("ranks")) { + getCommand("ranks").setExecutor(new RankListCommand(this)); + } getCommand("rankup").setExecutor(new RankupCommand(this)); getCommand("rankup3").setExecutor(new InfoCommand(this)); - getCommand("ranks").setExecutor(new RankListCommand(this)); getServer().getPluginManager().registerEvents(new GuiListener(this), this); } @@ -226,7 +228,7 @@ public class Rankup extends JavaPlugin { } else if (!rank.checkRequirements(player)) { // check if they can afford it MessageBuilder builder = getMessage(rank, Message.REQUIREMENTS_NOT_MET) - .replaceAll(player, rank); + .replaceAll(player, rank, rankups.nextRank(rank)); if (economy != null) { double balance = economy.getBalance(player); double amount = rank.getRequirement("money").getAmount(); @@ -247,8 +249,8 @@ public class Rankup extends JavaPlugin { for(Requirement requirement : rank.getRequirements()) { replaceRequirements(builder, Variable.AMOUNT, requirement, () -> simpleFormat.format(requirement.getAmount())); replaceRequirements(builder, Variable.AMOUNT_NEEDED, requirement, () -> simpleFormat.format(requirement.getRemaining(player))); - replaceRequirements(builder, Variable.PERCENT_LEFT, requirement, () -> percentFormat.format((requirement.getRemaining(player) / requirement.getAmount()) * 100)); - replaceRequirements(builder, Variable.PERCENT_DONE, requirement, () -> percentFormat.format((1-(requirement.getRemaining(player) / requirement.getAmount())) * 100)); + replaceRequirements(builder, Variable.PERCENT_LEFT, requirement, () -> percentFormat.format(Math.max(0, (requirement.getRemaining(player) / requirement.getAmount()) * 100))); + replaceRequirements(builder, Variable.PERCENT_DONE, requirement, () -> percentFormat.format(Math.min(100, (1-(requirement.getRemaining(player) / requirement.getAmount())) * 100))); } } diff --git a/src/main/java/sh/okx/rankup/commands/RankListCommand.java b/src/main/java/sh/okx/rankup/commands/RankListCommand.java index d6a47e4..81a45aa 100644 --- a/src/main/java/sh/okx/rankup/commands/RankListCommand.java +++ b/src/main/java/sh/okx/rankup/commands/RankListCommand.java @@ -27,15 +27,15 @@ public class RankListCommand implements CommandExecutor { sendHeaderFooter(sender, playerRank, Message.RANKS_HEADER); - int state = playerRank == null ? 2 : 0; + Message message = playerRank == null ? Message.RANKS_INCOMPLETE : Message.RANKS_COMPLETE; Rank rank = rankups.getFirstRank(); do { Rank next = rankups.nextRank(rank); if(rank.equals(playerRank)) { - sendMessage(sender, 1, rank, next); - state = 2; + sendMessage(sender, Message.RANKS_CURRENT, rank, next); + message = Message.RANKS_COMPLETE; } else { - sendMessage(sender, state, rank, next); + sendMessage(sender, message, rank, next); } rank = next; } while(!rank.isLastRank()); @@ -55,20 +55,10 @@ public class RankListCommand implements CommandExecutor { builder.send(sender); } - private void sendMessage(CommandSender player, int state, Rank oldRank, Rank rank) { - if(state == 0) { - replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_COMPLETE) - .replaceAll(player, oldRank, rank), player, oldRank) - .send(player); - } else if(state == 1) { - replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_CURRENT) - .replaceAll(player, oldRank, rank), player, oldRank) - .send(player); - } else if(state == 2) { - replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_INCOMPLETE) - .replaceAll(player, oldRank, rank), player, oldRank) - .send(player); - } + private void sendMessage(CommandSender player, Message message, Rank oldRank, Rank rank) { + replaceRequirements(plugin.getMessage(oldRank, message) + .replaceAll(player, oldRank, rank), player, oldRank) + .send(player); } private MessageBuilder replaceRequirements(MessageBuilder builder, CommandSender sender, Rank rank) { diff --git a/src/main/java/sh/okx/rankup/commands/RankupCommand.java b/src/main/java/sh/okx/rankup/commands/RankupCommand.java index 6467d95..4a57811 100644 --- a/src/main/java/sh/okx/rankup/commands/RankupCommand.java +++ b/src/main/java/sh/okx/rankup/commands/RankupCommand.java @@ -53,9 +53,7 @@ public class RankupCommand implements CommandExecutor { case "text": confirming.put(player, System.currentTimeMillis()); plugin.getMessage(rank, Message.CONFIRMATION) - .replace(Variable.PLAYER, player.getName()) - .replace(Variable.RANK, rank.getRank()) - .replace(Variable.RANK_NAME, rank.getName()) + .replaceAll(player, rank, rankups.nextRank(rank)) .send(player); break; case "gui": diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c299894..5fbba0b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,6 +1,11 @@ # this is used for letting you know that you need to update/change your config file version: 0 +# whether /ranks should be enabled (true) or disabled (false) +# /rankup3 reload will not do anything if this is changed, +# you will have to restart your server. +ranks: true + # how people should confirm ranking up # options are: gui, text or none confirmation-type: 'gui' diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 1dc69d7..cce81fd 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -15,13 +15,15 @@ rankup: # used for the GUI confirmation title: "Rankup to {RANK}" - # It is HIGHLY RECOMMENDED you override these in rankups.yml + # you can (and probably should) you override these in rankups.yml # to show the specific requirements for each rank. - # however if you are just using money, you can use {MONEY} or {MONEY_NEEDED} or {PERCENT_DONE} or {PERCENT_LEFT} - # for example: + # however if you are just using money or don't need to change the message per rank, you can use any combination of: + # {MONEY} {MONEY_NEEDED} {PERCENT_DONE } {PERCENT_LEFT } {AMOUNT } {AMOUNT_NEEDED } + # {MONEY} and {MONEY_NEEDED} are different from {AMOUNT money} and {AMOUNT_NEEDED money} in that they use a different format. + # here is an example of showing the requirements for just money: #ranks: # complete: "&7{OLD_RANK} &8\xbb &7{RANK} &efor &7${MONEY}" - # current: "&c{OLD_RANK} &e\xbb &c{RANK} &efor &a${MONEY} &e{PERCENT_DONE}%" + # current: "&c{OLD_RANK} &e\xbb &c{RANK} &efor &a${MONEY} &e{PERCENT_DONE mon ey}%" # incomplete: "&r{OLD_RANK} &e\xbb &r{RANK} &efor &a${MONEY}" ranks: complete: "&7{OLD_RANK} &8\xbb &7{RANK}" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4a5749a..350fd96 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Rankup -version: 3.0-alpha.10 +version: 3.0-alpha.12 main: sh.okx.rankup.Rankup author: Okx depend: [Vault] @@ -27,6 +27,7 @@ permissions: rankup.ranks: true rankup.reload: true rankup.ranks: true + rankup.sign: true rankup.info: default: true rankup.rankup: @@ -38,4 +39,6 @@ permissions: rankup.reload: default: op rankup.ranks: - default: true \ No newline at end of file + default: true + rankup.sign: + default: op \ No newline at end of file diff --git a/src/main/resources/rankups.yml b/src/main/resources/rankups.yml index 163203a..6385b3e 100644 --- a/src/main/resources/rankups.yml +++ b/src/main/resources/rankups.yml @@ -4,7 +4,7 @@ Aexample: # the next rank a player can rank up to. # this must be the name of the configuration section. # for example, the name of this configuration section is "Aexample". - # this is not required. + # if this is the last rank, you don't need this. next: 'Bexample' # List of requirements to go to the next rank # (ie, this example will charge 1000 money to rankup from A to B) @@ -37,7 +37,7 @@ Cexample: requirements: money: 5000 xp-level: 2 - # you can have a custom messages too. + # you can have a custom messages for each rank # you can use this to list the requirements needed. rankup: requirements-not-met: '&cYou need 5000 money and 2 levels of XP to rankup to D.'