mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-04 01:18:15 +02:00
Improved Ping gathering outlier filtering. "Unavailable" to player ping
This commit is contained in:
parent
2ddf220afd
commit
403503e61f
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<Session> allSessions = player.getValue(PlayerKeys.SESSIONS).orElse(new ArrayList<>());
|
||||
SessionsMutator sessionsMutator = SessionsMutator.forContainer(player);
|
||||
|
Loading…
Reference in New Issue
Block a user