Ordered requirements and name placeholders

This commit is contained in:
okx-code
2021-03-18 00:41:13 +00:00
parent 49942e5497
commit cf3e892ad6
10 changed files with 46 additions and 32 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ plugins {
} }
group 'sh.okx' group 'sh.okx'
version '3.11.3' version '3.11.4-beta'
repositories { repositories {
mavenCentral() mavenCentral()
@@ -92,12 +92,26 @@ public class RankupExpansion implements Expansion {
} else { } else {
return prestige.getRank(); 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": case "next_prestige":
requirePrestiging(prestiges, params); requirePrestiging(prestiges, params);
if (prestigeElement != null && !prestigeElement.hasNext()) { if (prestigeElement != null && !prestigeElement.hasNext()) {
return getPlaceholder("highest-rank"); 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": case "prestige_money":
requirePrestiging(prestiges, params); requirePrestiging(prestiges, params);
return String.valueOf(simplify(orElse(prestige, r -> r.isIn(player) ? r.getRequirement(player, "money").getValueDouble() : 0, 0))); 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); requirePrestiging(prestiges, params);
return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement(player, "money").getValueDouble() : 0, 0D)); return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement(player, "money").getValueDouble() : 0, 0D));
case "current_rank": case "current_rank":
if (rank == null) { return orElse(rank, Rank::getRank, getPlaceholder("not-in-ladder"));
return getPlaceholder("not-in-ladder"); case "current_rank_name":
} else { return orElse(rank, Rank::getDisplayName, getPlaceholder("not-in-ladder"));
return rank.getRank();
}
case "next_rank": case "next_rank":
if (rankElement != null && !rankElement.hasNext()) { if (rankElement != null && !rankElement.hasNext()) {
return getPlaceholder("highest-rank"); 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": case "money":
return String.valueOf(getMoney(player, rank)); return String.valueOf(getMoney(player, rank));
case "money_formatted": case "money_formatted":
@@ -1,5 +1,6 @@
package sh.okx.rankup.prestige; package sh.okx.rankup.prestige;
import java.util.List;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; 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.ranks.requirements.RankRequirements;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
import java.util.List;
import java.util.Set;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class Prestige extends Rank { public class Prestige extends Rank {
@@ -33,7 +31,7 @@ public class Prestige extends Rank {
public static Prestige deserialize(RankupPlugin plugin, ConfigurationSection section) { public static Prestige deserialize(RankupPlugin plugin, ConfigurationSection section) {
List<String> requirementsList = section.getStringList("requirements"); List<String> requirementsList = section.getStringList("requirements");
Set<Requirement> requirements = plugin.getRequirements().getRequirements(requirementsList); List<Requirement> requirements = plugin.getRequirements().getRequirements(requirementsList);
return new Prestige(section, plugin, return new Prestige(section, plugin,
section.getString("next"), section.getString("next"),
@@ -1,15 +1,14 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.ranks.requirements;
import java.util.Collections; import java.util.Collections;
import java.util.Set;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
public class LastRankRequirements implements RankRequirements { public class LastRankRequirements implements RankRequirements {
@Override @Override
public Set<Requirement> getRequirements(Player player) { public Iterable<Requirement> getRequirements(Player player) {
return Collections.emptySet(); return Collections.emptyList();
} }
@Override @Override
@@ -1,19 +1,19 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.ranks.requirements;
import java.util.Set; import java.util.List;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
public class ListRankRequirements implements RankRequirements { public class ListRankRequirements implements RankRequirements {
private final Set<Requirement> requirements; private final List<Requirement> requirements;
public ListRankRequirements(Set<Requirement> requirements) { public ListRankRequirements(List<Requirement> requirements) {
this.requirements = requirements; this.requirements = requirements;
} }
@Override @Override
public Set<Requirement> getRequirements(Player player) { public Iterable<Requirement> getRequirements(Player player) {
return requirements; return requirements;
} }
@@ -1,15 +1,13 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.ranks.requirements;
import java.util.Map;
import java.util.Objects;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestige;
import sh.okx.rankup.prestige.Prestiges; import sh.okx.rankup.prestige.Prestiges;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
public class PrestigeListRankRequirements implements RankRequirements { public class PrestigeListRankRequirements implements RankRequirements {
private final RankupPlugin plugin; private final RankupPlugin plugin;
private final RankRequirements defaultRequirements; private final RankRequirements defaultRequirements;
@@ -25,7 +23,7 @@ public class PrestigeListRankRequirements implements RankRequirements {
} }
@Override @Override
public Set<Requirement> getRequirements(Player player) { public Iterable<Requirement> getRequirements(Player player) {
return getRankRequirements(player).getRequirements(player); return getRankRequirements(player).getRequirements(player);
} }
@@ -1,11 +1,10 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.ranks.requirements;
import java.util.Set;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
public interface RankRequirements { public interface RankRequirements {
Set<Requirement> getRequirements(Player player); Iterable<Requirement> getRequirements(Player player);
boolean hasRequirements(Player player); boolean hasRequirements(Player player);
Requirement getRequirement(Player player, String name); Requirement getRequirement(Player player, String name);
@@ -3,8 +3,8 @@ package sh.okx.rankup.ranks.requirements;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
@@ -33,12 +33,12 @@ public class RankRequirementsFactory {
} }
} }
private static Set<Requirement> stringsToRequirements(RankupPlugin plugin, Iterable<String> strings) { private static List<Requirement> stringsToRequirements(RankupPlugin plugin, Iterable<String> strings) {
return plugin.getRequirements().getRequirements(strings); return plugin.getRequirements().getRequirements(strings);
} }
private static RankRequirements getListRequirements(RankupPlugin plugin, Iterable<String> list) { private static RankRequirements getListRequirements(RankupPlugin plugin, Iterable<String> list) {
Set<Requirement> requirements = stringsToRequirements(plugin, list); List<Requirement> requirements = stringsToRequirements(plugin, list);
return new ListRankRequirements(requirements); return new ListRankRequirements(requirements);
} }
@@ -1,7 +1,9 @@
package sh.okx.rankup.requirements; package sh.okx.rankup.requirements;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
@@ -29,8 +31,8 @@ public class RequirementRegistry {
return null; return null;
} }
public Set<Requirement> getRequirements(Iterable<String> list) { public List<Requirement> getRequirements(Iterable<String> list) {
Set<Requirement> requirements = new HashSet<>(); List<Requirement> requirements = new ArrayList<>();
for (String req : list) { for (String req : list) {
String[] parts = req.split(" ", 2); String[] parts = req.split(" ", 2);
-1
View File
@@ -1,4 +1,3 @@
first: first:
# the rank people must be to use this prestige # the rank people must be to use this prestige
from: 'D' from: 'D'