3.5-beta.5
Update gradle wrapper Fix current_prestige and next_prestige placeholders
This commit is contained in:
@@ -353,7 +353,7 @@ public class Rankup extends JavaPlugin {
|
||||
public boolean checkRankup(Player player, boolean message) {
|
||||
Rank rank = rankups.getByPlayer(player);
|
||||
if (rankups.isLast(permissions, player)) {
|
||||
getMessage(prestiges == null ? Message.NO_RANKUP : prestiges.getByPlayer(player).isLast() ? Message.NO_RANKUP : Message.MUST_PRESTIGE)
|
||||
getMessage(prestiges == null ? Message.NO_RANKUP : prestiges.isLast(permissions, player) ? Message.NO_RANKUP : Message.MUST_PRESTIGE)
|
||||
.failIf(!message)
|
||||
.replaceRanks(player, rankups.getLast())
|
||||
.send(player);
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.sk89q.worldedit.extension.platform.Actor;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.prestige.Prestige;
|
||||
@@ -29,14 +30,11 @@ public class RankupExpansion extends PlaceholderExpansion {
|
||||
|
||||
Rankups rankups = plugin.getRankups();
|
||||
Rank rank = rankups.getByPlayer(player);
|
||||
Rank nextRank = rank == null ? null : rankups.next(rank);
|
||||
|
||||
Prestiges prestiges = plugin.getPrestiges();
|
||||
Prestige prestige = null;
|
||||
Prestige nextPrestige = null;
|
||||
if (prestiges != null) {
|
||||
prestige = prestiges.getByPlayer(player);
|
||||
nextPrestige = prestiges.next(prestige);
|
||||
}
|
||||
|
||||
if (params.startsWith("requirement_")) {
|
||||
@@ -59,17 +57,30 @@ public class RankupExpansion extends PlaceholderExpansion {
|
||||
|
||||
switch (params) {
|
||||
case "current_prestige":
|
||||
return Objects.requireNonNull(prestige, "Using current_prestige placeholder but prestiging is disabled").getRank();
|
||||
requirePrestiging(prestiges, params);
|
||||
if (prestiges.isLast(plugin.getPermissions(), player)) {
|
||||
return prestiges.getLast();
|
||||
} else if (prestige == null || prestige.getRank() == null) {
|
||||
return getPlaceholder("no-prestige");
|
||||
} else {
|
||||
return prestige.getRank();
|
||||
}
|
||||
case "next_prestige":
|
||||
return orElsePlaceholder(nextPrestige, Prestige::getRank, "highest-rank");
|
||||
requirePrestiging(prestiges, params);
|
||||
if (prestiges.isLast(plugin.getPermissions(), player)) {
|
||||
return getPlaceholder("highest-rank");
|
||||
}
|
||||
return orElse(prestige, Prestige::getNext, prestiges.getFirst().getNext());
|
||||
case "prestige_money":
|
||||
requirePrestiging(prestiges, params);
|
||||
return String.valueOf(simplify(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0)));
|
||||
case "prestige_money_formatted":
|
||||
requirePrestiging(prestiges, params);
|
||||
return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0D));
|
||||
case "current_rank":
|
||||
return orElsePlaceholder(rank, Rank::getRank, "not-in-ladder");
|
||||
case "next_rank":
|
||||
return orElsePlaceholder(rank, r -> orElsePlaceholder(nextRank, Rank::getRank, "highest-rank"), "not-in-ladder");
|
||||
return orElsePlaceholder(rank, r -> orElsePlaceholder(rank, Rank::getNext, "highest-rank"), "not-in-ladder");
|
||||
case "money":
|
||||
return String.valueOf(orElse(rank, r -> simplify(r.getRequirement("money").getValueDouble()), 0));
|
||||
case "money_formatted":
|
||||
@@ -91,6 +102,10 @@ public class RankupExpansion extends PlaceholderExpansion {
|
||||
}
|
||||
}
|
||||
|
||||
private void requirePrestiging(Prestiges prestiges, String params) {
|
||||
Objects.requireNonNull(prestiges, "Using %rankup_" + params + "% prestige placeholder but prestiging is disabled.");
|
||||
}
|
||||
|
||||
private String getPlaceholderRequirement(Player player, Rank rank, String requirementName, String params) {
|
||||
if (rank == null) {
|
||||
return "";
|
||||
|
||||
@@ -2,18 +2,18 @@ package sh.okx.rankup.prestige;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import lombok.ToString;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.ranks.Rank;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class Prestige extends Rank {
|
||||
@Getter
|
||||
private final String from;
|
||||
|
||||
@@ -17,6 +17,7 @@ public class Prestiges extends RankList<Prestige> {
|
||||
return prestige;
|
||||
}
|
||||
}
|
||||
throw new IllegalStateException("No prestige found for first prestige (first prestige is counted as a prestige without a rank set)");
|
||||
throw new IllegalStateException("No prestige found for first prestige (first prestige is counted as a prestige without a rank set)." +
|
||||
"Disable prestiges in config.yml if you don't want any.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import lombok.AccessLevel;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import lombok.ToString;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -13,11 +13,11 @@ import sh.okx.rankup.messages.MessageBuilder;
|
||||
import sh.okx.rankup.requirements.DeductibleRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Rank {
|
||||
@Getter
|
||||
|
||||
@@ -19,6 +19,11 @@ public abstract class DeductibleRequirement extends ProgressiveRequirement {
|
||||
* and has returned true immediately prior to this.
|
||||
*
|
||||
* @param player the player to take from
|
||||
* @param multiplier The multiplier for the value
|
||||
*/
|
||||
public abstract void apply(Player player);
|
||||
public abstract void apply(Player player, double multiplier);
|
||||
|
||||
public final void apply(Player player) {
|
||||
apply(player, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,10 @@ public abstract class ProgressiveRequirement extends Requirement {
|
||||
super(plugin, name);
|
||||
}
|
||||
|
||||
public ProgressiveRequirement(Rankup plugin, String name, boolean subRequirement) {
|
||||
super(plugin, name, subRequirement);
|
||||
}
|
||||
|
||||
protected ProgressiveRequirement(Requirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
@@ -19,8 +23,12 @@ public abstract class ProgressiveRequirement extends Requirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRemaining(Player player) {
|
||||
return Math.max(0, getValueDouble() - getProgress(player));
|
||||
public final double getRemaining(Player player) {
|
||||
return getRemaining(player, 1);
|
||||
}
|
||||
|
||||
public double getRemaining(Player player, double multiplier) {
|
||||
return Math.max(0, (multiplier * getValueDouble()) - getProgress(player));
|
||||
}
|
||||
|
||||
public abstract double getProgress(Player player);
|
||||
|
||||
@@ -12,10 +12,16 @@ public abstract class Requirement implements Cloneable {
|
||||
private String value;
|
||||
@Getter
|
||||
private String sub;
|
||||
private boolean subRequirement;
|
||||
|
||||
public Requirement(Rankup plugin, String name) {
|
||||
this(plugin, name, false);
|
||||
}
|
||||
|
||||
public Requirement(Rankup plugin, String name, boolean subRequirement) {
|
||||
this.plugin = plugin;
|
||||
this.name = name;
|
||||
this.subRequirement = subRequirement;
|
||||
}
|
||||
|
||||
protected Requirement(Requirement clone) {
|
||||
@@ -71,8 +77,8 @@ public abstract class Requirement implements Cloneable {
|
||||
return check(player) ? 0 : 1;
|
||||
}
|
||||
|
||||
public boolean hasSubRequirement() {
|
||||
return false;
|
||||
public final boolean hasSubRequirement() {
|
||||
return subRequirement;
|
||||
}
|
||||
|
||||
public abstract Requirement clone();
|
||||
|
||||
@@ -9,7 +9,7 @@ import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class BlockBreakRequirement extends ProgressiveRequirement {
|
||||
public BlockBreakRequirement(Rankup plugin) {
|
||||
super(plugin, "block-break");
|
||||
super(plugin, "block-break", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,9 +30,4 @@ public class BlockBreakRequirement extends ProgressiveRequirement {
|
||||
public Requirement clone() {
|
||||
return new BlockBreakRequirement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSubRequirement() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class MobKillsRequirement extends ProgressiveRequirement {
|
||||
public MobKillsRequirement(Rankup plugin) {
|
||||
super(plugin, "mob-kills");
|
||||
super(plugin, "mob-kills", true);
|
||||
}
|
||||
|
||||
protected MobKillsRequirement(Requirement clone) {
|
||||
@@ -25,9 +25,4 @@ public class MobKillsRequirement extends ProgressiveRequirement {
|
||||
public Requirement clone() {
|
||||
return new MobKillsRequirement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSubRequirement() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ public class MoneyRequirement extends DeductibleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Player player) {
|
||||
public void apply(Player player, double multiplier) {
|
||||
Economy economy = plugin.getEconomy();
|
||||
economy.withdrawPlayer(player, getValueDouble());
|
||||
economy.withdrawPlayer(player, getValueDouble() * multiplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,7 +15,11 @@ public class WorldRequirement extends Requirement {
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
return player.getWorld().getName().equalsIgnoreCase(getValueString());
|
||||
String[] worlds = getValuesString();
|
||||
for (String world : worlds) {
|
||||
return player.getWorld().getName().equalsIgnoreCase(world);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,8 +15,8 @@ public class XpLevelRequirement extends DeductibleRequirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Player player) {
|
||||
player.setLevel(player.getLevel() - getValueInt());
|
||||
public void apply(Player player, double multiplier) {
|
||||
player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-6
@@ -7,7 +7,7 @@ import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
|
||||
public class McMMOSkillRequirement extends ProgressiveRequirement {
|
||||
public McMMOSkillRequirement(Rankup plugin) {
|
||||
super(plugin, "mcmmo");
|
||||
super(plugin, "mcmmo", true);
|
||||
}
|
||||
|
||||
protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
|
||||
@@ -19,11 +19,6 @@ public class McMMOSkillRequirement extends ProgressiveRequirement {
|
||||
return McMMOSkillUtil.getInstance().getSkillLevel(player, getValueString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSubRequirement() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new McMMOSkillRequirement(this);
|
||||
|
||||
@@ -61,6 +61,8 @@ text:
|
||||
# confirm by typing /rankup again
|
||||
timeout: 10
|
||||
|
||||
# placeholders:
|
||||
# https://github.com/okx-code/Rankup3/wiki/PAPI-Placeholders
|
||||
placeholders:
|
||||
# format for money. for more information, see
|
||||
# https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
|
||||
@@ -70,7 +72,9 @@ placeholders:
|
||||
simple-format: "#.##"
|
||||
# used for current_rank and next_rank placeholders when a player is not in anything in rankups.yml
|
||||
not-in-ladder: "None"
|
||||
# used in next_rank placeholders when there is no rankup
|
||||
# used in the current_prestige placeholders when a player hasn't prestiged yet
|
||||
no-prestige: "None"
|
||||
# used in the next_rank and next_prestige placeholders when there is no rankup/prestige
|
||||
highest-rank: "None"
|
||||
|
||||
# what to shorten money by.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: Rankup
|
||||
version: 3.5-beta.2
|
||||
version: 3.5-beta.5
|
||||
main: sh.okx.rankup.Rankup
|
||||
author: Okx
|
||||
depend: [Vault]
|
||||
|
||||
Reference in New Issue
Block a user