add has() for pebble and fix quotient
This commit is contained in:
+4
-2
@@ -24,7 +24,7 @@ java {
|
|||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven {
|
maven {
|
||||||
url 'https://hub.spigotmc.org/nexus/content/groups/public/'
|
url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
|
||||||
}
|
}
|
||||||
maven {
|
maven {
|
||||||
url 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
|
url 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
|
||||||
@@ -62,7 +62,9 @@ dependencies {
|
|||||||
compileOnly('com.github.mcMMO-Dev:mcMMO:601297') {
|
compileOnly('com.github.mcMMO-Dev:mcMMO:601297') {
|
||||||
exclude group: 'com.sk89q.worldguard'
|
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'
|
compileOnly 'com.github.LlmDl:Towny:25fc18a'
|
||||||
testImplementation 'com.github.LlmDl:Towny:25fc18a'
|
testImplementation 'com.github.LlmDl:Towny:25fc18a'
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ public class PebbleMessageBuilder implements MessageBuilder {
|
|||||||
return new TextProcessorBuilder()
|
return new TextProcessorBuilder()
|
||||||
.legacy(context, plugin.getPlaceholders())
|
.legacy(context, plugin.getPlaceholders())
|
||||||
.papi(player)
|
.papi(player)
|
||||||
.pebble(context, plugin.getPlaceholders())
|
.pebble(plugin.getLogger(), context, plugin.getPlaceholders())
|
||||||
.papi(player)
|
.papi(player)
|
||||||
.colour()
|
.colour()
|
||||||
.create();
|
.create();
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ public class RankContext {
|
|||||||
return getRequirement(requirement);
|
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) {
|
public RequirementContext getReq(String requirement, String sub) {
|
||||||
return getRequirement(requirement, sub);
|
return getRequirement(requirement, sub);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,11 +34,12 @@ public class RequirementContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public double getQuotient() {
|
public double getQuotient() {
|
||||||
return getProgress() / getTotal();
|
double total = getTotal();
|
||||||
|
return total == 0 ? 1 : getProgress() / total;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getPercent() {
|
public double getPercent() {
|
||||||
return getProgress() / getTotal() * 100;
|
return getQuotient() * 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package sh.okx.rankup.text;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.logging.Logger;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import sh.okx.rankup.placeholders.Placeholders;
|
import sh.okx.rankup.placeholders.Placeholders;
|
||||||
@@ -17,8 +18,8 @@ public class TextProcessorBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextProcessorBuilder pebble(Map<String, Object> context, Placeholders options) {
|
public TextProcessorBuilder pebble(Logger logger, Map<String, Object> context, Placeholders options) {
|
||||||
processors.add(new PebbleTextProcessor(context, options));
|
processors.add(new PebbleTextProcessor(logger, context, options));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,18 +11,18 @@ import java.text.DecimalFormat;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Logger;
|
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.messages.pebble.InvalidRequirementException;
|
||||||
import sh.okx.rankup.placeholders.Placeholders;
|
import sh.okx.rankup.placeholders.Placeholders;
|
||||||
import sh.okx.rankup.text.TextProcessor;
|
import sh.okx.rankup.text.TextProcessor;
|
||||||
|
|
||||||
public class PebbleTextProcessor implements TextProcessor {
|
public class PebbleTextProcessor implements TextProcessor {
|
||||||
|
|
||||||
|
private final Logger logger;
|
||||||
private final Map<String, Object> context;
|
private final Map<String, Object> context;
|
||||||
private final Placeholders options;
|
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.context = context;
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,6 @@ public class PebbleTextProcessor implements TextProcessor {
|
|||||||
if (ex.getCause() instanceof InvocationTargetException) {
|
if (ex.getCause() instanceof InvocationTargetException) {
|
||||||
if (ex.getCause().getCause() instanceof InvalidRequirementException) {
|
if (ex.getCause().getCause() instanceof InvalidRequirementException) {
|
||||||
InvalidRequirementException cause = (InvalidRequirementException) ex.getCause().getCause();
|
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:");
|
logger.severe("Unknown requirement \"" + cause.getRequirement() + "\" on rank \"" + cause.getRank().getRank() + "\" in message:");
|
||||||
for (String line : string.split("\n")) {
|
for (String line : string.split("\n")) {
|
||||||
logger.severe(line);
|
logger.severe(line);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class PebbleTest extends RankupTest {
|
|||||||
list.add("L2");
|
list.add("L2");
|
||||||
list.add("L3");
|
list.add("L3");
|
||||||
ctx.put("list", list);
|
ctx.put("list", list);
|
||||||
PebbleTextProcessor processor = new PebbleTextProcessor(ctx, null);
|
PebbleTextProcessor processor = new PebbleTextProcessor(null, ctx, null);
|
||||||
assertEquals("L2", processor.process("{{ list[one] }}"));
|
assertEquals("L2", processor.process("{{ list[one] }}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,4 +42,34 @@ public class PebbleTest extends RankupTest {
|
|||||||
|
|
||||||
player.assertSaid("true");
|
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