add has() for pebble and fix quotient

This commit is contained in:
okx-code
2022-02-15 04:22:37 +00:00
parent ff9d3a1116
commit 5115ff6c38
7 changed files with 54 additions and 13 deletions
+5 -3
View File
@@ -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");
}
}