From 1e40cae27b76a7405d4d1cbd508bfe9eb3d79171 Mon Sep 17 00:00:00 2001 From: NEZNAMY Date: Sat, 1 Mar 2025 08:46:19 +0100 Subject: [PATCH] [Wiki] Monthly wiki backup for March 2025 --- .github/description/description_bbcode.txt | 2 +- .github/description/description_markdown.md | 2 +- .github/wiki/additional_information.md | 10 ++-- .github/wiki/compatibility.md | 4 +- .github/wiki/developer_api.md | 6 +- .../feature_guide_conditional_placeholders.md | 55 ++++++++----------- .github/wiki/feature_guide_header_footer.md | 2 +- .github/wiki/feature_guide_nametags.md | 15 ++++- .github/wiki/feature_requests.md | 9 +++ .github/wiki/frequently_asked_questions.md | 2 +- .github/wiki/home.md | 2 +- 11 files changed, 58 insertions(+), 51 deletions(-) create mode 100644 .github/wiki/feature_requests.md diff --git a/.github/description/description_bbcode.txt b/.github/description/description_bbcode.txt index 2810cea35..1a11ed886 100644 --- a/.github/description/description_bbcode.txt +++ b/.github/description/description_bbcode.txt @@ -2,7 +2,7 @@ TAB is an all-in-one plugin for displaying information in various places, which aims to outperform all similar plugins in terms of features, compatibility and performance. The compact configuration allows you to get the plugin to work the way you want regardless of how simple or complex you want it to be or how experienced you are. The default configuration already contains useful values and examples to give you a better understanding and get you started quickly with instant results. The extensive [URL='https://github.com/NEZNAMY/TAB/wiki']wiki[/URL] answers any of your questions. -[IMG]https://img.shields.io/badge/Release-5.0.5-blue.svg[/IMG] +[IMG]https://img.shields.io/badge/Release-5.0.7-blue.svg[/IMG] [IMG]https://img.shields.io/badge/Minecraft-1.5%20--%201.21.4-blue.svg[/IMG] [IMG]https://img.shields.io/badge/Java-8+-blue.svg[/IMG] [URL='https://github.com/NEZNAMY/TAB'][IMG]https://img.shields.io/badge/GitHub-Source%20code-yellow.svg[/IMG][/URL] diff --git a/.github/description/description_markdown.md b/.github/description/description_markdown.md index 6bc744b53..66f74dd81 100644 --- a/.github/description/description_markdown.md +++ b/.github/description/description_markdown.md @@ -4,7 +4,7 @@ The compact configuration allows you to get the plugin to work the way you want The default configuration already contains useful values and examples to give you a better understanding and get you started quickly with instant results. The extensive [wiki](https://github.com/NEZNAMY/TAB/wiki) answers any of your questions. -![https://img.shields.io/badge/Release-5.0.5-blue.svg](https://img.shields.io/badge/Release-5.0.5-blue.svg) +![https://img.shields.io/badge/Release-5.0.7-blue.svg](https://img.shields.io/badge/Release-5.0.7-blue.svg) ![https://img.shields.io/badge/Minecraft-1.5%20--%201.21.4-blue.svg](https://img.shields.io/badge/Minecraft-1.5%20--%201.21.4-blue.svg) ![https://img.shields.io/badge/Java-8+-blue.svg](https://img.shields.io/badge/Java-8+-blue.svg) [![https://img.shields.io/badge/GitHub-Source%20code-yellow.svg](https://img.shields.io/badge/GitHub-Source%20code-yellow.svg)](https://github.com/NEZNAMY/TAB) diff --git a/.github/wiki/additional_information.md b/.github/wiki/additional_information.md index 2b498d0d4..adce3c82a 100644 --- a/.github/wiki/additional_information.md +++ b/.github/wiki/additional_information.md @@ -28,7 +28,7 @@ Permission `tab.seevanished` allows players to: For a player to be detected, player has to have `vanished` metadata flag set to `true`. Most, (if not all) vanish plugins do this, including, but not limited to CMI, Essentials, SuperVanish, PremiumVanish and probably more. -If TAB is installed on BungeeCord, +If TAB is installed on proxy, [Bridge](https://github.com/NEZNAMY/TAB/wiki/TAB-Bridge) must be installed on backend servers to forward vanish status to the proxy. @@ -71,10 +71,8 @@ You can check what version the plugin thinks player has by using any of the foll * Set `debug: true` in config and check console messages on player join, it will send a message containing game version ViaVersion API has returned Player game version detection may fail. Here are a few possible scenarios why: -* ViaVersion is installed on BungeeCord - * And TAB on BungeeCord as well - ViaVersion makes BungeeCord API return version of the backend server player is connected to instead of player's actual version - * And TAB is on backend servers - There is no ViaVersion to hook into, therefore, there is no suspicion of player not using server's version and not having a way to verify it -* ViaVersion API returns `-1` - There is currently no known cause when or why this happens. However, when this happens, TAB prints a console warn notifying this has happened. Plugin will assume player is using the same version as the server in such cases. +* ViaVersion is installed on proxy and TAB is on backend servers - There is no ViaVersion to hook into, therefore, there is no suspicion of player not using server's version and not having a way to verify it. +* ViaVersion API returns `-1` - This was an issue in the past and hasn't been reported in years now. When a player's game version is not detected correctly, player's experience will be very limited, see below. @@ -86,7 +84,7 @@ You will not experience all of these, only those that affect the version differe | Change of logic | Negative side effect if version is not detected correctly | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Disabling [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) for 1.7 players | [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) entries being sent into the tablist of the player, breaking it as the layout is not designed support 1.7 | -| use alternate way of sorting [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) entries for 1.19.3 - 1.21.1 as the optimal sorting way cannot be used | [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) entries being out of order for 1.19.3 - 1.21.1
Layout entries appearing in chat complete for <1.19.3 even if they don't have to | +| Use alternate way of sorting [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) entries for 1.19.3 - 1.21.1 as the optimal sorting way cannot be used | [Layout](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Layout) entries being out of order for 1.19.3 - 1.21.1
Layout entries appearing in chat complete for <1.19.3 even if they don't have to | | Show 1.9+ bossbar on 1.8 servers for 1.9+ players using ViaVersion API | No 1.9+ bossbar for 1.9+ players on 1.8 server | | Disabling [Tablist name formatting](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Tablist-name-formatting) for 1.7 and lower due to a 16-character limit total to take advantage of the mechanic where nametags are displayed in tablist, which extends the limit to up to 48 characters (16 prefix, 16 name, 16 suffix) | Trying to fit the entire formatting into 16 characters, resulting in massive cutting and nametag feature not working | | Play around <1.13 limitations of [Scoreboard](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Scoreboard) | Scoreboard lines limited to ~26 characters, even for 1.13+ clients
Scoreboard lines limited to 14 characters for < 1.13 clients | diff --git a/.github/wiki/compatibility.md b/.github/wiki/compatibility.md index 7b2af7959..8b5e54aa1 100644 --- a/.github/wiki/compatibility.md +++ b/.github/wiki/compatibility.md @@ -130,8 +130,8 @@ Sending scoreboard packets (scoreboard-teams, belowname-objective, playerlist-ob * **[Tablisknu](https://forums.skunity.com/resources/tablisknu.727/)** (skript addon) prevents TAB from assigning teams (sorting & nametags). * **SkBee** (skript addon) sends empty scoreboard, causing TAB's to not show sometimes. * **Waterfall**'s `disable_tab_list_rewrite: true` **may** cause tablist to use offline UUIDs while TAB expects online uuids, causing various problems (most notably tablist formatting not working). Checking for this option is not an option either, because tablist rewrite might still be enabled despite being disabled (don't ask how, I have no idea). Set the option to `false` if you are experiencing issues. -* **ViaVersion on BungeeCord and TAB on backend** acts like a client-sided protocol hack, making it impossible for TAB to know player's real version and causing issues related to it, see [Per-version experience](https://github.com/NEZNAMY/TAB/wiki/Additional-information#per-version-experience) for more info. Avoid this combination. Either install ViaVersion on all backend servers instead or install TAB on BungeeCord instead. -* **ViaVersion**'s `hide-scoreboard-numbers` config option makes [Belowname](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Belowname)'s `value` and [Playerlist objective](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Playerlist-Objective)'s `value` not visible for 1.20.3+ clients on <1.20.3 server when enabled. When using this setup, you'll need to keep the option disabled (sadly scoreboard numbers will not be hidden, solving this would require an implementation on ViaVersion's side). +* **ViaVersion on proxy and TAB on backend** acts like a client-sided protocol hack, making it impossible for TAB to know player's real version and causing issues related to it, see [Per-version experience](https://github.com/NEZNAMY/TAB/wiki/Additional-information#per-version-experience) for more info. Avoid this combination. Either install ViaVersion on all backend servers instead or install TAB on the proxy as well. +* **ViaVersion**'s `hide-scoreboard-numbers` and **Nexo**'s `hide_scoreboard_numbers` config options (may apply to ItemsAdder and Oraxen as well) make [Belowname](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Belowname)'s `value` and [Playerlist objective](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Playerlist-Objective)'s `value` not visible for 1.20.3+ clients on <1.20.3 server when enabled. When using this setup, you'll need to keep the option disabled (sadly scoreboard numbers will not be hidden, solving this would require an implementation on ViaVersion's side). * **Custom clients / resource packs** - Unofficially modified minecraft clients often tend to break things. Just Lunar client has tons of bugs that can be reproduced with TAB. Resource packs may also contain modifications you are not aware of, making things not look the way you want them to. If you are experiencing any visual issue and are using a custom client or resource pack, try it with a clean vanilla client. If it works there, it's an issue with the client / resource pack and TAB cannot do anything about it. For example, here are a few bugs in LunarClient / FeatherClient that you may run into when using TAB: * They add their icon to players in tablist, but don't widen the entries. This results in player names overlapping with latency bar. You can avoid this by configuring some spaces in tabsuffix. diff --git a/.github/wiki/developer_api.md b/.github/wiki/developer_api.md index 5bc8dace2..76f98b02c 100644 --- a/.github/wiki/developer_api.md +++ b/.github/wiki/developer_api.md @@ -26,7 +26,7 @@ For Maven users, you can add the API dependency like this: com.github.NEZNAMY TAB-API - 5.0.5 + 5.0.7 provided ``` @@ -40,7 +40,7 @@ repositories { } dependencies { - compileOnly 'com.github.NEZNAMY:TAB-API:5.0.5' + compileOnly 'com.github.NEZNAMY:TAB-API:5.0.7' } ``` @@ -51,7 +51,7 @@ repositories { } dependencies { - compileOnly("com.github.NEZNAMY", "TAB-API", "5.0.5") + compileOnly("com.github.NEZNAMY", "TAB-API", "5.0.7") } ``` diff --git a/.github/wiki/feature_guide_conditional_placeholders.md b/.github/wiki/feature_guide_conditional_placeholders.md index 492443d33..d693110f5 100644 --- a/.github/wiki/feature_guide_conditional_placeholders.md +++ b/.github/wiki/feature_guide_conditional_placeholders.md @@ -25,44 +25,35 @@ They have 2 main uses in the plugin: # Condition types ## Number comparations -`>=`: greater than or equal to -Example: `%ping%>=100` will pass if the player's ping is greater than or equal to `100`. - -`>`: greater than -Example: `%ping%>100` will pass if the player's ping is greater than `100`. - -`<=`: less than or equal to -Example: `%ping%<=100` will pass if the player's ping is less than or equal to `100`. - -`<`: less than -Example: `%ping%<100` will pass if the player's ping is less than `100`. +| Operation | Description | Example | +|-------------------|---------------------|---------| +| `>=` | Greater than or equal to | `%ping%>=100` will pass if the player's ping is greater than or equal to `100` | +| `>` | Greater than | `%ping%>100` will pass if the player's ping is greater than `100` | +| `<=` | Less than or equal to | `%ping%<=100` will pass if the player's ping is less than or equal to `100` | +| `<` | Less than | `%ping%<100` will pass if the player's ping is less than `100` | ## Text operations -`=`: equal to (must match exactly) -Example: `%world%=world` will pass if player is in world `world`. - -`!=`: not equal to (opposite of the above) -Example: `%world%!=world` will pass if player is in any world except `world`. - -**Note 1**: For `=` and `!=` you can check for empty output of a placeholder using `%my_placeholder%=` and `%my_placeholder%!=`. - -`<-`: contains (left side for full text, right side text to contain) -Example: `%world%<-lobby-` will pass if player is in any world that contains `lobby-` (such as `lobby-1` etc.). - -`|-`: starts with (left side for full text, right side text to start with) -Example: `%world%|-lobby-` will pass if player is in any world that starts with `lobby-` (such as `lobby-1` etc.). - -`-|`: ends with (left side for full text, right side text to end with) -Example: `%world%-|nether` will pass if player is in any world that ends with `nether` (such as `world_nether` etc.). - -**Note 2**: For string operators, the text must match placeholder's output exactly, including color codes. +| Operation | Description | Example | +|-------------------|---------------------|---------| +| `=` | Equal to | `%world%=world` will pass if player is in world `world` | +| `!=` | Not equal to | `%world%!=world` will pass if player is in any world except `world` | +| `<-` | Contains (left side for full text, right side text to contain) | `%world%<-lobby-` will pass if player is in any world that contains `lobby-` (such as `lobby-1` etc.) | +| `\|-` | Starts with (left side for full text, right side text to start with) | `%world%\|-lobby-` will pass if player is in any world that starts with `lobby-` (such as `lobby-1` etc.) | +| `-\|` | Ends with (left side for full text, right side text to end with) | `%world%-\|nether` will pass if player is in any world that ends with `nether` (such as `world_nether` etc.) | + +> [!NOTE] +> For `=` and `!=` you can check for empty output of a placeholder using `%my_placeholder%=` and `%my_placeholder%!=`. + +> [!NOTE] +> For string operations, the text must match placeholder's output exactly, including color codes. If you are using [Placeholder output replacements](https://github.com/NEZNAMY/TAB/wiki/Feature-guide:-Placeholder-output-replacements), condition must contain the altered output. To see the exact output of a placeholder including color codes, use `/tab parse `. ## Permission -`permission:`: permission requirement -Example: `permission:my.permission` will pass if player has `my.permission` permission. +| Operation | Description | Example | +|-------------------|---------------------|---------| +| `permission:` | Permission requirement | `permission:my.permission` will pass if player has `my.permission` permission | # Multiple condition requirements Each condition has a `conditions` parameter, which a list of conditions. If you define more than 1 condition, you must specify the condition type. @@ -166,7 +157,7 @@ Refresh intervals of conditions are not directly configurable. They are based on placeholders used inside (subconditions, yes/no values). Permission checks count as 1000ms. To configure refresh intervals of placeholders, -check out the [Optimization guide](https://github.com/NEZNAMY/TAB/wiki/Optimizing-the-plugin#2---placeholder-refresh-intervals). +check out the [Optimization guide](https://github.com/NEZNAMY/TAB/wiki/Optimizing-the-plugin#2---all-platforms-placeholder-refresh-intervals). # Examples ## Example 1 - Chaining conditional placeholders diff --git a/.github/wiki/feature_guide_header_footer.md b/.github/wiki/feature_guide_header_footer.md index 232d68282..445de5b13 100644 --- a/.github/wiki/feature_guide_header_footer.md +++ b/.github/wiki/feature_guide_header_footer.md @@ -67,7 +67,7 @@ header-footer: > [!NOTE] > To make per-world work on proxy installation, -> install the [TAB-Bridge](https://www.mc-market.org/resources/21641) plugin on your backend servers. +> install the [TAB-Bridge](https://github.com/NEZNAMY/TAB/wiki/TAB-Bridge) plugin on your backend servers. ## Per-group / per-player **groups.yml** diff --git a/.github/wiki/feature_guide_nametags.md b/.github/wiki/feature_guide_nametags.md index 332b2cbfe..31e5964d6 100644 --- a/.github/wiki/feature_guide_nametags.md +++ b/.github/wiki/feature_guide_nametags.md @@ -14,6 +14,7 @@ * [Additional note 3 - Changing name itself](#additional-note-3---changing-name-itself) * [Additional note 4 - F1 view](#additional-note-4---f1-view) * [Additional note 5 - Transparent players](#additional-note-5---transparent-players) + * [Additional note 6 - Vanish hook](#additional-note-6---vanish-hook) * [API](#api) * [Changing prefix and suffix](#changing-prefix-and-suffix) * [Collision](#collision) @@ -138,7 +139,7 @@ _DEFAULT_: ``` # Limitations -* [1.5 - 1.12.2] Prefix/suffix length is limited to 16 characters (including color codes). +* [1.5 - 1.12.2] Prefix/suffix length is limited to 16 characters (including color codes). Any characters beyond that will be cut to prevent players getting disconnected. * [1.13+] The name can only have one code. That is either color or magic code (such as &4 or &l), but not both. * The name cannot be effectively changed and the plugin doesn't offer it. * Name does not support RGB codes. Any used RGB colors will be rounded to the nearest legacy code. @@ -183,6 +184,13 @@ scoreboard-teams: ``` In config.yml. Keep in mind, you'll not be able to use any team features if you do so. +# Additional note 6 - Vanish hook +When a player is [vanished](https://github.com/NEZNAMY/TAB/wiki/Additional-information#vanish-detection), their team is unregistered for all other players who do **not** have `tab.seevanished` permission. + +The purpose of this is to avoid players figuring out a staff member is still online but just vanished by "checking" registered teams and their members. The easiest way of "exploiting" this is to have a 3rd party client spawn a player entity with name of a chosen player (staff member) and seeing if their name is formatted (= team is registered = player is online) or not (offline). + +For this reason, make sure you give all of your staff members who can see vanished players the `tab.seevanished` permission, otherwise the vanished player will appear on top of the tablist (players without team are above players with team) and their nametag will not be formatted. + # API *To get started with the API, see [Developer API](https://github.com/NEZNAMY/TAB/wiki/Developer-API) page.* @@ -192,7 +200,8 @@ To access this feature, you'll need to obtain `NameTagManager` instance. Get it To set the values for the respective formatting, use the following: * `NameTagManager#setPrefix(TabPlayer, String)` * `NameTagManager#setSuffix(TabPlayer, String)` - To reset them, set values to `null`. + +To reset them, set values to `null`. To get custom values previously set using the API (they will return `null` if no custom value is set): * `NameTagManager#getCustomPrefix(TabPlayer)` @@ -209,8 +218,8 @@ To get the original value set by the plugin based on configuration: > use [commands](https://github.com/NEZNAMY/TAB/wiki/Commands-&-Permissions#tab-playergroupplayeruuid-name-property-value-options). ## Collision -* `NameTagManager#getCollisionRule(TabPlayer)` - Returns forced collision rule using the API, `null` if no value was forced and player follows the configuration. * `NameTagManager#setCollisionRule(TabPlayer, Boolean)` - Forces collision rule to the player. Use `null` to reset value and make it follow configuration again. +* `NameTagManager#getCollisionRule(TabPlayer)` - Returns forced collision rule using the API, `null` if no value was forced and player follows the configuration. ## Manipulating visibility * `NameTagManager#hideNametag(TabPlayer)` - Hides player's nametag from all players diff --git a/.github/wiki/feature_requests.md b/.github/wiki/feature_requests.md new file mode 100644 index 000000000..dbb6d28c6 --- /dev/null +++ b/.github/wiki/feature_requests.md @@ -0,0 +1,9 @@ +# About +A collection of things people have requested that I might look into implementing when I get extremely bored sometime next decade. +* Less than 4 columns in Layout +* `invisible-nametags` supporting conditions like `enable-collision` does +* Using ViaVersion API to send 1.20.3+ scoreboard content on <1.20.3 server. +* Relational placeholder support in sorting +* Conditional header/footer +* Relational conditions for layout player groups +* Improve bossbar announce placeholder(s) \ No newline at end of file diff --git a/.github/wiki/frequently_asked_questions.md b/.github/wiki/frequently_asked_questions.md index a603905d0..bc3fbe19c 100644 --- a/.github/wiki/frequently_asked_questions.md +++ b/.github/wiki/frequently_asked_questions.md @@ -75,7 +75,7 @@ Most common reasons for a placeholder to not work include: * Using % symbol by itself, which breaks placeholder starts and ends and therefore breaks all placeholders after it (use %% to display the symbol) * Trying to use a PlaceholderAPI placeholder without downloading its expansion or not having PlaceholderAPI installed at all * Trying to use [TAB's internal bukkit-only placeholders](https://github.com/NEZNAMY/TAB/wiki/Placeholders#bukkit-only) on BungeeCord -* Trying to use [PlaceholderAPI placeholders on BungeeCord](https://github.com/NEZNAMY/TAB/wiki/How-to-set-up-PlaceholderAPI-support-on-bungeecord) without installing [bridge plugin](https://www.mc-market.org/resources/20631/) +* Trying to use [PlaceholderAPI placeholders on BungeeCord](https://github.com/NEZNAMY/TAB/wiki/How-to-set-up-PlaceholderAPI-support-on-bungeecord) without installing [bridge plugin](https://github.com/NEZNAMY/TAB/wiki/TAB-Bridge) The full list of reasons can be found on the [Placeholders](https://github.com/NEZNAMY/TAB/wiki/Placeholders#placeholder-is-not-working) page. diff --git a/.github/wiki/home.md b/.github/wiki/home.md index 2791e2016..78ce0c1c1 100644 --- a/.github/wiki/home.md +++ b/.github/wiki/home.md @@ -1,5 +1,5 @@ # About the wiki -The wiki explains the functionality of the plugin as of version **5.0.5**. +The wiki explains the functionality of the plugin as of version **5.0.7**. If your config looks different or is missing some features, you are using an old version of the plugin. To get the latest version, check [releases](https://github.com/NEZNAMY/TAB/releases/). Wiki for older plugin versions is not available.