⬆️ An example of using %slashping_ping% PAPI placeholder in TAB.
This is a
lightweight plugin with exactly one function: enables the checking of in-game ping with
/ping. Nothing fancy or complicated is involved. What it does is only the simplest task you ever ask for, hence the performance and size.
Major Highlights
• Comes with the well-known EssentialsX-style message preset.
• Works straight to the point with nothing unnecessary other than /ping.
• Supports
HEX codes in message configuration on 1.16+ servers.
• Enables
modification of ping values with simple parameters.
• Displays normalised pings on
PlaceholderAPI-compatible plugins.
• Goes completely intractable from /ping with the exempt permission.
• Bypasses target exemption to offer normal pinging at the admin level.
• Proves to be forward compatible with all
1.8+ versions.
Ping Normalisation
Ping in Minecraft does not only take into account network latency but also server-internal latency (i.e., processing delay). Very often, you find yourself entering a 10 ms (from server list) server but end up getting 50 ms ping (with /ping) in-game. To combat this issue, a way to normalise the ping values before displaying them in chat (or elsewhere with PAPI) is provided.
Code (Text):
Normalised Value = Max ( Round ( Original Value * Multiplier + Offset ), Lower Bound )
Round here means taking only the integral part from the intermediate result. Multiplier normalises the values by multiplication (default 0.8) while offset normalises by addition (default 0). The 2 parameters, together with the lower bound option, are made configurable in config.yml.
• Use the parameter "minimum" to define a lower bound value for ping -> Partially mitigate "0 ms" issue on join.
• Use "multiplier" and "offset" to eliminate the "background" latency from ping -> Normalise to pure network latency values.
Closest Name Match
Users no longer have to type in the full name of a ping target because the plugin is clever enough to find the closest match on the server based on the first few characters of a name!
HEX Colour Support
This plugin supports the colouring of chat messages with HEX codes on 1.16+ servers.
Code (Text):
"#e69296Your ping is #c8a2c8%ping% #e69296ms."
PlaceholderAPI Support
Use the placeholder
%slashping_ping% in any PlaceholderAPI-compatible plugins (e.g., your favourite
TAB plugin) to display the normalised ping values.
Commands & Permissions
•
/ping - (ping.self) - Ping yourself.
•
/ping <name> - (ping.others) - Ping someone.
•
/pingreload - (ping.reload) - Reload config.
• (ping.exempt) - Exempt from being a ping target.
• (ping.ignoreexempt) - Ignore or bypass exemption.
This plugin, at the moment, does not alter the "real" pings from the green bars. A closer look at the formula shows this plugin's reliance on the original pings to derive the normalised values. The computed result, however, is not applied back to the green bars due to one simple but critical reason: adjustments made in an episode will always propagate to the next one, affecting the origin of every other future computation. Together with how ping in Minecraft behaves (i.e., it stabilises back to the real value with time), it is becoming difficult to reflect dynamic changes correctly on green bars.
Runtime Requirements
• Java 8 or above
• Spigot 1.8 or above, or equivalent forks
• Permission plugin (Optional)
• PlaceholderAPI (Optional)