From abd4365f20f52a58231265d34c8553603d096d20 Mon Sep 17 00:00:00 2001 From: okx-code Date: Tue, 25 Jul 2023 22:07:28 +0100 Subject: [PATCH] fix papi placeholders when using world or placeholder requirements --- build.gradle | 2 +- .../rankup/placeholders/RankupExpansion.java | 6 ++-- .../sh/okx/rankup/WorldRequirementTest.java | 29 +++++++++++++++++++ src/test/resources/world/rankups.yml | 5 ++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/test/java/sh/okx/rankup/WorldRequirementTest.java create mode 100644 src/test/resources/world/rankups.yml diff --git a/build.gradle b/build.gradle index 35f7559..5f12a00 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ pitest { } group 'sh.okx' -version '3.14.1' +version '3.14.2' java { sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java index d2cfd03..9cb0c52 100644 --- a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java +++ b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java @@ -177,11 +177,11 @@ public class RankupExpansion implements Expansion { case "left": return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getRemaining(player), 0)); case "done": - return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getValueDouble() - r.getRemaining(player), 0)); + return placeholders.getSimpleFormat().format(orElse(requirement, r -> r.getTotal(player) - r.getRemaining(player), 0)); case "percent_left": - return placeholders.getPercentFormat().format(orElse(requirement, r -> (r.getRemaining(player) / r.getValueDouble()) * 100, 0)); + return placeholders.getPercentFormat().format(orElse(requirement, r -> (r.getRemaining(player) / r.getTotal(player)) * 100, 0)); case "percent_done": - return placeholders.getPercentFormat().format(orElse(requirement, r -> (1 - (r.getRemaining(player) / r.getValueDouble())) * 100, 100)); + return placeholders.getPercentFormat().format(orElse(requirement, r -> (1 - (r.getRemaining(player) / r.getTotal(player))) * 100, 100)); default: return null; } diff --git a/src/test/java/sh/okx/rankup/WorldRequirementTest.java b/src/test/java/sh/okx/rankup/WorldRequirementTest.java new file mode 100644 index 0000000..41c5326 --- /dev/null +++ b/src/test/java/sh/okx/rankup/WorldRequirementTest.java @@ -0,0 +1,29 @@ +package sh.okx.rankup; + + +import be.seeseemelk.mockbukkit.entity.PlayerMock; +import org.bukkit.Location; +import org.junit.jupiter.api.Test; +import sh.okx.rankup.placeholders.RankupExpansion; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class WorldRequirementTest extends RankupTest { + + public WorldRequirementTest() { + super("world"); + } + + @Test + public void testStatusComplete() { + PlayerMock player = server.addPlayer(); + groupProvider.addGroup(player.getUniqueId(), "a"); + + RankupExpansion expansion = plugin.getPlaceholders().getExpansion(); + assertEquals("0", expansion.placeholder(player, "requirement_world_percent_done")); + + player.teleport(new Location(server.getWorld("the_nether"), 0, 0, 0)); + + assertEquals("100", expansion.placeholder(player, "requirement_world_percent_done")); + } +} \ No newline at end of file diff --git a/src/test/resources/world/rankups.yml b/src/test/resources/world/rankups.yml new file mode 100644 index 0000000..625f9dc --- /dev/null +++ b/src/test/resources/world/rankups.yml @@ -0,0 +1,5 @@ +a: + rank: 'a' + next: 'b' + requirements: + - 'world the_nether' \ No newline at end of file