bugfixes
This commit is contained in:
@@ -3,9 +3,13 @@ package sh.okx.rankup.requirements.requirement;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class PlaceholderRequirement extends Requirement {
|
||||
public class PlaceholderRequirement extends ProgressiveRequirement {
|
||||
|
||||
public static final double DELTA = 0.00001D;
|
||||
|
||||
public PlaceholderRequirement(Rankup plugin) {
|
||||
super(plugin, "placeholder");
|
||||
}
|
||||
@@ -15,20 +19,15 @@ public class PlaceholderRequirement extends Requirement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
String[] parts = getValueString().split(" ");
|
||||
String parsed = PlaceholderAPI.setPlaceholders(player, parts[0]);
|
||||
if (!PlaceholderAPI.containsPlaceholders(parts[0]) || parsed.equals(parts[0])) {
|
||||
throw new IllegalArgumentException(parts[0] + " is not a PlaceholderAPI placeholder!");
|
||||
} else if (parts.length < 3) {
|
||||
throw new IllegalArgumentException("Placeholder requirements must be in the form %placeholder% <operation> string");
|
||||
}
|
||||
public double getProgress(Player player) {
|
||||
String[] parts = getParts(player);
|
||||
String parsed = parts[0];
|
||||
String value = parts[2];
|
||||
|
||||
// string operations
|
||||
switch (parts[1]) {
|
||||
case "=":
|
||||
return parsed.equals(value);
|
||||
return parsed.equals(value) ? 1 : 0;
|
||||
}
|
||||
|
||||
// numeric operations
|
||||
@@ -36,23 +35,52 @@ public class PlaceholderRequirement extends Requirement {
|
||||
double v = Double.parseDouble(value);
|
||||
switch (parts[1]) {
|
||||
case ">":
|
||||
return p > v;
|
||||
return p > v ? v : 0;
|
||||
case ">=":
|
||||
return p >= v;
|
||||
return Math.min(p, v);
|
||||
case "<":
|
||||
return p < v;
|
||||
return p < v ? v : 0;
|
||||
case "<=":
|
||||
return p <= v;
|
||||
return p <= v ? 1 : 0;
|
||||
case "==":
|
||||
return p == v;
|
||||
return p == v ? v : 0;
|
||||
}
|
||||
throw new IllegalArgumentException("Invalid operation: " + parts[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getTotal(Player player) {
|
||||
String[] parts = getParts(player);
|
||||
|
||||
if (parts[1].equalsIgnoreCase("=")) {
|
||||
return 1;
|
||||
} else {
|
||||
return Double.parseDouble(parts[2]);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getParts(Player player) {
|
||||
String[] parts = getValueString().split(" ");
|
||||
if (parts.length < 3) {
|
||||
throw new IllegalArgumentException("Placeholder requirements must be in the form %placeholder% <operation> string");
|
||||
}
|
||||
String parsed = PlaceholderAPI.setPlaceholders(player, parts[0]);
|
||||
if (!PlaceholderAPI.containsPlaceholders(parts[0]) || parsed.equals(parts[0])) {
|
||||
throw new IllegalArgumentException(parts[0] + " is not a PlaceholderAPI placeholder!");
|
||||
}
|
||||
parts[0] = parsed;
|
||||
return parts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFullName() {
|
||||
String[] parts = getValueString().split(" ");
|
||||
return parts[0];
|
||||
return name + "#" + parts[0].replace("%", "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
return getRemaining(player) <= 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user