diff --git a/src/main/java/com/prometheus/spigot/listeners/MoveListener.java b/src/main/java/com/prometheus/spigot/listeners/MoveListener.java index 8e200a8..6f38ece 100644 --- a/src/main/java/com/prometheus/spigot/listeners/MoveListener.java +++ b/src/main/java/com/prometheus/spigot/listeners/MoveListener.java @@ -16,9 +16,18 @@ public final class MoveListener implements Listener { @EventHandler public void onMove(PlayerMoveEvent event) { - if (countBlockMovementOnly && !event.hasChangedBlock()) { + if (countBlockMovementOnly && !hasChangedBlock(event)) { return; } registry.incrementPlayerMovements(); } + + private boolean hasChangedBlock(PlayerMoveEvent event) { + if (event.getFrom() == null || event.getTo() == null) { + return false; + } + return event.getFrom().getBlockX() != event.getTo().getBlockX() + || event.getFrom().getBlockY() != event.getTo().getBlockY() + || event.getFrom().getBlockZ() != event.getTo().getBlockZ(); + } } diff --git a/src/main/java/com/prometheus/spigot/metrics/MetricsRegistry.java b/src/main/java/com/prometheus/spigot/metrics/MetricsRegistry.java index f842de7..666a8c8 100644 --- a/src/main/java/com/prometheus/spigot/metrics/MetricsRegistry.java +++ b/src/main/java/com/prometheus/spigot/metrics/MetricsRegistry.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.LongAdder; +import java.util.concurrent.atomic.LongAdder; import org.bukkit.Chunk; import org.bukkit.Material; import org.bukkit.Server; @@ -133,11 +133,11 @@ public final class MetricsRegistry { appendCounter(builder, "spigot_plugin_enable_total", "Total plugin enable events", pluginEnables.sum()); appendCounter(builder, "spigot_plugin_disable_total", "Total plugin disable events", pluginDisables.sum()); - appendLabeledCounter(builder, "spigot_blocks_broken_total", "Blocks broken by material", "material", blocksBrokenByMaterial); - appendLabeledCounter(builder, "spigot_player_deaths_total", "Player deaths by cause", "cause", deathsByCause); - appendLabeledCounter(builder, "spigot_player_logins_failed_total", "Failed player logins by reason", "reason", loginFailuresByReason); - appendLabeledCounter(builder, "spigot_commands_blocked_total", "Blocked commands by name", "command", commandsBlocked); - appendLabeledCounter(builder, "spigot_commands_executed_total", "Commands executed by source", "command", "source", commandsExecuted); + appendLabeledCounterAdder(builder, "spigot_blocks_broken_total", "Blocks broken by material", "material", blocksBrokenByMaterial); + appendLabeledCounterAdder(builder, "spigot_player_deaths_total", "Player deaths by cause", "cause", deathsByCause); + appendLabeledCounterAdder(builder, "spigot_player_logins_failed_total", "Failed player logins by reason", "reason", loginFailuresByReason); + appendLabeledCounterAdder(builder, "spigot_commands_blocked_total", "Blocked commands by name", "command", commandsBlocked); + appendLabeledCounterAdder(builder, "spigot_commands_executed_total", "Commands executed by source", "command", "source", commandsExecuted); appendGauge(builder, "spigot_players_online", "Online player count", server.getOnlinePlayers().size()); appendGauge(builder, "spigot_players_max", "Max player slots", server.getMaxPlayers()); @@ -218,10 +218,10 @@ public final class MetricsRegistry { } } if (!gcCounts.isEmpty()) { - appendLabeledCounter(builder, "jvm_gc_pause_seconds_count", "GC pause count", "gc", gcCounts); + appendLabeledCounterLong(builder, "jvm_gc_pause_seconds_count", "GC pause count", "gc", gcCounts); } if (!gcTimes.isEmpty()) { - appendLabeledCounter(builder, "jvm_gc_pause_seconds_total", "Total GC pause time", "gc", gcTimes); + appendLabeledCounterString(builder, "jvm_gc_pause_seconds_total", "Total GC pause time", "gc", gcTimes); } } @@ -358,7 +358,7 @@ public final class MetricsRegistry { .append('\n')); } - private void appendLabeledCounter(StringBuilder builder, String name, String help, String label, Map values) { + private void appendLabeledCounterAdder(StringBuilder builder, String name, String help, String label, Map values) { appendHelpAndType(builder, name, help, "counter"); values.entrySet().stream() .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder())) @@ -370,7 +370,7 @@ public final class MetricsRegistry { .append('\n')); } - private void appendLabeledCounter(StringBuilder builder, String name, String help, String label, Map values) { + private void appendLabeledCounterLong(StringBuilder builder, String name, String help, String label, Map values) { appendHelpAndType(builder, name, help, "counter"); values.entrySet().stream() .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder())) @@ -382,7 +382,7 @@ public final class MetricsRegistry { .append('\n')); } - private void appendLabeledCounter(StringBuilder builder, String name, String help, String label, Map values) { + private void appendLabeledCounterString(StringBuilder builder, String name, String help, String label, Map values) { appendHelpAndType(builder, name, help, "counter"); values.entrySet().stream() .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder())) @@ -394,8 +394,8 @@ public final class MetricsRegistry { .append('\n')); } - private void appendLabeledCounter(StringBuilder builder, String name, String help, String labelOne, String labelTwo, - Map values) { + private void appendLabeledCounterAdder(StringBuilder builder, String name, String help, String labelOne, String labelTwo, + Map values) { appendHelpAndType(builder, name, help, "counter"); values.entrySet().stream() .sorted(Map.Entry.comparingByKey(Comparator.comparing(LabelPair::first).thenComparing(LabelPair::second)))