diff --git a/build.gradle b/build.gradle index ec04e65..2304aee 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'sh.okx' -version '3.2' +version '3.2.1-beta' repositories { mavenCentral() diff --git a/src/main/java/sh/okx/rankup/AutoRankup.java b/src/main/java/sh/okx/rankup/AutoRankup.java new file mode 100644 index 0000000..ca420ce --- /dev/null +++ b/src/main/java/sh/okx/rankup/AutoRankup.java @@ -0,0 +1,22 @@ +package sh.okx.rankup; + +import lombok.RequiredArgsConstructor; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + +@RequiredArgsConstructor +public class AutoRankup extends BukkitRunnable { + private final Rankup rankup; + + @Override + public void run() { + for (Player player : Bukkit.getOnlinePlayers()) { + if (rankup.checkRankup(player, false)) { + rankup.rankup(player); + } else if (rankup.getPrestiges() != null && rankup.checkPrestige(player, false)) { + rankup.prestige(player); + } + } + } +} diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/Rankup.java index dbe79bf..f743165 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/Rankup.java @@ -78,6 +78,7 @@ public class Rankup extends JavaPlugin { * Players who cannot rankup/prestige for a certain amount of time. */ private Map cooldowns; + private AutoRankup autoRankup; @Override public void onEnable() { @@ -123,7 +124,16 @@ public class Rankup extends JavaPlugin { closeInventories(); loadConfigs(); - if (config.getInt("version") < 1) { + if(autoRankup != null) { + autoRankup.cancel(); + } + long time = config.getInt("autorankup-interval") * 60 * 20; + if(time > 0) { + autoRankup = new AutoRankup(this); + autoRankup.runTaskTimer(this, time, time); + } + + if (config.getInt("version") < 2) { getLogger().severe("You are using an outdated config!"); getLogger().severe("This means that some things might not work!"); getLogger().severe("To update, please rename ALL your config files (or the folder they are in),"); @@ -294,6 +304,10 @@ public class Rankup extends JavaPlugin { 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 @@ -301,32 +315,36 @@ public class Rankup extends JavaPlugin { * @param player the player to check if they can rankup * @return true if the player can rankup, false otherwise */ - public boolean checkRankup(Player player) { + public boolean checkRankup(Player player, boolean message) { Rank rank = rankups.getByPlayer(player); if (rank == null) { // check if in ladder getMessage(Message.NOT_IN_LADDER) .replace(Variable.PLAYER, player.getName()) + .failIf(!message) .send(player); return false; } else if (rank.isLast()) { // check if they are at the highest rank - if(prestiges != null) { - Prestige prestige = prestiges.getByPlayer(player); - if(prestige.isLast()) { - getMessage(rank, Message.NO_RANKUP) - .replaceRanks(player, prestige) - .send(player); - } - } +// if(prestiges != null) { +// Prestige prestige = prestiges.getByPlayer(player); +// if(prestige.isLast()) { +// getMessage(rank, Message.NO_RANKUP) +// .failIf(!message) +// .replaceRanks(player, prestige) +// .send(player); +// } +// } getMessage(rank, prestiges == null ? Message.NO_RANKUP : prestiges.getByPlayer(player).isLast() ? Message.NO_RANKUP : Message.MUST_PRESTIGE) + .failIf(!message) .replaceRanks(player, rank) .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); return false; - } else if (checkCooldown(player, rank)) { + } else if (message && checkCooldown(player, rank)) { return false; } @@ -366,20 +384,27 @@ public class Rankup extends JavaPlugin { } public boolean checkPrestige(Player player) { + return checkPrestige(player, true); + } + + public boolean checkPrestige(Player player, boolean message) { Prestige prestige = prestiges.getByPlayer(player); if (!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 (prestige.isLast()) { // check if they are at the highest rank getMessage(prestige, Message.NO_RANKUP) + .failIf(!message) .replaceRanks(player, prestige) .replaceFromTo(prestige) .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); diff --git a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java b/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java index 6537717..ab4ea89 100644 --- a/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java +++ b/src/main/java/sh/okx/rankup/messages/EmptyMessageBuilder.java @@ -7,12 +7,9 @@ class EmptyMessageBuilder extends MessageBuilder { super(null); } - /** - * what are you doing failing if empty when it has already failed? - */ @Override public MessageBuilder failIfEmpty() { - throw new UnsupportedOperationException(); + return this; } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 25fb02f..53c475a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,10 @@ # this is used for letting you know that you need to update/change your config file -version: 1 +version: 2 + +# interval (in minutes) to check to autorankup players +# ranking up manually wil always be enabled +# set to 0 to disable +autorankup-interval: 0 # whether /ranks and /prestiges should be enabled (true) or disabled (false) # /rankup3 reload will not do anything if this is changed, diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e46a07f..d350562 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: Rankup -version: 3.2 +version: 3.2.1-beta main: sh.okx.rankup.Rankup author: Okx depend: [Vault] diff --git a/src/main/resources/prestiges.yml b/src/main/resources/prestiges.yml index 41551fb..990a444 100644 --- a/src/main/resources/prestiges.yml +++ b/src/main/resources/prestiges.yml @@ -12,7 +12,7 @@ first: P1example: from: 'D' to: 'A' - # the rank add to indicate this prestige + # the rank added to indicate this prestige rank: 'P1' next: 'P2example' requirements: