add has() for pebble and fix quotient
This commit is contained in:
+5
-3
@@ -24,7 +24,7 @@ java {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
url 'https://hub.spigotmc.org/nexus/content/groups/public/'
|
||||
url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
|
||||
}
|
||||
maven {
|
||||
url 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
|
||||
@@ -57,12 +57,14 @@ dependencies {
|
||||
compileOnly ('me.clip:placeholderapi:2.10.9') {
|
||||
exclude group: 'org.bstats'
|
||||
}
|
||||
compileOnly 'com.github.pyvesb:advanced-achievements:6.7.2'
|
||||
compileOnly 'com.github.pyvesb:advanced-achievements:6.7.2'
|
||||
compileOnly 'com.github.astei:Superbvote:700fca43659b438cb9bb36c218a7646d2f2ef315'
|
||||
compileOnly('com.github.mcMMO-Dev:mcMMO:601297') {
|
||||
exclude group: 'com.sk89q.worldguard'
|
||||
}
|
||||
compileOnly 'com.github.BenCodez:VotingPlugin:6.8.1'
|
||||
compileOnly ('com.github.BenCodez:VotingPlugin:6.8.1') {
|
||||
transitive = false
|
||||
}
|
||||
|
||||
compileOnly 'com.github.LlmDl:Towny:25fc18a'
|
||||
testImplementation 'com.github.LlmDl:Towny:25fc18a'
|
||||
|
||||
@@ -111,7 +111,7 @@ public class PebbleMessageBuilder implements MessageBuilder {
|
||||
return new TextProcessorBuilder()
|
||||
.legacy(context, plugin.getPlaceholders())
|
||||
.papi(player)
|
||||
.pebble(context, plugin.getPlaceholders())
|
||||
.pebble(plugin.getLogger(), context, plugin.getPlaceholders())
|
||||
.papi(player)
|
||||
.colour()
|
||||
.create();
|
||||
|
||||
@@ -43,6 +43,14 @@ public class RankContext {
|
||||
return getRequirement(requirement);
|
||||
}
|
||||
|
||||
public boolean getHas(String requirement) {
|
||||
return rank.getRequirement(player, requirement) != null;
|
||||
}
|
||||
|
||||
public boolean getHas(String requirement, String sub) {
|
||||
return rank.getRequirement(player, requirement + "#" + sub) != null;
|
||||
}
|
||||
|
||||
public RequirementContext getReq(String requirement, String sub) {
|
||||
return getRequirement(requirement, sub);
|
||||
}
|
||||
|
||||
@@ -34,11 +34,12 @@ public class RequirementContext {
|
||||
}
|
||||
|
||||
public double getQuotient() {
|
||||
return getProgress() / getTotal();
|
||||
double total = getTotal();
|
||||
return total == 0 ? 1 : getProgress() / total;
|
||||
}
|
||||
|
||||
public double getPercent() {
|
||||
return getProgress() / getTotal() * 100;
|
||||
return getQuotient() * 100;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package sh.okx.rankup.text;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import sh.okx.rankup.placeholders.Placeholders;
|
||||
@@ -17,8 +18,8 @@ public class TextProcessorBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public TextProcessorBuilder pebble(Map<String, Object> context, Placeholders options) {
|
||||
processors.add(new PebbleTextProcessor(context, options));
|
||||
public TextProcessorBuilder pebble(Logger logger, Map<String, Object> context, Placeholders options) {
|
||||
processors.add(new PebbleTextProcessor(logger, context, options));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,18 +11,18 @@ import java.text.DecimalFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import sh.okx.rankup.RankupPlugin;
|
||||
import sh.okx.rankup.messages.pebble.InvalidRequirementException;
|
||||
import sh.okx.rankup.placeholders.Placeholders;
|
||||
import sh.okx.rankup.text.TextProcessor;
|
||||
|
||||
public class PebbleTextProcessor implements TextProcessor {
|
||||
|
||||
private final Logger logger;
|
||||
private final Map<String, Object> context;
|
||||
private final Placeholders options;
|
||||
|
||||
public PebbleTextProcessor(Map<String, Object> context, Placeholders options) {
|
||||
public PebbleTextProcessor(Logger logger, Map<String, Object> context, Placeholders options) {
|
||||
this.logger = logger;
|
||||
this.context = context;
|
||||
this.options = options;
|
||||
}
|
||||
@@ -60,7 +60,6 @@ public class PebbleTextProcessor implements TextProcessor {
|
||||
if (ex.getCause() instanceof InvocationTargetException) {
|
||||
if (ex.getCause().getCause() instanceof InvalidRequirementException) {
|
||||
InvalidRequirementException cause = (InvalidRequirementException) ex.getCause().getCause();
|
||||
Logger logger = JavaPlugin.getPlugin(RankupPlugin.class).getLogger();
|
||||
logger.severe("Unknown requirement \"" + cause.getRequirement() + "\" on rank \"" + cause.getRank().getRank() + "\" in message:");
|
||||
for (String line : string.split("\n")) {
|
||||
logger.severe(line);
|
||||
|
||||
@@ -24,7 +24,7 @@ public class PebbleTest extends RankupTest {
|
||||
list.add("L2");
|
||||
list.add("L3");
|
||||
ctx.put("list", list);
|
||||
PebbleTextProcessor processor = new PebbleTextProcessor(ctx, null);
|
||||
PebbleTextProcessor processor = new PebbleTextProcessor(null, ctx, null);
|
||||
assertEquals("L2", processor.process("{{ list[one] }}"));
|
||||
}
|
||||
|
||||
@@ -42,4 +42,34 @@ public class PebbleTest extends RankupTest {
|
||||
|
||||
player.assertSaid("true");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequirementAbsent() {
|
||||
PlayerMock player = server.addPlayer();
|
||||
|
||||
plugin.getPermissions().addGroup(player.getUniqueId(), "B");
|
||||
RankElement<Rank> rankElement = plugin.getRankups().getByPlayer(player);
|
||||
|
||||
plugin.newMessageBuilder("{{ rank.has('xp-level') ? rank.req('xp-level').total | simple : 'none' }}")
|
||||
.replacePlayer(player)
|
||||
.replaceOldRank(rankElement.getRank())
|
||||
.send(player);
|
||||
|
||||
player.assertSaid("none");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequirementPresent() {
|
||||
PlayerMock player = server.addPlayer();
|
||||
|
||||
plugin.getPermissions().addGroup(player.getUniqueId(), "C");
|
||||
RankElement<Rank> rankElement = plugin.getRankups().getByPlayer(player);
|
||||
|
||||
plugin.newMessageBuilder("{{ rank.has('xp-level') ? rank.req('xp-level').total | simple : 'none' }}")
|
||||
.replacePlayer(player)
|
||||
.replaceOldRank(rankElement.getRank())
|
||||
.send(player);
|
||||
|
||||
player.assertSaid("2");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user