Fixed bug with time-number-formatting (#116), removed api test method (#115)

This commit is contained in:
Artemis-the-gr8 2022-08-15 16:57:45 +02:00
parent a456c1aa14
commit 4dc5fe86e0
10 changed files with 40 additions and 53 deletions

View File

@ -14,7 +14,6 @@ import com.gmail.artemis.the.gr8.playerstats.msg.OutputManager;
import com.gmail.artemis.the.gr8.playerstats.msg.msgutils.LanguageKeyHandler; import com.gmail.artemis.the.gr8.playerstats.msg.msgutils.LanguageKeyHandler;
import com.gmail.artemis.the.gr8.playerstats.statistic.StatCalculator; import com.gmail.artemis.the.gr8.playerstats.statistic.StatCalculator;
import com.gmail.artemis.the.gr8.playerstats.utils.EnumHandler; import com.gmail.artemis.the.gr8.playerstats.utils.EnumHandler;
import com.gmail.artemis.the.gr8.playerstats.utils.MyLogger;
import com.gmail.artemis.the.gr8.playerstats.utils.OfflinePlayerHandler; import com.gmail.artemis.the.gr8.playerstats.utils.OfflinePlayerHandler;
import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.PlaceholderAPIPlugin;
import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.clip.placeholderapi.expansion.PlaceholderExpansion;
@ -157,11 +156,9 @@ public final class Main extends JavaPlugin {
} }
private void setupMetrics() { private void setupMetrics() {
MyLogger.logLowLevelMsg("setupMetrics called: " + System.currentTimeMillis());
new BukkitRunnable() { new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
MyLogger.logLowLevelMsg("setupMetrics running: " + System.currentTimeMillis());
final Metrics metrics = new Metrics(getInstance(), 15923); final Metrics metrics = new Metrics(getInstance(), 15923);
final boolean placeholderExpansionActive; final boolean placeholderExpansionActive;
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
@ -173,7 +170,6 @@ public final class Main extends JavaPlugin {
} else { } else {
placeholderExpansionActive = false; placeholderExpansionActive = false;
} }
MyLogger.logLowLevelMsg("expansion present: " + placeholderExpansionActive);
metrics.addCustomChart(new SimplePie("using_placeholder_expansion", () -> placeholderExpansionActive ? "yes" : "no")); metrics.addCustomChart(new SimplePie("using_placeholder_expansion", () -> placeholderExpansionActive ? "yes" : "no"));
} }
}.runTaskLaterAsynchronously(this, 200); }.runTaskLaterAsynchronously(this, 200);

View File

@ -16,16 +16,16 @@ public interface InternalFormatter {
/** @return a TextComponent with the following parts: /** @return a TextComponent with the following parts:
<br>[player-name]: [number] [stat-name] {sub-stat-name}*/ <br>[player-name]: [number] [stat-name] {sub-stat-name}*/
TextComponent formatPlayerStat(RequestSettings requestSettings, int playerStat); TextComponent formatAndSavePlayerStat(RequestSettings requestSettings, int playerStat);
/** @return a TextComponent with the following parts: /** @return a TextComponent with the following parts:
<br>[Total on] [server-name]: [number] [stat-name] [sub-stat-name]*/ <br>[Total on] [server-name]: [number] [stat-name] [sub-stat-name]*/
TextComponent formatServerStat(RequestSettings requestSettings, long serverStat); TextComponent formatAndSaveServerStat(RequestSettings requestSettings, long serverStat);
/** @return a TextComponent with the following parts: /** @return a TextComponent with the following parts:
<br>[PlayerStats] [Top 10] [stat-name] [sub-stat-name] <br>[PlayerStats] [Top 10] [stat-name] [sub-stat-name]
<br> [1.] [player-name] [number] <br> [1.] [player-name] [number]
<br> [2.] [player-name] [number] <br> [2.] [player-name] [number]
<br> [3.] etc...*/ <br> [3.] etc...*/
TextComponent formatTopStat(RequestSettings requestSettings, LinkedHashMap<String, Integer> topStats); TextComponent formatAndSaveTopStat(RequestSettings requestSettings, LinkedHashMap<String, Integer> topStats);
} }

View File

@ -51,7 +51,7 @@ public final class OutputManager implements InternalFormatter {
} }
@Override @Override
public TextComponent formatPlayerStat(@NotNull RequestSettings requestSettings, int playerStat) { public TextComponent formatAndSavePlayerStat(@NotNull RequestSettings requestSettings, int playerStat) {
BiFunction<Integer, CommandSender, TextComponent> playerStatFunction = BiFunction<Integer, CommandSender, TextComponent> playerStatFunction =
getMessageBuilder(requestSettings).formattedPlayerStatFunction(playerStat, requestSettings); getMessageBuilder(requestSettings).formattedPlayerStatFunction(playerStat, requestSettings);
@ -59,7 +59,7 @@ public final class OutputManager implements InternalFormatter {
} }
@Override @Override
public TextComponent formatServerStat(@NotNull RequestSettings requestSettings, long serverStat) { public TextComponent formatAndSaveServerStat(@NotNull RequestSettings requestSettings, long serverStat) {
BiFunction<Integer, CommandSender, TextComponent> serverStatFunction = BiFunction<Integer, CommandSender, TextComponent> serverStatFunction =
getMessageBuilder(requestSettings).formattedServerStatFunction(serverStat, requestSettings); getMessageBuilder(requestSettings).formattedServerStatFunction(serverStat, requestSettings);
@ -67,7 +67,7 @@ public final class OutputManager implements InternalFormatter {
} }
@Override @Override
public TextComponent formatTopStat(@NotNull RequestSettings requestSettings, @NotNull LinkedHashMap<String, Integer> topStats) { public TextComponent formatAndSaveTopStat(@NotNull RequestSettings requestSettings, @NotNull LinkedHashMap<String, Integer> topStats) {
BiFunction<Integer, CommandSender, TextComponent> topStatFunction = BiFunction<Integer, CommandSender, TextComponent> topStatFunction =
getMessageBuilder(requestSettings).formattedTopStatFunction(topStats, requestSettings); getMessageBuilder(requestSettings).formattedTopStatFunction(topStats, requestSettings);
@ -138,7 +138,7 @@ public final class OutputManager implements InternalFormatter {
} }
private MessageBuilder getMessageBuilder(RequestSettings requestSettings) { private MessageBuilder getMessageBuilder(RequestSettings requestSettings) {
if (requestSettings.isAPIRequest() || !requestSettings.isConsoleSender()) { if (!requestSettings.isConsoleSender()) {
return messageBuilder; return messageBuilder;
} else { } else {
return consoleMessageBuilder; return consoleMessageBuilder;

View File

@ -68,7 +68,7 @@ public final class NumberFormatter {
double min = smallUnit.getSeconds(); double min = smallUnit.getSeconds();
double leftover = number / 20.0; double leftover = number / 20.0;
if (isInRange(max, min, 86400) && leftover >= 86400) { if (isInRange(max, 86400, min) && leftover >= 86400) {
double days = Math.floor(leftover / 86400); double days = Math.floor(leftover / 86400);
leftover = leftover % (86400); leftover = leftover % (86400);
if (smallUnit == Unit.DAY) { if (smallUnit == Unit.DAY) {
@ -78,10 +78,14 @@ public final class NumberFormatter {
return output.append(format.format(days)) return output.append(format.format(days))
.append("d").toString(); .append("d").toString();
} }
output.append(format.format(days)) if (days == 0) {
.append("d"); output.append("0d");
} else {
output.append(format.format(days))
.append("d");
}
} }
if (isInRange(max, min, 3600) && leftover >= 3600) { if (isInRange(max, 3600, min)) {
if (output.toString().contains("d")) { if (output.toString().contains("d")) {
output.append(" "); output.append(" ");
} }
@ -94,10 +98,14 @@ public final class NumberFormatter {
return output.append(format.format(hours)) return output.append(format.format(hours))
.append("h").toString(); .append("h").toString();
} }
output.append(format.format(hours)) if (hours == 0) {
.append("h"); output.append("0h");
} else {
output.append(format.format(hours))
.append("h");
}
} }
if (isInRange(max, min, 60) && leftover >= 60) { if (isInRange(max, 60, min)) {
if (output.toString().contains("h")) { if (output.toString().contains("h")) {
output.append(" "); output.append(" ");
} }
@ -110,10 +118,14 @@ public final class NumberFormatter {
return output.append(format.format(minutes)) return output.append(format.format(minutes))
.append("m").toString(); .append("m").toString();
} }
output.append(format.format(minutes)) if (minutes == 0) {
.append("m"); output.append("0m");
} else {
output.append(format.format(minutes))
.append("m");
}
} }
if (isInRange(max, min, 1) && leftover > 0) { if (isInRange(max,1, min) && leftover > 0) {
if (output.toString().contains("m")) { if (output.toString().contains("m")) {
output.append(" "); output.append(" ");
} }
@ -124,7 +136,7 @@ public final class NumberFormatter {
return output.toString(); return output.toString();
} }
private boolean isInRange(double bigUnit, double smallUnit, double unitToEvaluate) { private boolean isInRange(double bigUnit, double unitToEvaluate, double smallUnit) {
return bigUnit >= unitToEvaluate && unitToEvaluate >= smallUnit; return bigUnit >= unitToEvaluate && unitToEvaluate >= smallUnit;
} }
} }

View File

@ -2,7 +2,6 @@ package com.gmail.artemis.the.gr8.playerstats.statistic;
import com.gmail.artemis.the.gr8.playerstats.enums.StandardMessage; import com.gmail.artemis.the.gr8.playerstats.enums.StandardMessage;
import com.gmail.artemis.the.gr8.playerstats.enums.Target; import com.gmail.artemis.the.gr8.playerstats.enums.Target;
import com.gmail.artemis.the.gr8.playerstats.msg.components.ComponentUtils;
import com.gmail.artemis.the.gr8.playerstats.statistic.request.RequestSettings; import com.gmail.artemis.the.gr8.playerstats.statistic.request.RequestSettings;
import com.gmail.artemis.the.gr8.playerstats.msg.OutputManager; import com.gmail.artemis.the.gr8.playerstats.msg.OutputManager;
import com.gmail.artemis.the.gr8.playerstats.reload.ReloadThread; import com.gmail.artemis.the.gr8.playerstats.reload.ReloadThread;
@ -60,18 +59,11 @@ public final class StatThread extends Thread {
Target selection = requestSettings.getTarget(); Target selection = requestSettings.getTarget();
try { try {
TextComponent statResult = switch (selection) { TextComponent statResult = switch (selection) {
case PLAYER -> outputManager.formatPlayerStat(requestSettings, statCalculator.getPlayerStat(requestSettings)); case PLAYER -> outputManager.formatAndSavePlayerStat(requestSettings, statCalculator.getPlayerStat(requestSettings));
case TOP -> outputManager.formatTopStat(requestSettings, statCalculator.getTopStats(requestSettings)); case TOP -> outputManager.formatAndSaveTopStat(requestSettings, statCalculator.getTopStats(requestSettings));
case SERVER -> outputManager.formatServerStat(requestSettings, statCalculator.getServerStat(requestSettings)); case SERVER -> outputManager.formatAndSaveServerStat(requestSettings, statCalculator.getServerStat(requestSettings));
}; };
if (requestSettings.isAPIRequest()) { outputManager.sendToCommandSender(requestSettings.getCommandSender(), statResult);
String msg = ComponentUtils.getTranslatableComponentSerializer()
.serialize(statResult);
requestSettings.getCommandSender().sendMessage(msg);
}
else {
outputManager.sendToCommandSender(requestSettings.getCommandSender(), statResult);
}
} }
catch (ConcurrentModificationException e) { catch (ConcurrentModificationException e) {
if (!requestSettings.isConsoleSender()) { if (!requestSettings.isConsoleSender()) {

View File

@ -49,7 +49,7 @@ public final class PlayerStatRequest extends StatRequest<Integer> implements Req
TextComponent prettyComponent = Main TextComponent prettyComponent = Main
.getStatFormatter() .getStatFormatter()
.formatPlayerStat(completedRequest, stat); .formatAndSavePlayerStat(completedRequest, stat);
String prettyString = ComponentUtils String prettyString = ComponentUtils
.getTranslatableComponentSerializer() .getTranslatableComponentSerializer()

View File

@ -127,8 +127,6 @@ public final class RequestHandler {
} else if (offlinePlayerHandler.isRelevantPlayer(arg) && requestSettings.getPlayerName() == null) { } else if (offlinePlayerHandler.isRelevantPlayer(arg) && requestSettings.getPlayerName() == null) {
requestSettings.setPlayerName(arg); requestSettings.setPlayerName(arg);
requestSettings.setTarget(Target.PLAYER); requestSettings.setTarget(Target.PLAYER);
} else if (arg.equalsIgnoreCase("api")) {
requestSettings.setAPIRequest();
} }
} }
patchRequest(requestSettings); patchRequest(requestSettings);

View File

@ -29,7 +29,6 @@ import org.jetbrains.annotations.NotNull;
public final class RequestSettings { public final class RequestSettings {
private final CommandSender sender; private final CommandSender sender;
private boolean isAPIRequest;
private Statistic statistic; private Statistic statistic;
private String playerName; private String playerName;
private Target target; private Target target;
@ -49,29 +48,19 @@ public final class RequestSettings {
<br>- boolean isAPIRequest <br>- boolean isAPIRequest
@param sender the CommandSender who prompted this RequestGenerator @param sender the CommandSender who prompted this RequestGenerator
@param isAPIRequest whether this RequestGenerator is coming through the API or the onCommand
*/ */
private RequestSettings(@NotNull CommandSender sender, boolean isAPIRequest) { private RequestSettings(@NotNull CommandSender sender) {
this.sender = sender; this.sender = sender;
this.isAPIRequest = isAPIRequest;
target = Target.TOP; target = Target.TOP;
playerFlag = false; playerFlag = false;
} }
public static RequestSettings getBasicRequest(CommandSender sender) { public static RequestSettings getBasicRequest(CommandSender sender) {
return new RequestSettings(sender, false); return new RequestSettings(sender);
} }
public static RequestSettings getBasicAPIRequest() { public static RequestSettings getBasicAPIRequest() {
return new RequestSettings(Bukkit.getConsoleSender(), true); return new RequestSettings(Bukkit.getConsoleSender());
}
public void setAPIRequest() {
this.isAPIRequest = true;
}
public boolean isAPIRequest() {
return isAPIRequest;
} }
public @NotNull CommandSender getCommandSender() { public @NotNull CommandSender getCommandSender() {

View File

@ -49,7 +49,7 @@ public final class ServerStatRequest extends StatRequest<Long> implements Reques
TextComponent prettyComponent = Main TextComponent prettyComponent = Main
.getStatFormatter() .getStatFormatter()
.formatServerStat(completedRequest, stat); .formatAndSaveServerStat(completedRequest, stat);
String prettyString = ComponentUtils String prettyString = ComponentUtils
.getTranslatableComponentSerializer() .getTranslatableComponentSerializer()

View File

@ -51,7 +51,7 @@ public final class TopStatRequest extends StatRequest<LinkedHashMap<String, Inte
TextComponent prettyComponent = Main TextComponent prettyComponent = Main
.getStatFormatter() .getStatFormatter()
.formatTopStat(completedRequest, stat); .formatAndSaveTopStat(completedRequest, stat);
String prettyString = ComponentUtils String prettyString = ComponentUtils
.getTranslatableComponentSerializer() .getTranslatableComponentSerializer()