{"id":115292,"date":"2026-06-06T22:01:05","date_gmt":"2026-06-06T19:01:05","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/"},"modified":"2026-06-06T22:01:05","modified_gmt":"2026-06-06T19:01:05","slug":"ohtablistping","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/","title":{"rendered":"OhTabListPing"},"content":{"rendered":"<p># OhTabListPing<\/p>\n<p>![Minecraft Version](https:\/\/www.spigotmc.org\/)<br \/>\n![License](LICENSE)<br \/>\n![GitHub](https:\/\/github.com\/anaspui\/ohtablistping)<\/p>\n<p>A high-performance Minecraft server plugin that displays each player&#8217;s ping (latency) in the tab list with color-coded formatting.<\/p>\n<p>![Preview](https:\/\/cdn.modrinth.com\/data\/cached_images\/74ece34aa37ccbd20a50494d76f8be78fd159295_0.webp)<br \/>\n_*Brownies featured*_<br \/>\n## Features<\/p>\n<p>**Real-time Ping Display** &#8211; Shows ping values next to player names in the tab list<br \/>\n**Color-Coded Indicators** &#8211; Visual feedback for connection quality<br \/>\n**In-Game Commands** &#8211; View and modify configuration without editing files<br \/>\n**High Performance** &#8211; Async updates with intelligent caching<br \/>\n**Fully Configurable** &#8211; Customize format, colors, thresholds, and update intervals<br \/>\n**Plugin Compatibility** &#8211; Works alongside nickname and permission plugins<br \/>\n**Optimized Updates** &#8211; Only updates when ping changes significantly  <\/p>\n<p>## Requirements<\/p>\n<p>&#8211; **Minecraft Version**: 1.21.1+ (Spigot or Paper)<br \/>\n&#8211; **Java Version**: 21 or higher<br \/>\n&#8211; **Server Software**: Spigot, Paper, or compatible forks<\/p>\n<p>## Installation<\/p>\n<p>1. **Download** the latest release (`OhTabListPing-x.x.xx.jar`) from Releases<br \/>\n2. **Place** the JAR file in your server&#8217;s `plugins\/` folder<br \/>\n3. **Restart** your server or load the plugin with a plugin manager<br \/>\n4. **Configure** (optional) &#8211; Edit `plugins\/OhTabListPing\/config.yml` to customize settings<br \/>\n5. **Reload** the plugin if you changed the config: `\/otlp reload`<\/p>\n<p>## Commands<\/p>\n<p>Manage the plugin configuration in-game with intuitive commands:<\/p>\n<p>### Main Command<br \/>\n&#8220;`<br \/>\n\/ohtablistping [subcommand] [args&#8230;]<br \/>\nAliases: \/otlp, \/ping-config<br \/>\n&#8220;`<\/p>\n<p>### Subcommands<\/p>\n<p>#### View Help<br \/>\n&#8220;`<br \/>\n\/otlp help<br \/>\n&#8220;`<br \/>\nDisplays all available commands and usage examples.<\/p>\n<p>#### List All Config Values<br \/>\n&#8220;`<br \/>\n\/otlp list<br \/>\n&#8220;`<br \/>\nShows all current configuration values in a formatted display.<\/p>\n<p>#### Get Specific Value<br \/>\n&#8220;`<br \/>\n\/otlp get <key><\/p>\n<p>Examples:<br \/>\n  \/otlp get update-interval<br \/>\n  \/otlp get debug<br \/>\n  \/otlp get color-coding.thresholds.excellent<br \/>\n&#8220;`<\/p>\n<p>#### Set Configuration Value<br \/>\n&#8220;`<br \/>\n\/otlp set <key> <value><\/p>\n<p>Examples:<br \/>\n  \/otlp set update-interval 60<br \/>\n  \/otlp set debug true<br \/>\n  \/otlp set ping-format &#8220;{player} [{color}{ping}ms]&#8221;<br \/>\n  \/otlp set color-coding.colors.excellent \u00a7a<br \/>\n&#8220;`<\/p>\n<p>#### Reload Configuration<br \/>\n&#8220;`<br \/>\n\/otlp reload<br \/>\n&#8220;`<br \/>\nReloads config.yml from disk and restarts the update task with new settings.<\/p>\n<p>### Permissions<\/p>\n<p>&#8211; `ohtablistping.admin` &#8211; Full admin access (default: op)<br \/>\n&#8211; `ohtablistping.reload` &#8211; Reload configuration only<br \/>\n&#8211; `ohtablistping.view` &#8211; View config values only<br \/>\n&#8211; `ohtablistping.set` &#8211; Modify config values only<\/p>\n<p>## Configuration<\/p>\n<p>The plugin automatically creates a `config.yml` file on first run. Here&#8217;s what you can customize:<\/p>\n<p>&#8220;`yaml<br \/>\n# Update interval in ticks (20 ticks = 1 second)<br \/>\nupdate-interval: 40  # Recommended: 40 (2 seconds)<\/p>\n<p># Minimum ping change to trigger update (avoids unnecessary updates)<br \/>\nupdate-threshold: 5  # Only update if ping changed by 5+ ms<\/p>\n<p># Display format<br \/>\nping-format: &#8220;{player} \u00a77[{color}{ping}ms\u00a77]&#8221;<\/p>\n<p># Color coding<br \/>\ncolor-coding:<br \/>\n  enabled: true<br \/>\n  colors:<br \/>\n    excellent: &#8220;\u00a7a&#8221;  # Green (0-50ms)<br \/>\n    good: &#8220;\u00a7e&#8221;       # Yellow (51-100ms)<br \/>\n    acceptable: &#8220;\u00a76&#8221; # Gold (101-150ms)<br \/>\n    poor: &#8220;\u00a7c&#8221;       # Red (151+ms)<br \/>\n  thresholds:<br \/>\n    excellent: 50<br \/>\n    good: 100<br \/>\n    acceptable: 150<\/p>\n<p># Performance settings<br \/>\nasync-updates: true  # Run updates asynchronously (recommended)<br \/>\ndebug: false         # Enable debug logging<br \/>\n&#8220;`<\/p>\n<p>### Format Placeholders<\/p>\n<p>&#8211; `{player}` &#8211; Player&#8217;s username<br \/>\n&#8211; `{ping}` &#8211; Current ping value<br \/>\n&#8211; `{color}` &#8211; Automatically determined color code<\/p>\n<p>### Color Codes<\/p>\n<p>Standard Minecraft color codes are supported:<br \/>\n&#8211; `\u00a7a` &#8211; Green<br \/>\n&#8211; `\u00a7e` &#8211; Yellow<br \/>\n&#8211; `\u00a76` &#8211; Gold<br \/>\n&#8211; `\u00a7c` &#8211; Red<br \/>\n&#8211; `\u00a77` &#8211; Gray<br \/>\n&#8211; `\u00a7f` &#8211; White<\/p>\n<p>## How It Works<\/p>\n<p>1. **Scheduled Updates**: The plugin runs a repeating task every `update-interval` ticks<br \/>\n2. **Ping Retrieval**: Gets each player&#8217;s ping using `Player.getPing()` API<br \/>\n3. **Smart Caching**: Only updates display if ping changed by more than `update-threshold`<br \/>\n4. **Color Coding**: Applies color based on ping quality thresholds<br \/>\n5. **Display Update**: Updates the tab list player name with formatted ping<\/p>\n<p>## Performance<\/p>\n<p>&#8211; **Async Execution**: Updates run asynchronously to prevent server lag<br \/>\n&#8211; **Intelligent Caching**: Avoids unnecessary updates using threshold system<br \/>\n&#8211; **Optimized String Operations**: Pre-formatted color codes and efficient formatting<br \/>\n&#8211; **Low Memory Footprint**: Minimal cache size (only UUID \u2192 ping map)<\/p>\n<p>**Benchmarks** (tested with 100 players):<br \/>\n&#8211; CPU Impact: < 0.1% per update cycle\n- Memory Usage: ~5KB additional RAM\n- TPS Impact: None (async operations)\n\n## Compatibility\n\n### Compatible With:\nLuckPerms (permission prefixes)  \nEssentialsX (nicknames)  \nVault (permission integration)  \nMost tab-modifying plugins (soft dependencies)\n\n### Server Software:\nSpigot 1.21.1\nPaper 1.21.1 \nPurpur 1.21.1\nOther Spigot-based forks\n\n## Troubleshooting\n\n### Ping not showing in tab list\n\n1. Check that the plugin is enabled: `\/plugins`\n2. Verify no errors in console during plugin startup\n3. Check `config.yml` is valid YAML syntax\n4. Try reloading the plugin: `\/reload confirm`\n5. Ensure no conflicting plugins are overriding tab list\n\n### Display names appear truncated\n\n- Shorten the `ping-format` string in config\n- Tab list has character limits, keep format concise\n\n### Plugin conflicts with nickname plugins\n\n- OhTabListPing uses soft dependencies and MONITOR priority\n- It should work alongside most nickname plugins\n- If conflicts occur, try adjusting plugin load order\n\n### Performance issues\n\n- Increase `update-interval` (default: 40 ticks)\n- Increase `update-threshold` (default: 5ms)\n- Ensure `async-updates` is enabled (default: true)\n- Enable `debug` to check for errors\n\n## Building from Source\n\n```bash\n# Clone the repository\ngit clone https:\/\/github.com\/anaspui\/ohtablistping.git\ncd ohtablistping\n\n# Build with Maven\nmvn clean package\n\n# Output JAR will be in target\/OhTabListPing-x.x.x.jar\n```\n\n## Development\n\n### Project Structure\n\n```\nohtablistping\/\n\u251c\u2500\u2500 src\/main\/java\/com\/anaspui\/ohtablistping\/\n\u2502   \u251c\u2500\u2500 OhTabListPing.java         # Main plugin class\n\u2502   \u251c\u2500\u2500 ConfigManager.java         # Configuration handler\n\u2502   \u251c\u2500\u2500 TabListUpdater.java        # Ping update logic\n\u2502   \u251c\u2500\u2500 PlayerEventListener.java   # Event handlers\n\u2502   \u2514\u2500\u2500 ConfigCommand.java         # Command executor\n\u251c\u2500\u2500 src\/main\/resources\/\n\u2502   \u251c\u2500\u2500 plugin.yml                 # Plugin descriptor\n\u2502   \u2514\u2500\u2500 config.yml                 # Default configuration\n\u2514\u2500\u2500 pom.xml                        # Maven build file\n```\n\n### Technologies Used\n\n- **Java 21** - Core language\n- **Spigot API 1.21.1** - Minecraft server API\n- **Maven** - Build management\n- **Bukkit Scheduler** - Async task execution\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature\/xyz-feature`)\n3. Commit your changes (`git commit -m 'Add xyz feature'`)\n4. Push to the branch (`git push origin feature\/xyz-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\n## Credits\n\n**Author**: anaspui\n\nBuilt with LOVE! for the Minecraft community\n\n---\n\n**\u2b50 If you find this plugin useful, please star the repository!**\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>High-performance Minecraft Tab List Ping Display Plugin compatible with Spigot\/Paper 1.21.1+<\/p>\n","protected":false},"featured_media":115293,"template":"","meta":{"_minecraft_slug":"ohtablistping","_minecraft_project_id":"awKT8PFt","_minecraft_author":"anaspui","_minecraft_license":"MIT","_minecraft_downloads":83,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"ohtablistping.zip","_minecraft_size_bytes":33624,"_minecraft_version_count":2,"_minecraft_updated_at":"2026-05-15T20:13:23.947394Z","_minecraft_date_created":"2026-01-31T20:47:17.917114Z","_minecraft_date_modified":"2026-02-01T12:33:04.632738Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/ohtablistping","_minecraft_icon_attachment_id":115293,"_minecraft_imported_at":"2026-06-06T19:01:06+00:00","_minecraft_import_hash":"b9d806d5db423abcee8741e05a2b5767","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[124,156,127,128,867,129,92],"mod_loader":[130,132,133,134],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-115292","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-bukkit","mod_category-decoration","mod_category-paper","mod_category-purpur","mod_category-social","mod_category-spigot","mod_category-utility","mod_loader-bukkit","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OhTabListPing - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OhTabListPing - Minecraft\" \/>\n<meta property=\"og:description\" content=\"High-performance Minecraft Tab List Ping Display Plugin compatible with Spigot\/Paper 1.21.1+\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/\",\"name\":\"OhTabListPing - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp\",\"datePublished\":\"2026-06-06T19:01:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ohtablistping\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"OhTabListPing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OhTabListPing - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/","og_locale":"en_US","og_type":"article","og_title":"OhTabListPing - Minecraft","og_description":"High-performance Minecraft Tab List Ping Display Plugin compatible with Spigot\/Paper 1.21.1+","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/","name":"OhTabListPing - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp","datePublished":"2026-06-06T19:01:05+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ohtablistping-icon-74ece34aa37ccbd20a50494d76f8be78fd159295_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ohtablistping\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"OhTabListPing"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/115292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/115293"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=115292"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=115292"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=115292"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=115292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}