add autorankup - closes #2

This commit is contained in:
okx-code
2018-10-23 21:22:48 +01:00
parent ae450cb320
commit 4ff6e223fa
7 changed files with 68 additions and 19 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
} }
group 'sh.okx' group 'sh.okx'
version '3.2' version '3.2.1-beta'
repositories { repositories {
mavenCentral() mavenCentral()
@@ -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);
}
}
}
}
+36 -11
View File
@@ -78,6 +78,7 @@ public class Rankup extends JavaPlugin {
* Players who cannot rankup/prestige for a certain amount of time. * Players who cannot rankup/prestige for a certain amount of time.
*/ */
private Map<Player, Long> cooldowns; private Map<Player, Long> cooldowns;
private AutoRankup autoRankup;
@Override @Override
public void onEnable() { public void onEnable() {
@@ -123,7 +124,16 @@ public class Rankup extends JavaPlugin {
closeInventories(); closeInventories();
loadConfigs(); 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("You are using an outdated config!");
getLogger().severe("This means that some things might not work!"); 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),"); 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); applyCooldown(player);
} }
public boolean checkRankup(Player player) {
return checkRankup(player, true);
}
/** /**
* Checks if a player can rankup, * Checks if a player can rankup,
* and if they can't, sends the player a message and returns false * 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 * @param player the player to check if they can rankup
* @return true if the player can rankup, false otherwise * @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); Rank rank = rankups.getByPlayer(player);
if (rank == null) { // check if in ladder if (rank == null) { // check if in ladder
getMessage(Message.NOT_IN_LADDER) getMessage(Message.NOT_IN_LADDER)
.replace(Variable.PLAYER, player.getName()) .replace(Variable.PLAYER, player.getName())
.failIf(!message)
.send(player); .send(player);
return false; return false;
} else if (rank.isLast()) { // check if they are at the highest rank } else if (rank.isLast()) { // check if they are at the highest rank
if(prestiges != null) { // if(prestiges != null) {
Prestige prestige = prestiges.getByPlayer(player); // Prestige prestige = prestiges.getByPlayer(player);
if(prestige.isLast()) { // if(prestige.isLast()) {
getMessage(rank, Message.NO_RANKUP) // getMessage(rank, Message.NO_RANKUP)
.replaceRanks(player, prestige) // .failIf(!message)
.send(player); // .replaceRanks(player, prestige)
} // .send(player);
} // }
// }
getMessage(rank, prestiges == null ? Message.NO_RANKUP : prestiges.getByPlayer(player).isLast() ? Message.NO_RANKUP : Message.MUST_PRESTIGE) getMessage(rank, prestiges == null ? Message.NO_RANKUP : prestiges.getByPlayer(player).isLast() ? Message.NO_RANKUP : Message.MUST_PRESTIGE)
.failIf(!message)
.replaceRanks(player, rank) .replaceRanks(player, rank)
.send(player); .send(player);
return false; return false;
} else if (!rank.hasRequirements(player)) { // check if they can afford it } else if (!rank.hasRequirements(player)) { // check if they can afford it
replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET) replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET)
.failIf(!message)
.replaceRanks(player, rank, rankups.next(rank)), player, rank) .replaceRanks(player, rank, rankups.next(rank)), player, rank)
.send(player); .send(player);
return false; return false;
} else if (checkCooldown(player, rank)) { } else if (message && checkCooldown(player, rank)) {
return false; return false;
} }
@@ -366,20 +384,27 @@ public class Rankup extends JavaPlugin {
} }
public boolean checkPrestige(Player player) { public boolean checkPrestige(Player player) {
return checkPrestige(player, true);
}
public boolean checkPrestige(Player player, boolean message) {
Prestige prestige = prestiges.getByPlayer(player); Prestige prestige = prestiges.getByPlayer(player);
if (!prestige.isEligable(player)) { // check if in ladder if (!prestige.isEligable(player)) { // check if in ladder
getMessage(Message.NOT_HIGH_ENOUGH) getMessage(Message.NOT_HIGH_ENOUGH)
.failIf(!message)
.replace(Variable.PLAYER, player.getName()) .replace(Variable.PLAYER, player.getName())
.send(player); .send(player);
return false; return false;
} else if (prestige.isLast()) { // check if they are at the highest rank } else if (prestige.isLast()) { // check if they are at the highest rank
getMessage(prestige, Message.NO_RANKUP) getMessage(prestige, Message.NO_RANKUP)
.failIf(!message)
.replaceRanks(player, prestige) .replaceRanks(player, prestige)
.replaceFromTo(prestige) .replaceFromTo(prestige)
.send(player); .send(player);
return false; return false;
} else if (!prestige.hasRequirements(player)) { // check if they can afford it } else if (!prestige.hasRequirements(player)) { // check if they can afford it
replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET) replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET)
.failIf(!message)
.replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige) .replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige)
.replaceFromTo(prestige) .replaceFromTo(prestige)
.send(player); .send(player);
@@ -7,12 +7,9 @@ class EmptyMessageBuilder extends MessageBuilder {
super(null); super(null);
} }
/**
* what are you doing failing if empty when it has already failed?
*/
@Override @Override
public MessageBuilder failIfEmpty() { public MessageBuilder failIfEmpty() {
throw new UnsupportedOperationException(); return this;
} }
@Override @Override
+6 -1
View File
@@ -1,5 +1,10 @@
# this is used for letting you know that you need to update/change your config file # 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) # whether /ranks and /prestiges should be enabled (true) or disabled (false)
# /rankup3 reload will not do anything if this is changed, # /rankup3 reload will not do anything if this is changed,
+1 -1
View File
@@ -1,5 +1,5 @@
name: Rankup name: Rankup
version: 3.2 version: 3.2.1-beta
main: sh.okx.rankup.Rankup main: sh.okx.rankup.Rankup
author: Okx author: Okx
depend: [Vault] depend: [Vault]
+1 -1
View File
@@ -12,7 +12,7 @@ first:
P1example: P1example:
from: 'D' from: 'D'
to: 'A' to: 'A'
# the rank add to indicate this prestige # the rank added to indicate this prestige
rank: 'P1' rank: 'P1'
next: 'P2example' next: 'P2example'
requirements: requirements: