update to alpha.10

This commit is contained in:
okx-code
2018-08-23 23:32:19 +01:00
parent 703342024d
commit be5ee90036
9 changed files with 54 additions and 35 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
} }
group 'sh.okx' group 'sh.okx'
version '3.0-alpha.7' version '3.0-alpha.10'
sourceCompatibility = 1.8 sourceCompatibility = 1.8
+20 -1
View File
@@ -26,11 +26,14 @@ import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.Rankups; import sh.okx.rankup.ranks.Rankups;
import sh.okx.rankup.ranks.requirements.MoneyRequirement; import sh.okx.rankup.ranks.requirements.MoneyRequirement;
import sh.okx.rankup.ranks.requirements.PlaytimeMinutesRequirement; import sh.okx.rankup.ranks.requirements.PlaytimeMinutesRequirement;
import sh.okx.rankup.ranks.requirements.Requirement;
import sh.okx.rankup.ranks.requirements.RequirementRegistry; import sh.okx.rankup.ranks.requirements.RequirementRegistry;
import sh.okx.rankup.ranks.requirements.XpLevelRequirement; import sh.okx.rankup.ranks.requirements.XpLevelRequirement;
import java.io.File; import java.io.File;
import java.text.DecimalFormat;
import java.util.List; import java.util.List;
import java.util.function.Supplier;
public class Rankup extends JavaPlugin { public class Rankup extends JavaPlugin {
@Getter @Getter
@@ -87,7 +90,7 @@ public class Rankup extends JavaPlugin {
placeholders.register(); placeholders.register();
} }
if (config.getInt("version") != YamlConfiguration.loadConfiguration(getTextResource("config.yml")).getInt("version")) { if (config.getInt("version") != 0) {
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 your config files (or the folder they are in),"); getLogger().severe("To update, please rename your config files (or the folder they are in),");
@@ -231,9 +234,25 @@ public class Rankup extends JavaPlugin {
.replace(Variable.MONEY, formatMoney(amount)) .replace(Variable.MONEY, formatMoney(amount))
.replace(Variable.MONEY_NEEDED, formatMoney(Math.max(0, amount - balance))); .replace(Variable.MONEY_NEEDED, formatMoney(Math.max(0, amount - balance)));
} }
replaceRequirements(player, builder, rank);
builder.send(player); builder.send(player);
return false; return false;
} }
return true; return true;
} }
public void replaceRequirements(Player player, MessageBuilder builder, Rank rank) {
DecimalFormat simpleFormat = placeholders.getSimpleFormat();
DecimalFormat percentFormat = placeholders.getPercentFormat();
for(Requirement requirement : rank.getRequirements()) {
replaceRequirements(builder, Variable.AMOUNT, requirement, () -> simpleFormat.format(requirement.getAmount()));
replaceRequirements(builder, Variable.AMOUNT_NEEDED, requirement, () -> simpleFormat.format(requirement.getRemaining(player)));
replaceRequirements(builder, Variable.PERCENT_LEFT, requirement, () -> percentFormat.format((requirement.getRemaining(player) / requirement.getAmount()) * 100));
replaceRequirements(builder, Variable.PERCENT_DONE, requirement, () -> percentFormat.format((1-(requirement.getRemaining(player) / requirement.getAmount())) * 100));
}
}
private void replaceRequirements(MessageBuilder builder, Variable variable, Requirement requirement, Supplier<Object> value) {
builder.replace(variable + " " + requirement.getName(), value.get());
}
} }
@@ -13,8 +13,6 @@ import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.Rankups; import sh.okx.rankup.ranks.Rankups;
import sh.okx.rankup.ranks.requirements.Requirement; import sh.okx.rankup.ranks.requirements.Requirement;
import java.text.DecimalFormat;
@RequiredArgsConstructor @RequiredArgsConstructor
public class RankListCommand implements CommandExecutor { public class RankListCommand implements CommandExecutor {
private final Rankup plugin; private final Rankup plugin;
@@ -59,36 +57,36 @@ public class RankListCommand implements CommandExecutor {
private void sendMessage(CommandSender player, int state, Rank oldRank, Rank rank) { private void sendMessage(CommandSender player, int state, Rank oldRank, Rank rank) {
if(state == 0) { if(state == 0) {
replaceCost(plugin.getMessage(oldRank, Message.RANKS_COMPLETE) replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_COMPLETE)
.replaceAll(player, oldRank, rank), player, oldRank) .replaceAll(player, oldRank, rank), player, oldRank)
.send(player); .send(player);
} else if(state == 1) { } else if(state == 1) {
replaceCost(plugin.getMessage(oldRank, Message.RANKS_CURRENT) replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_CURRENT)
.replaceAll(player, oldRank, rank), player, oldRank) .replaceAll(player, oldRank, rank), player, oldRank)
.send(player); .send(player);
} else if(state == 2) { } else if(state == 2) {
replaceCost(plugin.getMessage(oldRank, Message.RANKS_INCOMPLETE) replaceRequirements(plugin.getMessage(oldRank, Message.RANKS_INCOMPLETE)
.replaceAll(player, oldRank, rank), player, oldRank) .replaceAll(player, oldRank, rank), player, oldRank)
.send(player); .send(player);
} }
} }
private MessageBuilder replaceCost(MessageBuilder builder, CommandSender sender, Rank rank) { private MessageBuilder replaceRequirements(MessageBuilder builder, CommandSender sender, Rank rank) {
Requirement money = rank.getRequirement("money"); Requirement money = rank.getRequirement("money");
if(money == null || plugin.getEconomy() == null) { Double amount = null;
return builder;
}
double amount;
if(sender instanceof Player && rank.isInRank((Player) sender)) { if(sender instanceof Player && rank.isInRank((Player) sender)) {
amount = money.getRemaining((Player) sender); if(money != null && plugin.getEconomy() != null) {
amount = money.getRemaining((Player) sender);
}
plugin.replaceRequirements((Player) sender, builder, rank);
} else { } else {
amount = money.getAmount(); amount = money.getAmount();
} }
DecimalFormat percentFormat = plugin.getPlaceholders().getPercentFormat(); if(amount != null && plugin.getEconomy() != null) {
return builder builder.replace(Variable.MONEY_NEEDED, plugin.formatMoney(amount));
.replace(Variable.MONEY_NEEDED, plugin.formatMoney(amount)) builder.replace(Variable.MONEY, plugin.formatMoney(money.getAmount()));
.replace(Variable.PERCENT_LEFT, percentFormat.format((amount / money.getAmount()) * 100)) }
.replace(Variable.PERCENT_DONE, percentFormat.format((1-(amount / money.getAmount())) * 100)) return builder;
.replace(Variable.MONEY, plugin.formatMoney(money.getAmount()));
} }
} }
@@ -11,6 +11,8 @@ import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.requirements.Requirement; import sh.okx.rankup.ranks.requirements.Requirement;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MessageBuilder { public class MessageBuilder {
private String message; private String message;
@@ -24,7 +26,13 @@ public class MessageBuilder {
} }
public MessageBuilder replace(Variable variable, Object value) { public MessageBuilder replace(Variable variable, Object value) {
this.message = variable.replace(message, String.valueOf(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; return this;
} }
@@ -11,20 +11,13 @@ public enum Variable {
RANK_NAME, RANK_NAME,
MONEY, MONEY,
MONEY_NEEDED, MONEY_NEEDED,
AMOUNT,
AMOUNT_NEEDED,
PERCENT_DONE, PERCENT_DONE,
PERCENT_LEFT; PERCENT_LEFT;
public static Variable getVariable(String name) { public String replace(String message, String value, String type) {
for(Variable variable : values()) { Pattern pattern = Pattern.compile("\\{" + type + "_" + this + "}", Pattern.CASE_INSENSITIVE);
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); Matcher matcher = pattern.matcher(message);
return matcher.replaceAll(value); return matcher.replaceAll(value);
} }
@@ -85,9 +85,9 @@ public class Placeholders extends PlaceholderExpansion {
case "percent_left_formatted": case "percent_left_formatted":
return percentFormat.format(Math.max(0D, orElse(rank, r -> (1-(plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount())) * 100, 0).doubleValue())); return percentFormat.format(Math.max(0D, orElse(rank, r -> (1-(plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount())) * 100, 0).doubleValue()));
case "percent_done": case "percent_done":
return String.valueOf(Math.max(100D, orElse(rank, r -> (plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount()) * 100, 0).doubleValue())); return String.valueOf(Math.min(100D, orElse(rank, r -> (plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount()) * 100, 0).doubleValue()));
case "percent_done_formatted": case "percent_done_formatted":
return percentFormat.format(Math.max(100D, orElse(rank, r -> (plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount()) * 100, 0).doubleValue())); return percentFormat.format(Math.min(100D, orElse(rank, r -> (plugin.getEconomy().getBalance(player) / r.getRequirement("money").getAmount()) * 100, 0).doubleValue()));
default: default:
return null; return null;
} }
@@ -26,6 +26,7 @@ public class Rank {
private final String next; private final String next;
@Getter @Getter
private final String rank; private final String rank;
@Getter
private final Set<Requirement> requirements; private final Set<Requirement> requirements;
private final BinaryOperator<Boolean> reducer; private final BinaryOperator<Boolean> reducer;
private final List<String> commands; private final List<String> commands;
@@ -35,7 +35,7 @@ public class PlaytimeMinutesRequirement extends Requirement {
@Override @Override
public double getRemaining(Player player) { public double getRemaining(Player player) {
return amount - (player.getStatistic(playOneTick) * TICKS_PER_MINUTE); return Math.max(0, amount - (player.getStatistic(playOneTick) * TICKS_PER_MINUTE));
} }
@Override @Override
+1 -1
View File
@@ -1,5 +1,5 @@
name: Rankup name: Rankup
version: 3.0-alpha.7 version: 3.0-alpha.10
main: sh.okx.rankup.Rankup main: sh.okx.rankup.Rankup
author: Okx author: Okx
depend: [Vault] depend: [Vault]