3.5-beta.5

Update gradle wrapper
Fix current_prestige and next_prestige placeholders
This commit is contained in:
okx-code
2019-04-15 22:28:38 +01:00
parent 6ee799609c
commit e4ffa0425f
19 changed files with 76 additions and 47 deletions
+4 -3
View File
@@ -1,14 +1,12 @@
plugins { plugins {
id 'java' id 'java'
id 'io.franzbecker.gradle-lombok' version '1.14'
} }
group 'sh.okx' group 'sh.okx'
version '3.5-beta.2' version '3.5-beta.5'
repositories { repositories {
mavenCentral() mavenCentral()
jcenter()
mavenLocal() mavenLocal()
maven { maven {
url 'http://nexus.hc.to/content/repositories/pub_releases' url 'http://nexus.hc.to/content/repositories/pub_releases'
@@ -28,6 +26,9 @@ repositories {
} }
dependencies { dependencies {
compileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'
testCompile group: 'junit', name: 'junit', version: '4.12' testCompile group: 'junit', name: 'junit', version: '4.12'
compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT' compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT'
Binary file not shown.
+2 -2
View File
@@ -1,6 +1,6 @@
#Tue Aug 21 18:52:26 BST 2018 #Thu Apr 11 23:41:41 GMT+01:00 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-all.zip
+1 -1
View File
@@ -353,7 +353,7 @@ public class Rankup extends JavaPlugin {
public boolean checkRankup(Player player, boolean message) { public boolean checkRankup(Player player, boolean message) {
Rank rank = rankups.getByPlayer(player); Rank rank = rankups.getByPlayer(player);
if (rankups.isLast(permissions, 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) .failIf(!message)
.replaceRanks(player, rankups.getLast()) .replaceRanks(player, rankups.getLast())
.send(player); .send(player);
@@ -4,6 +4,7 @@ import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.WorldGuard;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.apache.commons.lang.Validate;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestige;
@@ -29,14 +30,11 @@ public class RankupExpansion extends PlaceholderExpansion {
Rankups rankups = plugin.getRankups(); Rankups rankups = plugin.getRankups();
Rank rank = rankups.getByPlayer(player); Rank rank = rankups.getByPlayer(player);
Rank nextRank = rank == null ? null : rankups.next(rank);
Prestiges prestiges = plugin.getPrestiges(); Prestiges prestiges = plugin.getPrestiges();
Prestige prestige = null; Prestige prestige = null;
Prestige nextPrestige = null;
if (prestiges != null) { if (prestiges != null) {
prestige = prestiges.getByPlayer(player); prestige = prestiges.getByPlayer(player);
nextPrestige = prestiges.next(prestige);
} }
if (params.startsWith("requirement_")) { if (params.startsWith("requirement_")) {
@@ -59,17 +57,30 @@ public class RankupExpansion extends PlaceholderExpansion {
switch (params) { switch (params) {
case "current_prestige": 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": 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": case "prestige_money":
requirePrestiging(prestiges, params);
return String.valueOf(simplify(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0))); return String.valueOf(simplify(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0)));
case "prestige_money_formatted": case "prestige_money_formatted":
requirePrestiging(prestiges, params);
return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0D)); return plugin.formatMoney(orElse(prestige, r -> r.isIn(player) ? r.getRequirement("money").getValueDouble() : 0, 0D));
case "current_rank": case "current_rank":
return orElsePlaceholder(rank, Rank::getRank, "not-in-ladder"); return orElsePlaceholder(rank, Rank::getRank, "not-in-ladder");
case "next_rank": 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": case "money":
return String.valueOf(orElse(rank, r -> simplify(r.getRequirement("money").getValueDouble()), 0)); return String.valueOf(orElse(rank, r -> simplify(r.getRequirement("money").getValueDouble()), 0));
case "money_formatted": 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) { private String getPlaceholderRequirement(Player player, Rank rank, String requirementName, String params) {
if (rank == null) { if (rank == null) {
return ""; return "";
@@ -2,18 +2,18 @@ package sh.okx.rankup.prestige;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import org.apache.commons.lang3.Validate; import lombok.ToString;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.ranks.Rank; import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class Prestige extends Rank { public class Prestige extends Rank {
@Getter @Getter
private final String from; private final String from;
@@ -17,6 +17,7 @@ public class Prestiges extends RankList<Prestige> {
return 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.");
} }
} }
+2 -2
View File
@@ -4,7 +4,7 @@ import lombok.AccessLevel;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.Validate; import lombok.ToString;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; 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.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@EqualsAndHashCode @EqualsAndHashCode
@ToString
@RequiredArgsConstructor(access = AccessLevel.PROTECTED) @RequiredArgsConstructor(access = AccessLevel.PROTECTED)
public class Rank { public class Rank {
@Getter @Getter
@@ -19,6 +19,11 @@ public abstract class DeductibleRequirement extends ProgressiveRequirement {
* and has returned true immediately prior to this. * and has returned true immediately prior to this.
* *
* @param player the player to take from * @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); super(plugin, name);
} }
public ProgressiveRequirement(Rankup plugin, String name, boolean subRequirement) {
super(plugin, name, subRequirement);
}
protected ProgressiveRequirement(Requirement clone) { protected ProgressiveRequirement(Requirement clone) {
super(clone); super(clone);
} }
@@ -19,8 +23,12 @@ public abstract class ProgressiveRequirement extends Requirement {
} }
@Override @Override
public double getRemaining(Player player) { public final double getRemaining(Player player) {
return Math.max(0, getValueDouble() - getProgress(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); public abstract double getProgress(Player player);
@@ -12,10 +12,16 @@ public abstract class Requirement implements Cloneable {
private String value; private String value;
@Getter @Getter
private String sub; private String sub;
private boolean subRequirement;
public Requirement(Rankup plugin, String name) { public Requirement(Rankup plugin, String name) {
this(plugin, name, false);
}
public Requirement(Rankup plugin, String name, boolean subRequirement) {
this.plugin = plugin; this.plugin = plugin;
this.name = name; this.name = name;
this.subRequirement = subRequirement;
} }
protected Requirement(Requirement clone) { protected Requirement(Requirement clone) {
@@ -71,8 +77,8 @@ public abstract class Requirement implements Cloneable {
return check(player) ? 0 : 1; return check(player) ? 0 : 1;
} }
public boolean hasSubRequirement() { public final boolean hasSubRequirement() {
return false; return subRequirement;
} }
public abstract Requirement clone(); public abstract Requirement clone();
@@ -9,7 +9,7 @@ import sh.okx.rankup.requirements.Requirement;
public class BlockBreakRequirement extends ProgressiveRequirement { public class BlockBreakRequirement extends ProgressiveRequirement {
public BlockBreakRequirement(Rankup plugin) { public BlockBreakRequirement(Rankup plugin) {
super(plugin, "block-break"); super(plugin, "block-break", true);
} }
@Override @Override
@@ -30,9 +30,4 @@ public class BlockBreakRequirement extends ProgressiveRequirement {
public Requirement clone() { public Requirement clone() {
return new BlockBreakRequirement(this); 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 class MobKillsRequirement extends ProgressiveRequirement {
public MobKillsRequirement(Rankup plugin) { public MobKillsRequirement(Rankup plugin) {
super(plugin, "mob-kills"); super(plugin, "mob-kills", true);
} }
protected MobKillsRequirement(Requirement clone) { protected MobKillsRequirement(Requirement clone) {
@@ -25,9 +25,4 @@ public class MobKillsRequirement extends ProgressiveRequirement {
public Requirement clone() { public Requirement clone() {
return new MobKillsRequirement(this); return new MobKillsRequirement(this);
} }
@Override
public boolean hasSubRequirement() {
return true;
}
} }
@@ -16,9 +16,9 @@ public class MoneyRequirement extends DeductibleRequirement {
} }
@Override @Override
public void apply(Player player) { public void apply(Player player, double multiplier) {
Economy economy = plugin.getEconomy(); Economy economy = plugin.getEconomy();
economy.withdrawPlayer(player, getValueDouble()); economy.withdrawPlayer(player, getValueDouble() * multiplier);
} }
@Override @Override
@@ -15,7 +15,11 @@ public class WorldRequirement extends Requirement {
@Override @Override
public boolean check(Player player) { 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 @Override
@@ -15,8 +15,8 @@ public class XpLevelRequirement extends DeductibleRequirement {
} }
@Override @Override
public void apply(Player player) { public void apply(Player player, double multiplier) {
player.setLevel(player.getLevel() - getValueInt()); player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
} }
@Override @Override
@@ -7,7 +7,7 @@ import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOSkillRequirement extends ProgressiveRequirement { public class McMMOSkillRequirement extends ProgressiveRequirement {
public McMMOSkillRequirement(Rankup plugin) { public McMMOSkillRequirement(Rankup plugin) {
super(plugin, "mcmmo"); super(plugin, "mcmmo", true);
} }
protected McMMOSkillRequirement(McMMOSkillRequirement clone) { protected McMMOSkillRequirement(McMMOSkillRequirement clone) {
@@ -19,11 +19,6 @@ public class McMMOSkillRequirement extends ProgressiveRequirement {
return McMMOSkillUtil.getInstance().getSkillLevel(player, getValueString()); return McMMOSkillUtil.getInstance().getSkillLevel(player, getValueString());
} }
@Override
public boolean hasSubRequirement() {
return true;
}
@Override @Override
public Requirement clone() { public Requirement clone() {
return new McMMOSkillRequirement(this); return new McMMOSkillRequirement(this);
+5 -1
View File
@@ -61,6 +61,8 @@ text:
# confirm by typing /rankup again # confirm by typing /rankup again
timeout: 10 timeout: 10
# placeholders:
# https://github.com/okx-code/Rankup3/wiki/PAPI-Placeholders
placeholders: placeholders:
# format for money. for more information, see # format for money. for more information, see
# https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html # https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
@@ -70,7 +72,9 @@ placeholders:
simple-format: "#.##" simple-format: "#.##"
# used for current_rank and next_rank placeholders when a player is not in anything in rankups.yml # used for current_rank and next_rank placeholders when a player is not in anything in rankups.yml
not-in-ladder: "None" 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" highest-rank: "None"
# what to shorten money by. # what to shorten money by.
+1 -1
View File
@@ -1,5 +1,5 @@
name: Rankup name: Rankup
version: 3.5-beta.2 version: 3.5-beta.5
main: sh.okx.rankup.Rankup main: sh.okx.rankup.Rankup
author: Okx author: Okx
depend: [Vault] depend: [Vault]