ranks gui
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'sh.okx'
|
group 'sh.okx'
|
||||||
version '3.10-alpha'
|
version '3.10-alpha.1'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -1,221 +1,221 @@
|
|||||||
package sh.okx.rankup;
|
package sh.okx.rankup;
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import java.util.HashMap;
|
||||||
import org.bukkit.entity.Player;
|
import java.util.Map;
|
||||||
import sh.okx.rankup.hook.GroupProvider;
|
import java.util.Objects;
|
||||||
import sh.okx.rankup.messages.Message;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import sh.okx.rankup.messages.Variable;
|
import org.bukkit.entity.Player;
|
||||||
import sh.okx.rankup.prestige.Prestige;
|
import sh.okx.rankup.hook.GroupProvider;
|
||||||
import sh.okx.rankup.prestige.Prestiges;
|
import sh.okx.rankup.messages.Message;
|
||||||
import sh.okx.rankup.ranks.Rank;
|
import sh.okx.rankup.messages.Variable;
|
||||||
import sh.okx.rankup.ranks.RankElement;
|
import sh.okx.rankup.prestige.Prestige;
|
||||||
import sh.okx.rankup.ranks.Rankups;
|
import sh.okx.rankup.prestige.Prestiges;
|
||||||
|
import sh.okx.rankup.ranks.Rank;
|
||||||
import java.util.HashMap;
|
import sh.okx.rankup.ranks.RankElement;
|
||||||
import java.util.Map;
|
import sh.okx.rankup.ranks.Rankups;
|
||||||
import java.util.Objects;
|
|
||||||
|
/**
|
||||||
/**
|
* Actually performs the ranking up and prestiging for the plugin and also manages the cooldowns
|
||||||
* Actually performs the ranking up and prestiging for the plugin and also manages the cooldowns
|
* between ranking up.
|
||||||
* between ranking up.
|
*/
|
||||||
*/
|
public class RankupHelper {
|
||||||
public class RankupHelper {
|
|
||||||
|
private final RankupPlugin plugin;
|
||||||
private final RankupPlugin plugin;
|
private final ConfigurationSection config;
|
||||||
private final ConfigurationSection config;
|
private final GroupProvider permissions;
|
||||||
private final GroupProvider permissions;
|
/**
|
||||||
/**
|
* Players who cannot rankup/prestige for a certain amount of time.
|
||||||
* Players who cannot rankup/prestige for a certain amount of time.
|
*/
|
||||||
*/
|
private final Map<Player, Long> cooldowns = new HashMap<>();
|
||||||
private final Map<Player, Long> cooldowns = new HashMap<>();
|
|
||||||
|
public RankupHelper(RankupPlugin plugin) {
|
||||||
public RankupHelper(RankupPlugin plugin) {
|
this.plugin = plugin;
|
||||||
this.plugin = plugin;
|
this.config = plugin.getConfig();
|
||||||
this.config = plugin.getConfig();
|
this.permissions = plugin.getPermissions();
|
||||||
this.permissions = plugin.getPermissions();
|
}
|
||||||
}
|
|
||||||
|
public void doRankup(Player player, RankElement<Rank> rank) {
|
||||||
public void doRankup(Player player, RankElement<Rank> rank) {
|
if (rank.getRank() != null) {
|
||||||
rank.getRank().runCommands(player);
|
permissions.removeGroup(player.getUniqueId(), rank.getRank().getRank());
|
||||||
|
}
|
||||||
if (rank.getRank() != null) {
|
permissions.addGroup(player.getUniqueId(), rank.getNext().getRank().getRank());
|
||||||
permissions.removeGroup(player.getUniqueId(), rank.getRank().getRank());
|
|
||||||
}
|
rank.getRank().runCommands(player);
|
||||||
permissions.addGroup(player.getUniqueId(), rank.getNext().getRank().getRank());
|
}
|
||||||
}
|
|
||||||
|
public void sendRankupMessages(Player player, RankElement<Rank> rank) {
|
||||||
public void sendRankupMessages(Player player, RankElement<Rank> rank) {
|
plugin.getMessage(rank.getRank(), Message.SUCCESS_PUBLIC)
|
||||||
plugin.getMessage(rank.getRank(), Message.SUCCESS_PUBLIC)
|
.failIfEmpty()
|
||||||
.failIfEmpty()
|
.replaceRanks(player, rank.getRank(), rank.getNext().getRank())
|
||||||
.replaceRanks(player, rank.getRank(), rank.getNext().getRank())
|
.broadcast();
|
||||||
.broadcast();
|
plugin.getMessage(rank.getRank(), Message.SUCCESS_PRIVATE)
|
||||||
plugin.getMessage(rank.getRank(), Message.SUCCESS_PRIVATE)
|
.failIfEmpty()
|
||||||
.failIfEmpty()
|
.replaceRanks(player, rank.getRank(), rank.getNext().getRank())
|
||||||
.replaceRanks(player, rank.getRank(), rank.getNext().getRank())
|
.send(player);
|
||||||
.send(player);
|
}
|
||||||
}
|
|
||||||
|
public void doPrestige(Player player, RankElement<Prestige> prestige) {
|
||||||
public void doPrestige(Player player, RankElement<Prestige> prestige) {
|
Prestige rank = prestige.getRank();
|
||||||
Prestige rank = prestige.getRank();
|
|
||||||
rank.runCommands(player);
|
permissions.removeGroup(player.getUniqueId(), rank.getFrom());
|
||||||
|
permissions.addGroup(player.getUniqueId(), rank.getTo());
|
||||||
permissions.removeGroup(player.getUniqueId(), rank.getFrom());
|
|
||||||
permissions.addGroup(player.getUniqueId(), rank.getTo());
|
if (rank.getRank() != null) {
|
||||||
|
permissions.removeGroup(player.getUniqueId(), rank.getRank());
|
||||||
if (rank.getRank() != null) {
|
}
|
||||||
permissions.removeGroup(player.getUniqueId(), rank.getRank());
|
permissions.addGroup(player.getUniqueId(), prestige.getNext().getRank().getRank());
|
||||||
}
|
|
||||||
permissions.addGroup(player.getUniqueId(), prestige.getNext().getRank().getRank());
|
rank.runCommands(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendPrestigeMessages(Player player, RankElement<Prestige> prestige) {
|
public void sendPrestigeMessages(Player player, RankElement<Prestige> prestige) {
|
||||||
Objects.requireNonNull(prestige);
|
Objects.requireNonNull(prestige);
|
||||||
Objects.requireNonNull(prestige.getNext());
|
Objects.requireNonNull(prestige.getNext());
|
||||||
|
|
||||||
plugin.getMessage(prestige.getRank(), Message.PRESTIGE_SUCCESS_PUBLIC)
|
plugin.getMessage(prestige.getRank(), Message.PRESTIGE_SUCCESS_PUBLIC)
|
||||||
.failIfEmpty()
|
.failIfEmpty()
|
||||||
.replaceRanks(player, prestige.getRank(), prestige.getNext().getRank())
|
.replaceRanks(player, prestige.getRank(), prestige.getNext().getRank())
|
||||||
.replaceFromTo(prestige.getRank())
|
.replaceFromTo(prestige.getRank())
|
||||||
.broadcast();
|
.broadcast();
|
||||||
plugin.getMessage(prestige.getRank(), Message.PRESTIGE_SUCCESS_PRIVATE)
|
plugin.getMessage(prestige.getRank(), Message.PRESTIGE_SUCCESS_PRIVATE)
|
||||||
.failIfEmpty()
|
.failIfEmpty()
|
||||||
.replaceRanks(player, prestige.getRank(), prestige.getNext().getRank())
|
.replaceRanks(player, prestige.getRank(), prestige.getNext().getRank())
|
||||||
.replaceFromTo(prestige.getRank())
|
.replaceFromTo(prestige.getRank())
|
||||||
.send(player);
|
.send(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkCooldown(Player player, Rank rank) {
|
private boolean checkCooldown(Player player, Rank rank) {
|
||||||
if (cooldowns.containsKey(player)) {
|
if (cooldowns.containsKey(player)) {
|
||||||
long time = System.currentTimeMillis() - cooldowns.get(player);
|
long time = System.currentTimeMillis() - cooldowns.get(player);
|
||||||
// if time passed is less than the cooldown
|
// if time passed is less than the cooldown
|
||||||
long cooldownSeconds = config.getInt("cooldown");
|
long cooldownSeconds = config.getInt("cooldown");
|
||||||
long timeLeft = (cooldownSeconds * 1000) - time;
|
long timeLeft = (cooldownSeconds * 1000) - time;
|
||||||
if (timeLeft > 0) {
|
if (timeLeft > 0) {
|
||||||
long secondsLeft = (long) Math.ceil(timeLeft / 1000f);
|
long secondsLeft = (long) Math.ceil(timeLeft / 1000f);
|
||||||
plugin
|
plugin
|
||||||
.getMessage(rank, secondsLeft > 1 ? Message.COOLDOWN_PLURAL : Message.COOLDOWN_SINGULAR)
|
.getMessage(rank, secondsLeft > 1 ? Message.COOLDOWN_PLURAL : Message.COOLDOWN_SINGULAR)
|
||||||
.failIfEmpty()
|
.failIfEmpty()
|
||||||
.replaceRanks(player, rank.getRank())
|
.replaceRanks(player, rank.getRank())
|
||||||
.replaceFromTo(rank)
|
.replaceFromTo(rank)
|
||||||
.replace(Variable.SECONDS, cooldownSeconds)
|
.replace(Variable.SECONDS, cooldownSeconds)
|
||||||
.replace(Variable.SECONDS_LEFT, secondsLeft)
|
.replace(Variable.SECONDS_LEFT, secondsLeft)
|
||||||
.send(player);
|
.send(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// cooldown has expired so remove it
|
// cooldown has expired so remove it
|
||||||
cooldowns.remove(player);
|
cooldowns.remove(player);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyCooldown(Player player) {
|
private void applyCooldown(Player player) {
|
||||||
if (config.getInt("cooldown") > 0) {
|
if (config.getInt("cooldown") > 0) {
|
||||||
cooldowns.put(player, System.currentTimeMillis());
|
cooldowns.put(player, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rankup(Player player) {
|
public void rankup(Player player) {
|
||||||
if (!checkRankup(player)) {
|
if (!checkRankup(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RankElement<Rank> rankElement = plugin.getRankups().getByPlayer(player);
|
RankElement<Rank> rankElement = plugin.getRankups().getByPlayer(player);
|
||||||
Rank rank = rankElement.getRank();
|
Rank rank = rankElement.getRank();
|
||||||
rank.applyRequirements(player);
|
rank.applyRequirements(player);
|
||||||
applyCooldown(player);
|
applyCooldown(player);
|
||||||
|
|
||||||
doRankup(player, rankElement);
|
doRankup(player, rankElement);
|
||||||
sendRankupMessages(player, rankElement);
|
sendRankupMessages(player, rankElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkRankup(Player player) {
|
public boolean checkRankup(Player player) {
|
||||||
return checkRankup(player, true);
|
return checkRankup(player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a player can rankup, and if they can't, sends the player a message and returns false
|
* 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
|
* @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, boolean message) {
|
public boolean checkRankup(Player player, boolean message) {
|
||||||
Rankups rankups = plugin.getRankups();
|
Rankups rankups = plugin.getRankups();
|
||||||
RankElement<Rank> rankElement = rankups.getByPlayer(player);
|
RankElement<Rank> rankElement = rankups.getByPlayer(player);
|
||||||
if (rankElement == null) { // check if in ladder
|
if (rankElement == null) { // check if in ladder
|
||||||
plugin.getMessage(Message.NOT_IN_LADDER)
|
plugin.getMessage(Message.NOT_IN_LADDER)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replace(Variable.PLAYER, player.getName())
|
.replace(Variable.PLAYER, player.getName())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Rank rank = rankElement.getRank();
|
Rank rank = rankElement.getRank();
|
||||||
if (!rankElement.hasNext()) {
|
if (!rankElement.hasNext()) {
|
||||||
Prestiges prestiges = plugin.getPrestiges();
|
Prestiges prestiges = plugin.getPrestiges();
|
||||||
plugin.getMessage(prestiges == null || !prestiges.getByPlayer(player).hasNext() ? Message.NO_RANKUP : Message.MUST_PRESTIGE)
|
plugin.getMessage(prestiges == null || !prestiges.getByPlayer(player).hasNext() ? Message.NO_RANKUP : Message.MUST_PRESTIGE)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replaceRanks(player, rankups.getTree().last().getRank().getRank())
|
.replaceRanks(player, rankups.getTree().last().getRank().getRank())
|
||||||
.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
|
||||||
if (message) {
|
if (message) {
|
||||||
plugin.replaceMoneyRequirements(plugin.getMessage(rank, Message.REQUIREMENTS_NOT_MET)
|
plugin.replaceMoneyRequirements(plugin.getMessage(rank, Message.REQUIREMENTS_NOT_MET)
|
||||||
.replaceRanks(player, rank, rankElement.getNext().getRank()), player, rank)
|
.replaceRanks(player, rank, rankElement.getNext().getRank()), player, rank)
|
||||||
.send(player);
|
.send(player);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
} else if (message && checkCooldown(player, rank)) {
|
} else if (message && checkCooldown(player, rank)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void prestige(Player player) {
|
public void prestige(Player player) {
|
||||||
if (!checkPrestige(player)) {
|
if (!checkPrestige(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RankElement<Prestige> rankElement = plugin.getPrestiges().getByPlayer(player);
|
RankElement<Prestige> rankElement = plugin.getPrestiges().getByPlayer(player);
|
||||||
Prestige prestige = rankElement.getRank();
|
Prestige prestige = rankElement.getRank();
|
||||||
prestige.applyRequirements(player);
|
prestige.applyRequirements(player);
|
||||||
|
|
||||||
applyCooldown(player);
|
applyCooldown(player);
|
||||||
doPrestige(player, rankElement);
|
doPrestige(player, rankElement);
|
||||||
sendPrestigeMessages(player, rankElement);
|
sendPrestigeMessages(player, rankElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkPrestige(Player player) {
|
public boolean checkPrestige(Player player) {
|
||||||
return checkPrestige(player, true);
|
return checkPrestige(player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkPrestige(Player player, boolean message) {
|
public boolean checkPrestige(Player player, boolean message) {
|
||||||
Prestiges prestiges = plugin.getPrestiges();
|
Prestiges prestiges = plugin.getPrestiges();
|
||||||
RankElement<Prestige> prestigeElement = prestiges.getByPlayer(player);
|
RankElement<Prestige> prestigeElement = prestiges.getByPlayer(player);
|
||||||
if (prestigeElement == null || !prestigeElement.getRank().isEligible(player)) { // check if in ladder
|
if (prestigeElement == null || !prestigeElement.getRank().isEligible(player)) { // check if in ladder
|
||||||
plugin.getMessage(Message.NOT_HIGH_ENOUGH)
|
plugin.getMessage(Message.NOT_HIGH_ENOUGH)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replace(Variable.PLAYER, player.getName())
|
.replace(Variable.PLAYER, player.getName())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (!prestigeElement.hasNext()) { // check if they are at the highest rank
|
} else if (!prestigeElement.hasNext()) { // check if they are at the highest rank
|
||||||
plugin.getMessage(prestigeElement.getRank(), Message.PRESTIGE_NO_PRESTIGE)
|
plugin.getMessage(prestigeElement.getRank(), Message.PRESTIGE_NO_PRESTIGE)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replaceRanks(player, prestigeElement.getRank().getRank())
|
.replaceRanks(player, prestigeElement.getRank().getRank())
|
||||||
.replaceFromTo(prestigeElement.getRank())
|
.replaceFromTo(prestigeElement.getRank())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (!prestigeElement.getRank().hasRequirements(player)) { // check if they can afford it
|
} else if (!prestigeElement.getRank().hasRequirements(player)) { // check if they can afford it
|
||||||
plugin.replaceMoneyRequirements(
|
plugin.replaceMoneyRequirements(
|
||||||
plugin.getMessage(prestigeElement.getRank(), Message.PRESTIGE_REQUIREMENTS_NOT_MET)
|
plugin.getMessage(prestigeElement.getRank(), Message.PRESTIGE_REQUIREMENTS_NOT_MET)
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
.replaceRanks(player, prestigeElement.getRank(), prestigeElement.getNext().getRank().getRank()), player, prestigeElement.getRank())
|
.replaceRanks(player, prestigeElement.getRank(), prestigeElement.getNext().getRank().getRank()), player, prestigeElement.getRank())
|
||||||
.replaceFromTo(prestigeElement.getRank())
|
.replaceFromTo(prestigeElement.getRank())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (checkCooldown(player, prestigeElement.getRank())) {
|
} else if (checkCooldown(player, prestigeElement.getRank())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class RankupCommand implements CommandExecutor {
|
|||||||
case "gui":
|
case "gui":
|
||||||
Gui gui = Gui.of(player, rankElement.getRank(), rankElement.getNext().getRank(), plugin, args.length > 0 && args[0].equalsIgnoreCase("gui"));
|
Gui gui = Gui.of(player, rankElement.getRank(), rankElement.getNext().getRank(), plugin, args.length > 0 && args[0].equalsIgnoreCase("gui"));
|
||||||
if (gui == null) {
|
if (gui == null) {
|
||||||
player.sendMessage(ChatColor.RED + "GUI is not available. Check console for more informatiopn.");
|
player.sendMessage(ChatColor.RED + "GUI is not available. Check console for more information.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
gui.open(player);
|
gui.open(player);
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ public class RanksGuiListener implements Listener {
|
|||||||
Player player = (Player) event.getWhoClicked();
|
Player player = (Player) event.getWhoClicked();
|
||||||
RanksGui ranksGui = guiMap.get(player);
|
RanksGui ranksGui = guiMap.get(player);
|
||||||
if (ranksGui != null && event.getInventory() == ranksGui.getInventory()) {
|
if (ranksGui != null && event.getInventory() == ranksGui.getInventory()) {
|
||||||
ranksGui.click(event);
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
ranksGui.click(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user