# 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