add code
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package sh.okx.rankup.messages;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
class EmptyMessageBuilder extends MessageBuilder {
|
||||
EmptyMessageBuilder() {
|
||||
super(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageBuilder failIfEmpty() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
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.title"),
|
||||
RANKS_HEADER("ranks.header"),
|
||||
RANKS_FOOTER("ranks.footer"),
|
||||
RANKS_COMPLETE("rankup.ranks.complete"),
|
||||
RANKS_CURRENT("rankup.ranks.current"),
|
||||
RANKS_INCOMPLETE("rankup.ranks.incomplete");
|
||||
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
Message(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package sh.okx.rankup.messages;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
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.ranks.Rank;
|
||||
import sh.okx.rankup.ranks.requirements.Requirement;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
public class MessageBuilder {
|
||||
private String message;
|
||||
|
||||
public MessageBuilder(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static MessageBuilder of(ConfigurationSection config, Message message) {
|
||||
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', config.getString(message.getName())));
|
||||
}
|
||||
|
||||
public MessageBuilder replace(Variable variable, Object value) {
|
||||
this.message = variable.replace(message, String.valueOf(value));
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder replaceAll(CommandSender player, Rank rank) {
|
||||
replace(Variable.PLAYER, player.getName());
|
||||
replaceAll(rank);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder replaceAll(CommandSender player, Rank oldRank, Rank rank) {
|
||||
replace(Variable.PLAYER, player.getName());
|
||||
replaceAll(oldRank, rank);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder replaceAll(Rank rank) {
|
||||
replace(Variable.RANK, rank.getRank());
|
||||
replace(Variable.RANK_NAME, rank.getName());
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder replaceAll(Rank oldRank, Rank rank) {
|
||||
replace(Variable.RANK, rank.getRank());
|
||||
replace(Variable.RANK_NAME, rank.getName());
|
||||
replace(Variable.OLD_RANK, oldRank.getRank());
|
||||
replace(Variable.OLD_RANK_NAME, oldRank.getName());
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder replaceCost(CommandSender sender, Economy economy, Rank rank) {
|
||||
Requirement money = rank.getRequirement("money");
|
||||
if(money == null || economy == null) {
|
||||
return this;
|
||||
}
|
||||
replace(Variable.MONEY, money.getAmount());
|
||||
if(sender instanceof Player && rank.isInRank((Player) sender)) {
|
||||
replace(Variable.MONEY_NEEDED, money.getRemaining((Player) sender));
|
||||
} else {
|
||||
replace(Variable.MONEY_NEEDED, money.getAmount());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fails the MessageBuilder if the message is empty.
|
||||
* if this fails, all subsequent calls to that MessageBuilder will do nothing
|
||||
* @return an EmptyMessageBuilder if the message is empty, itself otherwise
|
||||
*/
|
||||
public MessageBuilder failIfEmpty() {
|
||||
if(message.isEmpty()) {
|
||||
return new EmptyMessageBuilder();
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public void send(CommandSender sender) {
|
||||
sender.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package sh.okx.rankup.messages;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public enum Variable {
|
||||
PLAYER,
|
||||
OLD_RANK,
|
||||
OLD_RANK_NAME,
|
||||
RANK,
|
||||
RANK_NAME,
|
||||
MONEY,
|
||||
MONEY_NEEDED,
|
||||
PERCENT_DONE,
|
||||
PERCENT_LEFT;
|
||||
|
||||
public static Variable getVariable(String name) {
|
||||
for(Variable variable : values()) {
|
||||
if(variable.toString().equalsIgnoreCase(name)) {
|
||||
return variable;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String replace(String message, String value) {
|
||||
Pattern pattern = Pattern.compile("\\{" + this + "}", Pattern.CASE_INSENSITIVE);
|
||||
Matcher matcher = pattern.matcher(message);
|
||||
return matcher.replaceAll(value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user