From d5662969edc7c0c7985cc6c75f02023bfd2031d2 Mon Sep 17 00:00:00 2001 From: DeathRealms Date: Wed, 12 Aug 2020 14:35:37 -0400 Subject: [PATCH 1/4] Fix "time_played" and "time_since_death" placeholders --- .../mcstatistics/StatisticsExpansion.java | 5 +- .../mcstatistics/StatisticsUtils.java | 50 ------------------- 2 files changed, 3 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java index 4ffbe18..be35a84 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java @@ -27,6 +27,7 @@ import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.expansion.Cacheable; import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import me.clip.placeholderapi.util.TimeUtil; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.OfflinePlayer; @@ -100,7 +101,7 @@ public String onRequest(final OfflinePlayer offlinePlayer, String identifier) { * Time played */ case "time_played": { - return StatisticsUtils.formatTime(Duration.of(secondsPlayed, ChronoUnit.SECONDS)); + return TimeUtil.getTime(Duration.of(secondsPlayed, ChronoUnit.SECONDS)); } case "time_played:seconds": { @@ -139,7 +140,7 @@ public String onRequest(final OfflinePlayer offlinePlayer, String identifier) { * Time since last death */ case "time_since_death": { - return StatisticsUtils.formatTime(Duration.of(secondsSinceLastDeath, ChronoUnit.SECONDS)); + return TimeUtil.getTime(Duration.of(secondsSinceLastDeath, ChronoUnit.SECONDS)); } case "seconds_since_death": { diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java index d979e17..c2984a0 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java @@ -22,13 +22,10 @@ import com.google.common.base.Enums; import com.google.common.base.Optional; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import java.time.Duration; - public class StatisticsUtils { public static int getSecondsPlayed(final Player player, final boolean isLegacy) { return isLegacy ? player.getStatistic(Statistic.valueOf("PLAY_ONE_TICK")) / 20 : player.getStatistic(Statistic.PLAY_ONE_MINUTE) / 20; @@ -116,51 +113,4 @@ public static boolean isItem(final Material material, final boolean isLegacy) { return material.isItem(); } } - - /** - * @author Sxtanna - */ - public static String formatTime(final Duration duration) { - final StringBuilder builder = new StringBuilder(); - - long seconds = duration.getSeconds(); - long minutes = seconds / 60; - long hours = minutes / 60; - long days = hours / 24; - - seconds %= 60; - minutes %= 60; - hours %= 60; - days %= 24; - - if (seconds > 0) { - builder.insert(0, seconds + "s"); - } - - if (minutes > 0) { - if (builder.length() > 0) { - builder.insert(0, ' '); - } - - builder.insert(0, minutes + "m"); - } - - if (hours > 0) { - if (builder.length() > 0) { - builder.insert(0, ' '); - } - - builder.insert(0, hours + "h"); - } - - if (days > 0) { - if (builder.length() > 0) { - builder.insert(0, ' '); - } - - builder.insert(0, days + "d"); - } - - return builder.toString(); - } } From 211a69ad92b979c606d3e578050aa3ed156cb095 Mon Sep 17 00:00:00 2001 From: DeathRealms Date: Thu, 13 Aug 2020 13:27:55 -0400 Subject: [PATCH 2/4] Fix some placeholders being doubled on non-legacy versions --- .../papi/expansion/mcstatistics/StatisticsExpansion.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java index be35a84..58d6d70 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java @@ -279,6 +279,10 @@ private String calculateTotal(final Player player, final Statistic statistic) { continue; } + if (!isLegacy && material.name().startsWith("LEGACY")) { + continue; + } + if (statistic == Statistic.MINE_BLOCK && (material.name().equals("GRASS") || material.name().equals("SOIL"))) { continue; } From 855cdc231bea8904d5974832db424323ca7b9ab6 Mon Sep 17 00:00:00 2001 From: DeathRealms Date: Thu, 13 Aug 2020 21:48:43 -0400 Subject: [PATCH 3/4] Ignore material "BURNING_FURNACE" for legacy versions --- .../papi/expansion/mcstatistics/StatisticsExpansion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java index 58d6d70..c8d4bce 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java @@ -279,7 +279,7 @@ private String calculateTotal(final Player player, final Statistic statistic) { continue; } - if (!isLegacy && material.name().startsWith("LEGACY")) { + if (!isLegacy && material.name().startsWith("LEGACY") || material.name().equals("BURNING_FURNACE")) { continue; } From c45d3365ee9cf8583f2d1171a482528a8bde9acb Mon Sep 17 00:00:00 2001 From: DeathRealms Date: Fri, 28 Aug 2020 03:35:18 -0400 Subject: [PATCH 4/4] Put the formatTime method from PlaceholderAPI in here --- pom.xml | 2 +- .../mcstatistics/StatisticsExpansion.java | 9 ++---- .../mcstatistics/StatisticsUtils.java | 32 +++++++++++++++++++ 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 68f5c1c..bc325c9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.extendedclip.papi.expansion.mcstatistics statistics-expansion - 2.0.0 + 2.0.1 PAPI-Expansion-Statistic PlaceholderAPI expansion for minecraft statistic placeholders diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java index c8d4bce..47d411f 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsExpansion.java @@ -27,7 +27,6 @@ import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.expansion.Cacheable; import me.clip.placeholderapi.expansion.PlaceholderExpansion; -import me.clip.placeholderapi.util.TimeUtil; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.OfflinePlayer; @@ -35,8 +34,6 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -import java.time.Duration; -import java.time.temporal.ChronoUnit; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -48,7 +45,7 @@ public class StatisticsExpansion extends PlaceholderExpansion implements Cacheab private final String VERSION = getClass().getPackage().getImplementationVersion(); private final boolean isLegacy = !Enums.getIfPresent(Material.class, "TURTLE_HELMET").isPresent(); public static final String SERVER_VERSION = Bukkit.getBukkitVersion().split("-")[0]; - + @Override public String getAuthor() { return "clip"; @@ -101,7 +98,7 @@ public String onRequest(final OfflinePlayer offlinePlayer, String identifier) { * Time played */ case "time_played": { - return TimeUtil.getTime(Duration.of(secondsPlayed, ChronoUnit.SECONDS)); + return StatisticsUtils.formatTime(secondsPlayed); } case "time_played:seconds": { @@ -140,7 +137,7 @@ public String onRequest(final OfflinePlayer offlinePlayer, String identifier) { * Time since last death */ case "time_since_death": { - return TimeUtil.getTime(Duration.of(secondsSinceLastDeath, ChronoUnit.SECONDS)); + return StatisticsUtils.formatTime(secondsSinceLastDeath); } case "seconds_since_death": { diff --git a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java index c2984a0..f344ddf 100644 --- a/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java +++ b/src/main/java/com/extendedclip/papi/expansion/mcstatistics/StatisticsUtils.java @@ -26,6 +26,8 @@ import org.bukkit.Statistic; import org.bukkit.entity.Player; +import java.util.StringJoiner; + public class StatisticsUtils { public static int getSecondsPlayed(final Player player, final boolean isLegacy) { return isLegacy ? player.getStatistic(Statistic.valueOf("PLAY_ONE_TICK")) / 20 : player.getStatistic(Statistic.PLAY_ONE_MINUTE) / 20; @@ -113,4 +115,34 @@ public static boolean isItem(final Material material, final boolean isLegacy) { return material.isItem(); } } + + public static String formatTime(long seconds) { + final StringJoiner joiner = new StringJoiner(" "); + + long minutes = seconds / 60; + long hours = minutes / 60; + final long days = hours / 24; + + seconds %= 60; + minutes %= 60; + hours %= 24; + + if (days > 0) { + joiner.add(days + "d"); + } + + if (hours > 0) { + joiner.add(hours + "h"); + } + + if (minutes > 0) { + joiner.add(minutes + "m"); + } + + if (seconds > 0) { + joiner.add(seconds + "s"); + } + + return joiner.toString(); + } }