OhTabListPing

High-performance Minecraft Tab List Ping Display Plugin compatible with Spigot/Paper 1.21.1+

83

OhTabListPing

OhTabListPing

A high-performance Minecraft server plugin that displays each player's ping (latency) in the tab list with color-coded formatting.

Preview

*Brownies featured*

Features

Optimized Updates - Shows ping values next to player names in the tab list Optimized Updates - Visual feedback for connection quality Optimized Updates - View and modify configuration without editing files Optimized Updates - Async updates with intelligent caching Optimized Updates - Customize format, colors, thresholds, and update intervals Optimized Updates - Works alongside nickname and permission plugins Optimized Updates - Only updates when ping changes significantly

Requirements

- Server Software: 1.21.1+ (Spigot or Paper) - Server Software: 21 or higher - Server Software: Spigot, Paper, or compatible forks

Installation

1. Reload the latest release (`OhTabListPing-x.x.xx.jar`) from Reload 2. Reload the JAR file in your server's `plugins/` folder 3. Reload your server or load the plugin with a plugin manager 4. Reload (optional) - Edit `plugins/OhTabListPing/config.yml` to customize settings 5. Reload the plugin if you changed the config: `/otlp reload`

Commands

Manage the plugin configuration in-game with intuitive commands:

Main Command

``` /ohtablistping [subcommand] [args...] Aliases: /otlp, /ping-config ```

Subcommands

View Help

``` /otlp help ``` Displays all available commands and usage examples.

List All Config Values

``` /otlp list ``` Shows all current configuration values in a formatted display.

Get Specific Value

``` /otlp get <key>

Examples: /otlp get update-interval /otlp get debug /otlp get color-coding.thresholds.excellent ```

Set Configuration Value

``` /otlp set <key> <value>

Examples: /otlp set update-interval 60 /otlp set debug true /otlp set ping-format "{player} [{color}{ping}ms]" /otlp set color-coding.colors.excellent §a ```

Reload Configuration

``` /otlp reload ``` Reloads config.yml from disk and restarts the update task with new settings.

Permissions

- `ohtablistping.admin` - Full admin access (default: op) - `ohtablistping.reload` - Reload configuration only - `ohtablistping.view` - View config values only - `ohtablistping.set` - Modify config values only

Configuration

The plugin automatically creates a `config.yml` file on first run. Here's what you can customize:

```yaml

Update interval in ticks (20 ticks = 1 second)

update-interval: 40 # Recommended: 40 (2 seconds)

Minimum ping change to trigger update (avoids unnecessary updates)

update-threshold: 5 # Only update if ping changed by 5+ ms

Display format

ping-format: "{player} §7[{color}{ping}ms§7]"

Color coding

color-coding: enabled: true colors: excellent: "§a" # Green (0-50ms) good: "§e" # Yellow (51-100ms) acceptable: "§6" # Gold (101-150ms) poor: "§c" # Red (151+ms) thresholds: excellent: 50 good: 100 acceptable: 150

Performance settings

async-updates: true # Run updates asynchronously (recommended) debug: false # Enable debug logging ```

Format Placeholders

- `{player}` - Player's username - `{ping}` - Current ping value - `{color}` - Automatically determined color code

Color Codes

Standard Minecraft color codes are supported: - `§a` - Green - `§e` - Yellow - `§6` - Gold - `§c` - Red - `§7` - Gray - `§f` - White

How It Works

1. Display Update: The plugin runs a repeating task every `update-interval` ticks 2. Display Update: Gets each player's ping using `Player.getPing()` API 3. Display Update: Only updates display if ping changed by more than `update-threshold` 4. Display Update: Applies color based on ping quality thresholds 5. Display Update: Updates the tab list player name with formatted ping

Performance

- Low Memory Footprint: Updates run asynchronously to prevent server lag - Low Memory Footprint: Avoids unnecessary updates using threshold system - Low Memory Footprint: Pre-formatted color codes and efficient formatting - Low Memory Footprint: Minimal cache size (only UUID → ping map)

Benchmarks (tested with 100 players): - CPU Impact: < 0.1% per update cycle - Memory Usage: ~5KB additional RAM - TPS Impact: None (async operations)

Compatibility

Compatible With:

LuckPerms (permission prefixes) EssentialsX (nicknames) Vault (permission integration) Most tab-modifying plugins (soft dependencies)

Server Software:

Spigot 1.21.1 Paper 1.21.1 Purpur 1.21.1 Other Spigot-based forks

Troubleshooting

Ping not showing in tab list

1. Check that the plugin is enabled: `/plugins` 2. Verify no errors in console during plugin startup 3. Check `config.yml` is valid YAML syntax 4. Try reloading the plugin: `/reload confirm` 5. Ensure no conflicting plugins are overriding tab list

Display names appear truncated

- Shorten the `ping-format` string in config - Tab list has character limits, keep format concise

Plugin conflicts with nickname plugins

- OhTabListPing uses soft dependencies and MONITOR priority - It should work alongside most nickname plugins - If conflicts occur, try adjusting plugin load order

Performance issues

- Increase `update-interval` (default: 40 ticks) - Increase `update-threshold` (default: 5ms) - Ensure `async-updates` is enabled (default: true) - Enable `debug` to check for errors

Building from Source

```bash

Clone the repository

git clone https://github.com/anaspui/ohtablistping.git cd ohtablistping

Build with Maven

mvn clean package

Output JAR will be in target/OhTabListPing-x.x.x.jar

```

Development

Project Structure

``` ohtablistping/ ├── src/main/java/com/anaspui/ohtablistping/ │ ├── OhTabListPing.java # Main plugin class │ ├── ConfigManager.java # Configuration handler │ ├── TabListUpdater.java # Ping update logic │ ├── PlayerEventListener.java # Event handlers │ └── ConfigCommand.java # Command executor ├── src/main/resources/ │ ├── plugin.yml # Plugin descriptor │ └── config.yml # Default configuration └── pom.xml # Maven build file ```

Technologies Used

- Bukkit Scheduler - Core language - Bukkit Scheduler - Minecraft server API - Bukkit Scheduler - Build management - Bukkit Scheduler - Async task execution

Contributing

Contributions are welcome! Please follow these steps:

1. Fork the repository 2. Create a feature branch (`git checkout -b feature/xyz-feature`) 3. Commit your changes (`git commit -m 'Add xyz feature'`) 4. Push to the branch (`git push origin feature/xyz-feature`) 5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Credits

Author: Author

Built with LOVE! for the Minecraft community

---

⭐ If you find this plugin useful, please star the repository!

ADS