-
Notifications
You must be signed in to change notification settings - Fork 248
Feature guide: Unlimited nametag mode
This feature was marked for removal in a future TAB release. No support with it will be provided and no bugs will be fixed. See https://gist.github.com/NEZNAMY/f4cabf2fd9251a836b5eb877720dee5c for more info. If you found this link anywhere on the wiki (except the sidebar), let me know, so I can remove it.
Minecraft's name tags have a lot of limitations. This feature makes the nametag invisible and places invisible armor stands there instead (if you're wondering why not area effect clouds or text display, here's why), bypassing all limits and allowing more lines as well.
These are teleported every time players move, making it nearly impossible to notice. They are fully packet based (meaning they don't exist server side and will not stay in the map if anything goes wrong) and are processed asynchronously (has NO impact on your TPS).
The alternate solution - riding the player - is not implemented. Regardless of potentially unsatisfactory experience, the current method (teleporting) took years to perfect and it is expected to take no less for another completely different mode. It would also result in many compatibility issues with player riding plugins and similar.
This feature can be configured in config.yml under unlimited-nametag-mode section.
If you have TAB installed on BungeeCord, you will need to install TAB-Bridge on all backend servers to make it work.
Lines with dynamic height based on presence of other lines. Starting at usual height of nametag, adding 0.26 blocks for every visible non-empty line to build lines. To add more, simply add your own lines with any name you want into the list in position where you want it to be compared to other lines.
Default configuration
dynamic-lines:
- abovename
- nametag
- belowname
- another
Note: nametag
keyword represents the original line - combination of tagprefix + customtagname + tagsuffix
With the default configuration, abovename
line will be on top and another
on the bottom (with the same height as vanilla nametag). If another
is not used, belowname
will be on the bottom instead (if configured) and so on.
Lines with fixed height. Higher number = higher position. 0 is equal to height of vanilla nametag, 1 would be 1 block higher. Accepts decimal values. To add more, simply define more with their fixed height.
Default configuration
static-lines:
myCustomLine: 0.66
You can use these lines in configuration like the tagprefix, tagsuffix and other properties, for example: groups.yml
test:
belowname: "belowname line"
another: "line of text under belowname"
myCustomLine: "my line with fixed height"
_DEFAULT_:
abovename: "Default abovename for everyone"
Option name | Default value | Description |
---|---|---|
enabled | false | Enables / Disables the feature. Keep in mind this is an upgrade for nametag feature, so scoreboard-teams must be enabled as well. |
disable-on-boats | true | Due to an internal player location updating issue, player's visible location and server-side location do not match, causing armor stands to be out of sync when riding boats. Enabling this option will disable the feature for players riding boats to avoid this. |
disable-condition | %world%=disabledworld | A condition that must be met for disabling the feature for players and revert back to vanilla tags. Set to empty for not disabling the feature ever. |
This feature makes nametag invisible so it can display armor stands instead. Visibility rule also applies to Vanilla belowname, making it not display. You can just disable it as you won't see it anyway. To restore the visual, run /tab group _DEFAULT_ belowname %health% Health
.
Tip: If you want to show hearts like in the tablist instead of a number, download the HealthBar expansion for PlaceholderAPI and use %healthbar_default%
in the command instead.
As a result of armor stands being spawned on top of you for everyone, using unofficial minecraft modifications won't allow you to see your own armor stands with F5 like with vanilla nametags. If you want to see them, run /tab nametag preview
(the command is a toggle).
When using a modified client, you may end up with double nametags. One of them is the vanilla one and second is using armor stands. Modified clients usually don't respect visibility rule and make nametag visible despite TAB setting it to be invisible.
Note: Armor stand movement will be delayed. This is caused by ping and missing movement animation of self when moving. The delay is not visible when looking at other players (since other players animate along with armor stands).
When a line is effectively empty, it is not displayed at all. This means if a line is not configured at all, it is hidden. If a line contains a placeholder and that placeholder returned empty value and there's nothing else in the line (or only color codes), the line will also be hidden and shown again if placeholder changes value.
When in spectator gamemode, the client renders invisible entities and makes them transparent. Since this feature uses armor stands, you'll see armor stands above everyone. It is not possible for the plugin to modify client code.
When riding a Camel (added in 1.20), player position on Bukkit-based servers is wrong and flickering, making armor stands flicker as well. This is a server-sided bug and there is no reasonable way to avoid this on TAB's end. We will need to wait for a fix.
A workaround is to disable the feature for players on camels using disable-condition: "%vehicle%<-Camel"
(won't work on BungeeCord though, as the internal placeholder is not available there, you'll need to look for a PlaceholderAPI one).
When sneaking, armor stands will appear in wrong location for a single frame.
https://github.com/NEZNAMY/TAB/assets/6338394/534f7054-6919-46ea-a125-f025f0607dde
On these versions, sneaking flag of armor stands is completely ignored by the client. For that reason, when player is sneaking, armor stands will be hidden entirely.
To get started with the API, see Developer API page.
To access this feature, you'll need to obtain UnlimitedNametagManager
instance. Get it using TabAPI.getInstance().getNameTagManager()
. If scoreboard teams feature is disabled, the method will return null
.
If unlimited nametag mode is disabled, the returned object will not be an instance of UnlimitedNametagManager
.
You can merge both checks using
if (TabAPI.getInstance().getNameTagManager() instanceof UnlimitedNametagManager) {
UnlimitedNametagManager unm = (UnlimitedNametagManager) TabAPI.getInstance().getNameTagManager();
//do stuff
}
Just like with prefix and suffix, you have now access to the name itself:
-
UnlimitedNametagManager#setName(TabPlayer, String)
(usingnull
value will reset it back to original) UnlimitedNametagManager#getCustomName(TabPlayer)
UnlimitedNametagManager#getOriginalName(TabPlayer)
You can do this for any defined line. Find out which lines are defined using UnlimitedNametagManager#getDefinedLines()
and then you can use
-
UnlimitedNametagManager#setLine(TabPlayer, String line, String value)
(usingnull
value will reset it back to original) UnlimitedNametagManager#getCustomLine(TabPlayer, String line)
UnlimitedNametagManager#getOriginalLine(TabPlayer, String line)
You can disable this feature for specific players using
-
UnlimitedNametagManager#disableArmorStands(TabPlayer)
for disabling -
UnlimitedNametagManager#enableArmorStands(TabPlayer)
for enabling back -
UnlimitedNametagManager#hasDisabledArmorStands(TabPlayer)
for checking if player has disabled armor stands or not
- Why TAB?
- Installation
- Commands & Permissions
- Frequently Asked Questions
- Compatibility
- How to assign players into groups
- Known issues
- TAB-Bridge plugin
- Belowname
- Bossbar
- Global playerlist
- Header/Footer
- Layout
- Nametags
- Per world playerlist
- Ping spoof
- Playerlist objective
- RedisBungee support
- Scoreboard
- Sorting in tablist
- Spectator fix
- Tablist name formatting
- Unlimited nametag mode
- Animations
- Conditional placeholders
- Error logging
- MySQL
- Placeholder output replacements
- Placeholders
- RGB/font usage
- Client-sided mechanics
- Quick PlaceholderAPI startup guide
- How to setup compatibility with glow plugins
- How to display name from nickname plugins
- How to configure weights in LuckPerms
- How to save config in UTF-8 encoding
- Mini guides collection
- Additional information
- Optimizing plugin's CPU usage
- Developer API