A beautiful and versatile TAB list plugin for Velocity proxies
Go to file
AlexDev_ cb8a50c24f
Sorting System with Placeholders (#94)
* Added regex check for placeholders to avoid useless requests.
Added support for custom nametags. Due to minecraft limit only legacy chatcolor are supported.
Team names now are unique, so 1 team can have max 1 player.
Fixed problem with luckperms event bus while reloading the plugin.

* Update src/main/java/net/william278/velocitab/config/Placeholder.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/hook/LuckPermsHook.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/config/Formatter.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/packet/UpdateTeamsPacket.java

Co-authored-by: William <will27528@gmail.com>

* Fixed problem while updating display names. Changed a few method signature as requested in pr. Applied changes of pr.

* Added support for placeholders as sorting system

* Code reformat

* Update logging, task scheduling and player rosters

Modified logging in the ScoreboardManager to represent playerNames as an array for readability. Ensured all tasks scheduled by Velocitab are canceled on proxy shutdown to prevent unwanted behavior. Reworked player roster management in PlayerTabList to correctly update player roles and decrease asynchronicity, enhancing performance and preventing possible race conditions.

* Fixed problems after merging with upstream, fixed problem with player team color on join.

* Fixed problems with pr-merge. Added sorting system with placeholders.

* Update src/main/java/net/william278/velocitab/packet/UpdateTeamsPacket.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/packet/ScoreboardManager.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/packet/ScoreboardManager.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/packet/ScoreboardManager.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/config/Formatter.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/player/TabPlayer.java

Co-authored-by: William <will27528@gmail.com>

* Fix username replacement in scoreboard and code typo

This commit resolves two issues. Firstly, changed the variable that we split the nametag on in `ScoreboardManager` from a hardcoded string to the player's specific username. This rectifies an issue where incorrect splitting occurred if the username wasn't exactly "%username%". Secondly, fixed a miswritten method call in `Formatter` from '..legacySection()' to '.legacySection()', correcting a syntax error. Lastly, removed superfluous replacement in `TabPlayer's` getNametag method as it was already handled in `ScoreboardManager`.

* Reformat code

* Changed logic with only one plugin message request.

* Update src/main/java/net/william278/velocitab/sorting/SortingManager.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/hook/LuckPermsHook.java

Co-authored-by: William <will27528@gmail.com>

* Update src/main/java/net/william278/velocitab/packet/ScoreboardManager.java

Co-authored-by: William <will27528@gmail.com>

* Fixed requested changes

* Changed docs

---------

Co-authored-by: William <will27528@gmail.com>
2023-09-25 15:10:45 +01:00
.github [ci skip] Mark compatible with 1.20.1 2023-06-12 18:49:07 +01:00
docs Sorting System with Placeholders (#94) 2023-09-25 15:10:45 +01:00
gradle/wrapper Bump to Gradle 8, Bump com.github.johnrengelman.shadow to v8.1.0 2023-03-01 12:40:43 +00:00
images [ci skip] Update README.md 2023-03-12 22:34:48 +00:00
src/main Sorting System with Placeholders (#94) 2023-09-25 15:10:45 +01:00
.gitignore Initial commit 2023-02-19 00:02:50 +00:00
build.gradle Bump org.projectlombok:lombok from 1.18.28 to 1.18.30 (#92) 2023-09-22 18:01:56 +01:00
gradle.properties [ci skip] Bump to v1.5 2023-09-22 18:03:49 +01:00
gradlew Bump to Gradle 8, Bump com.github.johnrengelman.shadow to v8.1.0 2023-03-01 12:40:43 +00:00
gradlew.bat Initial commit 2023-02-19 00:02:50 +00:00
HEADER Add license header, tweak build scripts 2023-04-17 16:04:53 +01:00
LICENSE Add LICENSE and README 2023-02-19 01:36:08 +00:00
README.md [ci skip] Add link to Hangar 2023-04-22 23:11:45 +01:00
settings.gradle Bump to 1.1.1, update build script, stop shading lombok 2023-03-10 12:47:04 +00:00

Velocitab


Velocitab is a super-simple Velocity TAB menu plugin that uses scoreboard team client-bound packets to actually sort player lists without the need for a backend plugin. Supporting modern RGB formatting, animations, comprehensive placeholder support and defining multiple TAB menus for different groups of servers, Velocitab is a versatile plugin, useful for any Velocity-based proxy network.

Showcase of different TAB menus made with Velocitab.png

Setup

Simply add the jar to your Velocity /plugins/ folder. It's also recommended that you install LuckPerms for prefix/suffix/role (and sorting) support. Then, edit the plugin config.yml to your liking.

Configuration

Velocitab has a simple config file that lets you define a header, footer and format for the player list. You can additionally configure groups of servers to display different formats in the TAB menu depending on which server the player is viewing it from.

Formatting

Velocitab supports the full range of RGB colors and gradients, with options to use either MineDown (default), MiniMessage, or legacy formatting.

Placeholders

You can include placeholders in the header, footer and player name format of the TAB list. The following placeholders are supported:

Placeholder Description Example
%players_online% Players online on the proxy 6
%max_players_online% Player capacity of the proxy 500
%local_players_online% Players online on the server the player is on 3
%current_date% Current real-world date of the server 24 Feb 2023
%current_time% Current real-world time of the server 21:45:32
%username% The player's username William278
%server% Name of the server the player is on alpha
%ping% Ping of the player (in ms) 6
%prefix% The player's prefix (from LuckPerms) &4[Admin]
%suffix% The player's suffix (from LuckPerms) &c
%role% The player's primary LuckPerms group admin
%debug_team_name% Internal team value, used for list sorting 1_alpha_William2

PlaceholderAPI placeholders are also supported. To use them, just install PAPIProxyBridge on your Velocity proxy and backend Spigot servers. Additionally, a hook for MiniPlaceholders is supported for servers using the MiniMessage formatter.

Command

You can use the /velocitab reload command to reload the plugin config file (permission: velocitab.command.reload), and /velocitab update to check for updates (permission: velocitab.command.update).

Building

To build Velocitab, simply run the following in the root of the repository:

./gradlew clean build

The build will be output as /target/Velocitab-x.xx.jar.

License

Velocitab is licensed under the Apache 2.0 license.

  • Website — Visit my website!
  • Docs — Read the plugin docs!
  • Modrinth — View the plugin Modrinth page (Also: Hangar)
  • Issues — File a bug report or feature request
  • Discord — Get support, ask questions!

© William278, 2023. Licensed under the Apache-2.0 License.