(Memory usage is approx. 28MB per 350 players or 80KB per player over a 24hr span)
- 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.)
More is planned, such as implementing charts and graphs. Stay tuned!
Below is the new configuration. (Significant changes, I recommend resetting or use this config.)
Code:{ "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)" }
