3.7 add prestige-based requirements

This commit is contained in:
okx-code
2020-04-13 14:24:31 +01:00
parent fe01ce1c4f
commit b7dfd5d9e3
92 changed files with 5908 additions and 5906 deletions
@@ -1,41 +1,41 @@
package sh.okx.rankup.messages;
import lombok.Getter;
public enum Message {
NOT_IN_LADDER("not-in-ladder"),
REQUIREMENTS_NOT_MET("rankup.requirements-not-met"),
NO_RANKUP("rankup.no-rankup"),
SUCCESS_PUBLIC("rankup.success-public"),
SUCCESS_PRIVATE("rankup.success-private"),
CONFIRMATION("rankup.confirmation"),
TITLE("rankup.gui.title"),
RANKS_HEADER("rankup.list.header"),
RANKS_FOOTER("rankup.list.footer"),
RANKS_COMPLETE("rankup.list.complete"),
RANKS_CURRENT("rankup.list.current"),
RANKS_INCOMPLETE("rankup.list.incomplete"),
PRESTIGE_REQUIREMENTS_NOT_MET("prestige.requirements-not-met"),
PRESTIGE_NO_PRESTIGE("prestige.no-prestige"),
PRESTIGES_HEADER("prestige.list.header"),
PRESTIGES_FOOTER("prestige.list.footer"),
PRESTIGES_COMPLETE("prestige.list.complete"),
PRESTIGES_CURRENT("prestige.list.current"),
PRESTIGES_INCOMPLETE("prestige.list.incomplete"),
PRESTIGE_TITLE("prestige.gui.title"),
COOLDOWN_SINGULAR("rankup.cooldown.singular"),
COOLDOWN_PLURAL("rankup.cooldown.plural"),
MUST_PRESTIGE("rankup.must-prestige"),
NOT_HIGH_ENOUGH("not-high-enough"),
PRESTIGE_SUCCESS_PUBLIC("prestige.success-public"),
PRESTIGE_SUCCESS_PRIVATE("prestige.success-private"),
PRESTIGE_CONFIRMATION("prestige.confirmation"),
INVALID_RANKUP("invalid-rankup");
@Getter
private final String name;
Message(String name) {
this.name = name;
}
package sh.okx.rankup.messages;
import lombok.Getter;
public enum Message {
NOT_IN_LADDER("not-in-ladder"),
REQUIREMENTS_NOT_MET("rankup.requirements-not-met"),
NO_RANKUP("rankup.no-rankup"),
SUCCESS_PUBLIC("rankup.success-public"),
SUCCESS_PRIVATE("rankup.success-private"),
CONFIRMATION("rankup.confirmation"),
TITLE("rankup.gui.title"),
RANKS_HEADER("rankup.list.header"),
RANKS_FOOTER("rankup.list.footer"),
RANKS_COMPLETE("rankup.list.complete"),
RANKS_CURRENT("rankup.list.current"),
RANKS_INCOMPLETE("rankup.list.incomplete"),
PRESTIGE_REQUIREMENTS_NOT_MET("prestige.requirements-not-met"),
PRESTIGE_NO_PRESTIGE("prestige.no-prestige"),
PRESTIGES_HEADER("prestige.list.header"),
PRESTIGES_FOOTER("prestige.list.footer"),
PRESTIGES_COMPLETE("prestige.list.complete"),
PRESTIGES_CURRENT("prestige.list.current"),
PRESTIGES_INCOMPLETE("prestige.list.incomplete"),
PRESTIGE_TITLE("prestige.gui.title"),
COOLDOWN_SINGULAR("rankup.cooldown.singular"),
COOLDOWN_PLURAL("rankup.cooldown.plural"),
MUST_PRESTIGE("rankup.must-prestige"),
NOT_HIGH_ENOUGH("not-high-enough"),
PRESTIGE_SUCCESS_PUBLIC("prestige.success-public"),
PRESTIGE_SUCCESS_PRIVATE("prestige.success-private"),
PRESTIGE_CONFIRMATION("prestige.confirmation"),
INVALID_RANKUP("invalid-rankup");
@Getter
private final String name;
Message(String name) {
this.name = name;
}
}
@@ -1,124 +1,124 @@
package sh.okx.rankup.messages;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import sh.okx.rankup.prestige.Prestige;
import sh.okx.rankup.prestige.Prestiges;
import sh.okx.rankup.ranks.Rank;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MessageBuilder {
private String message;
public MessageBuilder(String message) {
this.message = message;
}
public static MessageBuilder of(ConfigurationSection config, Message message) {
return MessageBuilder.of(config, message.getName());
}
private static MessageBuilder of(ConfigurationSection config, String message) {
String string = config.getString(message);
Objects.requireNonNull(string, "Configuration message '" + message + "' not found!");
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', string));
}
public MessageBuilder replace(Variable variable, Object value) {
return replace(variable.name(), value);
}
public MessageBuilder replace(String name, Object value) {
Pattern pattern = Pattern.compile("\\{" + name + "}", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(message);
this.message = matcher.replaceAll(String.valueOf(value));
return this;
}
public MessageBuilder replaceFirstPrestige(Rank rank, Prestiges prestiges, String with) {
if (prestiges != null && prestiges.getFirst().equals(rank)) {
replace(Variable.OLD_RANK, with);
}
return this;
}
public MessageBuilder replaceRanks(CommandSender player, String rankName) {
replace(Variable.PLAYER, player.getName());
replaceRanks(rankName);
return this;
}
public MessageBuilder replaceRanks(CommandSender player, Rank oldRank, String rankName) {
replace(Variable.PLAYER, player.getName());
replaceRanks(oldRank, rankName);
return this;
}
public MessageBuilder replaceRanks(String rankName) {
replace(Variable.RANK, rankName);
return this;
}
public MessageBuilder replaceRanks(Rank oldRank, String rankName) {
replaceRanks(rankName);
replace(Variable.OLD_RANK, oldRank.getRank());
return this;
}
public MessageBuilder replaceFromTo(Rank rank) {
if (rank instanceof Prestige) {
Prestige prestige = (Prestige) rank;
replace(Variable.FROM, prestige.getFrom());
replace(Variable.TO, prestige.getTo());
}
return this;
}
/**
* Fails the MessageBuilder if the message is empty.
* if this fails, all subsequent calls to that MessageBuilder will do nothing
* @return a NullMessageBuilder if the message is empty, itself otherwise
*/
public MessageBuilder failIfEmpty() {
return failIf(message.isEmpty());
}
public MessageBuilder failIf(boolean value) {
if (value) {
return new NullMessageBuilder();
} else {
return this;
}
}
public void send(CommandSender sender) {
String msg = message;
if (sender instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
msg = PlaceholderAPI.setPlaceholders((Player) sender, msg);
}
sender.sendMessage(msg);
}
/**
* Sends the message to all players
* ie, calls MessageBuilder#send(Player) for all players online, and sends the message in the console.
*/
public void broadcast() {
for (Player player : Bukkit.getOnlinePlayers()) {
send(player);
}
send(Bukkit.getConsoleSender());
}
@Override
public String toString() {
return message;
}
}
package sh.okx.rankup.messages;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import sh.okx.rankup.prestige.Prestige;
import sh.okx.rankup.prestige.Prestiges;
import sh.okx.rankup.ranks.Rank;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MessageBuilder {
private String message;
public MessageBuilder(String message) {
this.message = message;
}
public static MessageBuilder of(ConfigurationSection config, Message message) {
return MessageBuilder.of(config, message.getName());
}
private static MessageBuilder of(ConfigurationSection config, String message) {
String string = config.getString(message);
Objects.requireNonNull(string, "Configuration message '" + message + "' not found!");
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', string));
}
public MessageBuilder replace(Variable variable, Object value) {
return replace(variable.name(), value);
}
public MessageBuilder replace(String name, Object value) {
Pattern pattern = Pattern.compile("\\{" + name + "}", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(message);
this.message = matcher.replaceAll(String.valueOf(value));
return this;
}
public MessageBuilder replaceFirstPrestige(Rank rank, Prestiges prestiges, String with) {
if (prestiges != null && prestiges.getFirst().equals(rank)) {
replace(Variable.OLD_RANK, with);
}
return this;
}
public MessageBuilder replaceRanks(CommandSender player, String rankName) {
replace(Variable.PLAYER, player.getName());
replaceRanks(rankName);
return this;
}
public MessageBuilder replaceRanks(CommandSender player, Rank oldRank, String rankName) {
replace(Variable.PLAYER, player.getName());
replaceRanks(oldRank, rankName);
return this;
}
public MessageBuilder replaceRanks(String rankName) {
replace(Variable.RANK, rankName);
return this;
}
public MessageBuilder replaceRanks(Rank oldRank, String rankName) {
replaceRanks(rankName);
replace(Variable.OLD_RANK, oldRank.getRank());
return this;
}
public MessageBuilder replaceFromTo(Rank rank) {
if (rank instanceof Prestige) {
Prestige prestige = (Prestige) rank;
replace(Variable.FROM, prestige.getFrom());
replace(Variable.TO, prestige.getTo());
}
return this;
}
/**
* Fails the MessageBuilder if the message is empty.
* if this fails, all subsequent calls to that MessageBuilder will do nothing
* @return a NullMessageBuilder if the message is empty, itself otherwise
*/
public MessageBuilder failIfEmpty() {
return failIf(message.isEmpty());
}
public MessageBuilder failIf(boolean value) {
if (value) {
return new NullMessageBuilder();
} else {
return this;
}
}
public void send(CommandSender sender) {
String msg = message;
if (sender instanceof Player && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
msg = PlaceholderAPI.setPlaceholders((Player) sender, msg);
}
sender.sendMessage(msg);
}
/**
* Sends the message to all players
* ie, calls MessageBuilder#send(Player) for all players online, and sends the message in the console.
*/
public void broadcast() {
for (Player player : Bukkit.getOnlinePlayers()) {
send(player);
}
send(Bukkit.getConsoleSender());
}
@Override
public String toString() {
return message;
}
}
@@ -1,35 +1,35 @@
package sh.okx.rankup.messages;
import org.bukkit.command.CommandSender;
/**
* A no-op implementation of MessageBuilder
*/
public class NullMessageBuilder extends MessageBuilder {
NullMessageBuilder() {
super(null);
}
@Override
public MessageBuilder failIf(boolean value) {
return this;
}
@Override
public MessageBuilder replace(Variable variable, Object value) {
return this;
}
@Override
public void send(CommandSender sender) {
}
@Override
public void broadcast() {
}
@Override
public String toString() {
return null;
}
}
package sh.okx.rankup.messages;
import org.bukkit.command.CommandSender;
/**
* A no-op implementation of MessageBuilder
*/
public class NullMessageBuilder extends MessageBuilder {
NullMessageBuilder() {
super(null);
}
@Override
public MessageBuilder failIf(boolean value) {
return this;
}
@Override
public MessageBuilder replace(Variable variable, Object value) {
return this;
}
@Override
public void send(CommandSender sender) {
}
@Override
public void broadcast() {
}
@Override
public String toString() {
return null;
}
}
@@ -1,18 +1,18 @@
package sh.okx.rankup.messages;
public enum Variable {
PLAYER,
OLD_RANK,
RANK,
FROM,
TO,
MONEY,
MONEY_NEEDED,
AMOUNT,
AMOUNT_NEEDED,
AMOUNT_DONE,
PERCENT_DONE,
PERCENT_LEFT,
SECONDS,
SECONDS_LEFT
}
package sh.okx.rankup.messages;
public enum Variable {
PLAYER,
OLD_RANK,
RANK,
FROM,
TO,
MONEY,
MONEY_NEEDED,
AMOUNT,
AMOUNT_NEEDED,
AMOUNT_DONE,
PERCENT_DONE,
PERCENT_LEFT,
SECONDS,
SECONDS_LEFT
}