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
@@ -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":
@@ -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<String> requirementsList = section.getStringList("requirements");
Set<Requirement> requirements = plugin.getRequirements().getRequirements(requirementsList);
List<Requirement> requirements = plugin.getRequirements().getRequirements(requirementsList);
return new Prestige(section, plugin,
section.getString("next"),
@@ -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<Requirement> getRequirements(Player player) {
return Collections.emptySet();
public Iterable<Requirement> getRequirements(Player player) {
return Collections.emptyList();
}
@Override
@@ -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<Requirement> requirements;
private final List<Requirement> requirements;
public ListRankRequirements(Set<Requirement> requirements) {
public ListRankRequirements(List<Requirement> requirements) {
this.requirements = requirements;
}
@Override
public Set<Requirement> getRequirements(Player player) {
public Iterable<Requirement> getRequirements(Player player) {
return requirements;
}
@@ -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<Requirement> getRequirements(Player player) {
public Iterable<Requirement> getRequirements(Player player) {
return getRankRequirements(player).getRequirements(player);
}
@@ -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<Requirement> getRequirements(Player player);
Iterable<Requirement> getRequirements(Player player);
boolean hasRequirements(Player player);
Requirement getRequirement(Player player, String name);
@@ -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<Requirement> stringsToRequirements(RankupPlugin plugin, Iterable<String> strings) {
private static List<Requirement> stringsToRequirements(RankupPlugin plugin, Iterable<String> strings) {
return plugin.getRequirements().getRequirements(strings);
}
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);
}
@@ -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<Requirement> getRequirements(Iterable<String> list) {
Set<Requirement> requirements = new HashSet<>();
public List<Requirement> getRequirements(Iterable<String> list) {
List<Requirement> requirements = new ArrayList<>();
for (String req : list) {
String[] parts = req.split(" ", 2);
-1
View File
@@ -1,4 +1,3 @@
first:
# the rank people must be to use this prestige
from: 'D'