LatencyTop - Player Ping Leaderboard icon

LatencyTop - Player Ping Leaderboard -----

A pageable latency top leaderboard with modern features and excellent performance.




  • Improved the timestamp storage system to allow faster computation and comparison between timestamps.
----------, Jan 9, 2025

  • Now includes a simple API to access the data used in Latency Top efficiently. Simple instructions are located under the "API" spoiler on the main page.
  • Also added a "/pingtop reload" command which will you allow you to clear old data and load new configuration settings on the fly. (Permission: latencytop.admin)
If there are any issues, don't hesitate to contact me and ill correct those ASAP.
----------, Dec 27, 2024

  • Fixed "showOnlyVisiblePlayersOnLeaderboard" configuration option being ignored.
----------, Dec 26, 2024

  • Improved the handling of visibility within the leaderboard. Where it was possible for the index of player heads would become out of sync.
  • Also improved GC upon pageable inventory close.
----------, Dec 26, 2024

  • Improved the handling of visibility within the leaderboard. Where it was possible for the index of player heads would become out of sync.
  • Also improved GC upon pageable inventory close.
----------, Dec 26, 2024

  • Fixed the inverted sorting from the previous update. Sorry!
----------, Dec 26, 2024

  • Fixed an edge case where historical data may not retrieve after 23:59 at 00:00 the next day. (One minute later)
  • Also modified the player head cache retention to reflect the tick rate.
----------, Dec 26, 2024

  • Fixed handling of the aggregated data to use correct minute in time. (Previous impl. results in several "Ping Snapshots'" per minute, compared to one per minute as intended. That resulted in increased iteration and memory usage for the same data output.)
  • Also moved some of the computation and caching of deviation and fluctuation into the "Snapshots'" to reduce over all computation.
  • Improved inventory handling to update the specific content changes in cache and inventory without entirely regenerating page.
  • Also supports 1.21 (Natively, nothing broke it.)
(Memory usage is approx. 28MB per 350 players or 80KB per player over a 24hr span)
More is planned, such as implementing charts and graphs. Stay tuned!
----------, Dec 24, 2024

  • Fixed handling of the aggregated data to use correct minute in time. (Previous impl. results in several "Ping Snapshots'" per minute, compared to one per minute as intended. That resulted in increased iteration and memory usage for the same data output.)
  • Also moved some of the computation and caching of deviation and fluctuation into the "Snapshots'" to reduce over all computation.
  • Improved inventory handling to update the specific content changes in cache and inventory without entirely regenerating page.
  • Also supports 1.21 (Natively, nothing broke it.)
(Memory usage is approx. 28MB per 350 players or 80KB per player over a 24hr span)
More is planned, such as implementing charts and graphs. Stay tuned!
----------, Dec 24, 2024

  • Fixed handling of the aggregated data to use correct minute in time. (Previous impl. results in several "Ping Snapshots'" per minute, compared to one per minute as intended. This results in increased iteration and memory usage for the same data output.)
  • Also moved some of the computation and caching of deviation and fluctuation into the "Snapshots'" to reduce over all computation.
  • Improved inventory handling to update the specific content changes in cache and inventory without entirely regenerating page.
(Memory usage is approx. 28MB per 350 players or 80KB per player over a 24hr span)
More is planned, such as implementing charts and graphs. Stay tuned!
----------, Dec 24, 2024

Below is the new configuration. (Significant changes, I recommend resetting or using this config.)

Code (Text):
{
  "tickRate": 40,
  "removeOldDataAfterSpecifiedHours": 12,
  "numberLeaderboardRowsPerPage": 1,
  "showOnlyVisiblePlayersOnLeaderboard": true,
  "pageableInventoryNextPageTitle": "&aNext Page &7-->",
  "pageableInventoryBackPageTitle": "&7<-- &cBack Page",
  "inventoryFillerTitle": "&8[]",
  "commandNotExecutableByConsole": "&cThis command cannot be executed by the console.",
  "noPingDataAvailable": "&cNo ping data available for {player}.",
  "invalidTimeInterval": "&cInvalid time interval specified.",
  "timeIntervalMissing": "&cTime interval is missing.",
  "invalidArgument": "&cInvalid argument: {arg}.",
  "pingInfo": "&6{player}'s Ping: {ping}ms &6[&eAvg: {avgPing}ms&e, σ: {deviation}ms &f({descriptor}&f)&6]",
  "usagePlayer": "Specifies the player whose ping to check. If not specified, checks the sender's ping.",
  "usageTimeInterval": "Time range for historical data in seconds (e.g., -t:300 or -t:0 for historical data)",
  "commandOnlyByPlayer": "&cThis command can only be used by players.",
  "noPermission": "&cYou don't have permission to execute this command.",
  "playerLatencyLeaderboardTitle": "&ePlayer Latency Leaderboard",
  "displayNameFormat": "{gradient}#{position} &8- &6{playerName}",
  "pingInfoFormat": "&7Current Ping: &c{currentPing}ms &8({coloredPercentage}% &7{underOverStatus} avg&8)",
  "peakInfoFormat": "&7Peak Latency: &c{peakPing}ms &f(last hour)",
  "avgHistoricalPingFormat": "&7Avg. Ping: {avgPing}ms &7(&e5m: {average5Minutes}ms, &e15m: {average15Minutes}ms, &e30m: {average30Minutes}ms&7)",
  "fluctuationDeviationInfoFormat": "&7Fluctuation: &b{fluctuation}ms &8| &7Deviation: &6{deviation}ms &f(per minute)"
}
----------, Aug 3, 2024

Below is the new configuration. (Significant changes, I recommend resetting or use this config.)

Code (Text):
{
  "tickRate": 40,
  "removeOldDataAfterSpecifiedHours": 12,
  "numberLeaderboardRowsPerPage": 1,
  "showOnlyVisiblePlayersOnLeaderboard": true,
  "pageableInventoryNextPageTitle": "&aNext Page &7-->",
  "pageableInventoryBackPageTitle": "&7<-- &cBack Page",
  "inventoryFillerTitle": "&8[]",
  "commandNotExecutableByConsole": "&cThis command cannot be executed by the console.",
  "noPingDataAvailable": "&cNo ping data available for {player}.",
  "invalidTimeInterval": "&cInvalid time interval specified.",
  "timeIntervalMissing": "&cTime interval is missing.",
  "invalidArgument": "&cInvalid argument: {arg}.",
  "pingInfo": "&6{player}'s Ping: {ping}ms &6[&eAvg: {avgPing}ms&e, σ: {deviation}ms &f({descriptor}&f)&6]",
  "usagePlayer": "Specifies the player whose ping to check. If not specified, checks the sender's ping.",
  "usageTimeInterval": "Time range for historical data in seconds (e.g., -t:300 or -t:0 for historical data)",
  "commandOnlyByPlayer": "&cThis command can only be used by players.",
  "noPermission": "&cYou don't have permission to execute this command.",
  "playerLatencyLeaderboardTitle": "&ePlayer Latency Leaderboard",
  "displayNameFormat": "{gradient}#{position} &8- &6{playerName}",
  "pingInfoFormat": "&7Current Ping: &c{currentPing}ms &8({coloredPercentage}% &7{underOverStatus} avg&8)",
  "peakInfoFormat": "&7Peak Latency: &c{peakPing}ms &f(last hour)",
  "avgHistoricalPingFormat": "&7Avg. Ping: {avgPing}ms &7(&e5m: {average5Minutes}ms, &e15m: {average15Minutes}ms, &e30m: {average30Minutes}ms&7)",
  "fluctuationDeviationInfoFormat": "&7Fluctuation: &b{fluctuation}ms &8| &7Deviation: &6{deviation}ms &f(per minute)"
}
----------, Aug 3, 2024

Below is the new configuration. (Significant changes, I recommend resetting or use this config.)

Code (Text):
{
  "tickRate": 40,
  "removeOldDataAfterSpecifiedHours": 12,
  "numberLeaderboardRowsPerPage": 1,
  "showOnlyVisiblePlayersOnLeaderboard": true,
  "pageableInventoryNextPageTitle": "&aNext Page &7-->",
  "pageableInventoryBackPageTitle": "&7<-- &cBack Page",
  "inventoryFillerTitle": "&8[]",
  "commandNotExecutableByConsole": "&cThis command cannot be executed by the console.",
  "noPingDataAvailable": "&cNo ping data available for {player}.",
  "invalidTimeInterval": "&cInvalid time interval specified.",
  "timeIntervalMissing": "&cTime interval is missing.",
  "invalidArgument": "&cInvalid argument: {arg}.",
  "pingInfo": "&6{player}'s Ping: {ping}ms &6[&eAvg: {avgPing}ms&e, σ: {deviation}ms &f({descriptor}&f)&6]",
  "usagePlayer": "Specifies the player whose ping to check. If not specified, checks the sender's ping.",
  "usageTimeInterval": "Time range for historical data in seconds (e.g., -t:300 or -t:0 for historical data)",
  "commandOnlyByPlayer": "&cThis command can only be used by players.",
  "noPermission": "&cYou don't have permission to execute this command.",
  "playerLatencyLeaderboardTitle": "&ePlayer Latency Leaderboard",
  "displayNameFormat": "{gradient}#{position} &8- &6{playerName}",
  "pingInfoFormat": "&7Current Ping: &c{currentPing}ms &8({coloredPercentage}% &7{underOverStatus} avg&8)",
  "peakInfoFormat": "&7Peak Latency: &c{peakPing}ms &f(last hour)",
  "avgHistoricalPingFormat": "&7Avg. Ping: {avgPing}ms &7(&e5m: {average5Minutes}ms, &e15m: {average15Minutes}ms, &e30m: {average30Minutes}ms&7)",
  "fluctuationDeviationInfoFormat": "&7Fluctuation: &b{fluctuation}ms &8| &7Deviation: &6{deviation}ms &f(per minute)"
}
----------, Aug 3, 2024

Added 1.20.6 support (Fixed loading on that version)
----------, Jun 14, 2024

Small improvements
----------, May 19, 2024

Resource Information
Author:
----------
Total Downloads: 290
First Release: Mar 17, 2024
Last Update: Jan 9, 2025
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings