# ITabListManager
> Per-viewer tab-list decoration for players running the Lectern client mod: a styled prefix and suffix around a player's tab name, and an explicit sort weight.
`gg.lode.lecternapi.api.manager.ITabListManager`
---
## Signature
```java
public interface ITabListManager
```
---
## Notes
Unlike scoreboard teams (global, name-keyed, ordered by the alphabetical-team-name
hack) these decorations are per viewer (staff can see real ranks while players see
disguises), take full MiniMessage/JSON styling (`<gradient:gold:yellow>[MVP]`),
order by weight, and never touch the scoreboard, so they cannot collide with other
plugins' teams or leak a nick-spoofed player's real name through team entries.
Sorting: lower weight sorts higher; players without an entry sit at weight 0 in their
vanilla position. Weights re-order before the tab display cap, so a negative-weight
player is guaranteed a visible row on a full server.
Decorations compose with `INicknameManager` nicknames, the prefix wraps whatever
name the viewer is meant to see.
---
## Methods
### setTabEntry
```java
void setTabEntry(Player viewer, UUID targetUuid, String prefix, String suffix, int sortWeight)
void setTabEntry(Player viewer, Player target, String prefix, String suffix, int sortWeight)
```
Sets a player's tab decoration as seen by the viewer.
Convenience overload taking the target player directly.
---
### removeTabEntry
```java
void removeTabEntry(Player viewer, UUID targetUuid)
```
Removes the target's decoration from the viewer's tab list.
| Parameter | Type |
|---|---|
| `viewer` | `Player` |
| `targetUuid` | `UUID` |
---
### clearTabList
```java
void clearTabList(Player viewer)
```
Removes every decoration from the viewer's tab list.
| Parameter | Type |
|---|---|
| `viewer` | `Player` |
---
## Example
Show one viewer a decorated tab list, without touching scoreboard teams:
```java
ITabListManager tabs = LecternAPI.getApi().getTabListManager();
// Staff see the real rank. Lower weight sorts higher.
tabs.setTabEntry(staff, suspect, "<red>[MOD WATCH] </red>", "", -10);
// Everyone else sees the disguise.
for (Player other : Bukkit.getOnlinePlayers()) {
if (other.equals(staff)) continue;
tabs.setTabEntry(other, suspect, "<gray>[Member] </gray>", "", 0);
}
```
Decorations are per viewer, so the same player can appear differently to different people. Clear
them when you are done:
```java
tabs.removeTabEntry(staff, suspect.getUniqueId());
tabs.clearTabList(staff);
```
---
## Related Pages
- [[INicknameManager]]. Per-viewer names, which these decorations wrap