diff --git a/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/PingMutator.java b/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/PingMutator.java index 855c68ee5..9fbf3b205 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/PingMutator.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/store/mutators/PingMutator.java @@ -52,7 +52,7 @@ public class PingMutator { int max = -1; for (Ping ping : pings) { Integer value = ping.getMax(); - if (value < 0) { + if (value < 0 || 8000 < value) { continue; } if (value > max) { @@ -67,7 +67,7 @@ public class PingMutator { int min = -1; for (Ping ping : pings) { Integer value = ping.getMin(); - if (value < 0) { + if (value < 0 || 8000 < value) { continue; } if (value < min || min == -1) { @@ -80,7 +80,7 @@ public class PingMutator { public double average() { return pings.stream().mapToDouble(Ping::getAverage) - .filter(value -> value >= 0) + .filter(value -> value >= 0 && value <= 8000) .average().orElse(-1); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/server/PingCountTimer.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/server/PingCountTimer.java index ef2c8ae3a..0e00df941 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/server/PingCountTimer.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/server/PingCountTimer.java @@ -27,6 +27,7 @@ import com.djrapitops.plan.data.store.objects.DateObj; import com.djrapitops.plan.system.processing.Processing; import com.djrapitops.plan.system.processing.processors.player.PingInsertProcessor; import com.djrapitops.plan.utilities.java.Reflection; +import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.RunnableFactory; @@ -106,6 +107,10 @@ public class PingCountTimer extends AbsRunnable implements Listener { Player player = Bukkit.getPlayer(uuid); if (player != null) { int ping = getPing(player); + if (ping < -1 || ping > TimeAmount.SECOND.ms() * 8L) { + // Don't accept bad values + return; + } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { Processing.submit(new PingInsertProcessor(uuid, new ArrayList<>(history))); @@ -155,7 +160,7 @@ public class PingCountTimer extends AbsRunnable implements Listener { addPlayer(player); } } - }).runTaskLater(PING_INTERVAL * 2); + }).runTaskLater(TimeAmount.SECOND.ticks() * 10L); } @EventHandler diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/parsing/InspectPage.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/parsing/InspectPage.java index f2b208ef5..0aca97c53 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/parsing/InspectPage.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/parsing/InspectPage.java @@ -120,9 +120,12 @@ public class InspectPage implements Page { replacer.put("tableBodyIPs", new GeoInfoTable(player.getValue(PlayerKeys.GEO_INFO).orElse(new ArrayList<>())).parseBody()); PingMutator pingMutator = PingMutator.forContainer(player); - replacer.put("avgPing", FormatUtils.cutDecimals(pingMutator.average()) + " ms"); - replacer.put("minPing", pingMutator.min() + " ms"); - replacer.put("maxPing", pingMutator.max() + " ms"); + double averagePing = pingMutator.average(); + int minPing = pingMutator.min(); + int maxPing = pingMutator.max(); + replacer.put("avgPing", averagePing != -1 ? FormatUtils.cutDecimals(averagePing) + " ms" : "Unavailable"); + replacer.put("minPing", minPing != -1 ? minPing + " ms" : "Unavailable"); + replacer.put("maxPing", maxPing != -1 ? maxPing + " ms" : "Unavailable"); List allSessions = player.getValue(PlayerKeys.SESSIONS).orElse(new ArrayList<>()); SessionsMutator sessionsMutator = SessionsMutator.forContainer(player);