MCPvP-Tab
A lightweight, packet-based tablist & friends system.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚡ Overview MCPvP-Tab completely replaces the default Minecraft tablist with a clean, fully custom player list powered by
PacketEvents. It features a built-in
friends system with two switchable tab views —
Friends and
Region — toggled by simply pressing
Sneak. Every element is packet-driven. No scoreboards, no flicker, no lag. The entire tab is rendered with fake entries, custom skulls, and real-time ping bars — exactly like the top PvP networks.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ Features
- Custom Tablist — Fully packet-based, replaces every entry
- Friends System — Add, remove, and accept friends with /friend
- Two Tab Views — Friends & Region, toggled with Sneak
- Real Player Skulls — Online friends show their actual skin
- Custom Skull Textures — Offline friends, headers, and separators use custom heads
- Live Ping Bars — Accurate connection quality indicators (5-bar system)
- Offline Friend Tracking — See which friends are offline with a timed-out indicator
- Online Player Count — Live count in the footer, updated every second
- Clean Header & Footer — Centered, formatted, fully customizable
- Smart Tab Completion — Context-aware suggestions for every subcommand
- Cracked Server Support — Works perfectly on offline-mode servers
- MySQL Storage — HikariCP connection pooling, zero file storage
- Fully Async — All database operations and snapshot building off the main thread
- Real Players Hidden — Vanilla tab entries are completely hidden via packets
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Friends Tab When a player opens their tablist, they see:
Code (Text):
Friends (3) ------- ● FriendOnline1 [green, real skin, live ping] ● FriendOnline2 [green, real skin, live ping] ✕ FriendOffline1 [gray, custom skull, timed out]
- Online friends appear at the top with their real skin and live ping
- Offline friends appear below with a dark skull and a timed-out ping icon
- No friends? The tab shows /f add <player> as a hint
- Maximum 75 friends per player
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Region Tab Press
Sneak to switch to Region view:
Code (Text):
PlayerA [gray, real skin, live ping] PlayerB [gray, real skin, live ping] PlayerC [gray, real skin, live ping]
- Shows every online player on the server
- Sorted alphabetically
- Each player displays their real skin and live ping
- Press Sneak again to switch back to Friends
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commands
Code (Text):
/friend add <player> Send a friend request (60s to accept) /friend accept <player> Accept an incoming request /friend remove <player> Remove a friend from your list
Aliases:
/f All commands feature
intelligent tab completion:
- /f add — suggests online players
- /f remove — suggests your current friends
- /f accept — suggests pending incoming requests
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚙️ Requirements
- Paper 1.21+ (or any Paper fork)
- Java 21
- PacketEvents 2.11+
- MySQL Database
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
️ Architecture Built with performance as the top priority:
- Zero main-thread computation — all snapshots built asynchronously
- Packet interception — vanilla player entries never reach the client as listed
- Immutable snapshots — precomputed and atomically swapped every second
- HikariCP — fast, pooled MySQL connections
- Caffeine cache — high-performance caching for skins and friend data
- No deprecated API — fully modern Paper and PacketEvents usage
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ping Bars The tablist displays accurate ping indicators:
Code (Text):
< 150ms ▐▐▐▐▐ (5 bars — Excellent) < 300ms ▐▐▐▐ (4 bars — Good) < 600ms ▐▐▐ (3 bars — Fair) < 1000ms ▐▐ (2 bars — Poor) < 1500ms ▐ (1 bar — Bad) > 1500ms (0 bars — No connection)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Built with ❤️ for competitive PvP servers. If you need support, feel free to open a discussion.