update to alpha.10
This commit is contained in:
+1
-1
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
if(money != null && plugin.getEconomy() != null) {
|
||||||
amount = money.getRemaining((Player) sender);
|
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,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]
|
||||||
|
|||||||
Reference in New Issue
Block a user