diff --git a/build.gradle b/build.gradle index 425c0b2..173c78a 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'sh.okx' -version '3.11.3' +version '3.11.4-beta' repositories { mavenCentral() diff --git a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java index 2e56ce1..36e3563 100644 --- a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java +++ b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java @@ -92,12 +92,26 @@ public class RankupExpansion implements Expansion { } else { return prestige.getRank(); } + case "current_prestige_name": + requirePrestiging(prestiges, params); + if (prestige == null || prestige.getRank() == null) { + return getPlaceholder("no-prestige"); + } else { + return prestige.getDisplayName(); + } case "next_prestige": requirePrestiging(prestiges, params); if (prestigeElement != null && !prestigeElement.hasNext()) { return getPlaceholder("highest-rank"); } - return orElse(prestige, Prestige::getNext, prestiges.getFirst().getNext()); + return orElse(prestigeElement, e -> e.getNext().getRank().getRank(), prestiges.getTree().getFirst().getNext().getRank().getRank()); + case "next_prestige_name": + requirePrestiging(prestiges, params); + if (prestigeElement != null && !prestigeElement.hasNext()) { + return getPlaceholder("highest-rank"); + } else { + return orElse(prestigeElement, e -> e.getNext().getRank().getDisplayName(), prestiges.getTree().getFirst().getNext().getRank().getDisplayName()); + } case "prestige_money": requirePrestiging(prestiges, params); return String.valueOf(simplify(orElse(prestige, r -> r.isIn(player) ? r.getRequirement(player, "money").getValueDouble() : 0, 0))); @@ -105,16 +119,21 @@ public class RankupExpansion implements Expansion { requirePrestiging(prestiges, params); return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement(player, "money").getValueDouble() : 0, 0D)); case "current_rank": - if (rank == null) { - return getPlaceholder("not-in-ladder"); - } else { - return rank.getRank(); - } + return orElse(rank, Rank::getRank, getPlaceholder("not-in-ladder")); + case "current_rank_name": + return orElse(rank, Rank::getDisplayName, getPlaceholder("not-in-ladder")); case "next_rank": if (rankElement != null && !rankElement.hasNext()) { return getPlaceholder("highest-rank"); + } else { + return orElsePlaceholder(rankElement, e -> e.getNext().getRank().getRank(), "not-in-ladder"); + } + case "next_rank_name": + if (rankElement != null && !rankElement.hasNext()) { + return getPlaceholder("highest-rank"); + } else { + return orElsePlaceholder(rankElement, e -> e.getNext().getRank().getDisplayName(), "not-in-ladder"); } - return orElsePlaceholder(rank, r -> orElsePlaceholder(rank, Rank::getNext, "highest-rank"), "not-in-ladder"); case "money": return String.valueOf(getMoney(player, rank)); case "money_formatted": diff --git a/src/main/java/sh/okx/rankup/prestige/Prestige.java b/src/main/java/sh/okx/rankup/prestige/Prestige.java index 9e08303..3baa600 100644 --- a/src/main/java/sh/okx/rankup/prestige/Prestige.java +++ b/src/main/java/sh/okx/rankup/prestige/Prestige.java @@ -1,5 +1,6 @@ package sh.okx.rankup.prestige; +import java.util.List; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; @@ -14,9 +15,6 @@ import sh.okx.rankup.ranks.requirements.ListRankRequirements; import sh.okx.rankup.ranks.requirements.RankRequirements; import sh.okx.rankup.requirements.Requirement; -import java.util.List; -import java.util.Set; - @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class Prestige extends Rank { @@ -33,7 +31,7 @@ public class Prestige extends Rank { public static Prestige deserialize(RankupPlugin plugin, ConfigurationSection section) { List requirementsList = section.getStringList("requirements"); - Set requirements = plugin.getRequirements().getRequirements(requirementsList); + List requirements = plugin.getRequirements().getRequirements(requirementsList); return new Prestige(section, plugin, section.getString("next"), diff --git a/src/main/java/sh/okx/rankup/ranks/requirements/LastRankRequirements.java b/src/main/java/sh/okx/rankup/ranks/requirements/LastRankRequirements.java index c05f680..35d58a2 100644 --- a/src/main/java/sh/okx/rankup/ranks/requirements/LastRankRequirements.java +++ b/src/main/java/sh/okx/rankup/ranks/requirements/LastRankRequirements.java @@ -1,15 +1,14 @@ package sh.okx.rankup.ranks.requirements; import java.util.Collections; -import java.util.Set; import org.bukkit.entity.Player; import sh.okx.rankup.requirements.Requirement; public class LastRankRequirements implements RankRequirements { @Override - public Set getRequirements(Player player) { - return Collections.emptySet(); + public Iterable getRequirements(Player player) { + return Collections.emptyList(); } @Override diff --git a/src/main/java/sh/okx/rankup/ranks/requirements/ListRankRequirements.java b/src/main/java/sh/okx/rankup/ranks/requirements/ListRankRequirements.java index 0be4d86..38a139b 100644 --- a/src/main/java/sh/okx/rankup/ranks/requirements/ListRankRequirements.java +++ b/src/main/java/sh/okx/rankup/ranks/requirements/ListRankRequirements.java @@ -1,19 +1,19 @@ package sh.okx.rankup.ranks.requirements; -import java.util.Set; +import java.util.List; import org.bukkit.entity.Player; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.Requirement; public class ListRankRequirements implements RankRequirements { - private final Set requirements; + private final List requirements; - public ListRankRequirements(Set requirements) { + public ListRankRequirements(List requirements) { this.requirements = requirements; } @Override - public Set getRequirements(Player player) { + public Iterable getRequirements(Player player) { return requirements; } diff --git a/src/main/java/sh/okx/rankup/ranks/requirements/PrestigeListRankRequirements.java b/src/main/java/sh/okx/rankup/ranks/requirements/PrestigeListRankRequirements.java index a14b7ef..6d68a58 100644 --- a/src/main/java/sh/okx/rankup/ranks/requirements/PrestigeListRankRequirements.java +++ b/src/main/java/sh/okx/rankup/ranks/requirements/PrestigeListRankRequirements.java @@ -1,15 +1,13 @@ package sh.okx.rankup.ranks.requirements; +import java.util.Map; +import java.util.Objects; import org.bukkit.entity.Player; import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestiges; import sh.okx.rankup.requirements.Requirement; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - public class PrestigeListRankRequirements implements RankRequirements { private final RankupPlugin plugin; private final RankRequirements defaultRequirements; @@ -25,7 +23,7 @@ public class PrestigeListRankRequirements implements RankRequirements { } @Override - public Set getRequirements(Player player) { + public Iterable getRequirements(Player player) { return getRankRequirements(player).getRequirements(player); } diff --git a/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirements.java b/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirements.java index f8c0696..c3be109 100644 --- a/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirements.java +++ b/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirements.java @@ -1,11 +1,10 @@ package sh.okx.rankup.ranks.requirements; -import java.util.Set; import org.bukkit.entity.Player; import sh.okx.rankup.requirements.Requirement; public interface RankRequirements { - Set getRequirements(Player player); + Iterable getRequirements(Player player); boolean hasRequirements(Player player); Requirement getRequirement(Player player, String name); diff --git a/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirementsFactory.java b/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirementsFactory.java index 742aab1..95f8692 100644 --- a/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirementsFactory.java +++ b/src/main/java/sh/okx/rankup/ranks/requirements/RankRequirementsFactory.java @@ -3,8 +3,8 @@ package sh.okx.rankup.ranks.requirements; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Set; import org.bukkit.configuration.ConfigurationSection; import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; @@ -33,12 +33,12 @@ public class RankRequirementsFactory { } } - private static Set stringsToRequirements(RankupPlugin plugin, Iterable strings) { + private static List stringsToRequirements(RankupPlugin plugin, Iterable strings) { return plugin.getRequirements().getRequirements(strings); } private static RankRequirements getListRequirements(RankupPlugin plugin, Iterable list) { - Set requirements = stringsToRequirements(plugin, list); + List requirements = stringsToRequirements(plugin, list); return new ListRankRequirements(requirements); } diff --git a/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java b/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java index 437294a..868f93b 100644 --- a/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java +++ b/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java @@ -1,7 +1,9 @@ package sh.okx.rankup.requirements; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Objects; import java.util.Set; @@ -29,8 +31,8 @@ public class RequirementRegistry { return null; } - public Set getRequirements(Iterable list) { - Set requirements = new HashSet<>(); + public List getRequirements(Iterable list) { + List requirements = new ArrayList<>(); for (String req : list) { String[] parts = req.split(" ", 2); diff --git a/src/main/resources/prestiges.yml b/src/main/resources/prestiges.yml index 606bd0b..8929e2f 100644 --- a/src/main/resources/prestiges.yml +++ b/src/main/resources/prestiges.yml @@ -1,4 +1,3 @@ - first: # the rank people must be to use this prestige from: 'D'