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
@@ -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.
*/
private Map<Player, Long> 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);
@@ -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
+6 -1
View File
@@ -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,
+1 -1
View File
@@ -1,5 +1,5 @@
name: Rankup
version: 3.2
version: 3.2.1-beta
main: sh.okx.rankup.Rankup
author: Okx
depend: [Vault]
+1 -1
View File
@@ -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: