Sorted Tablist

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

ShaneBee

Supporter +
Addon Developer
Sep 7, 2017
2,248
241
73
Vancouver, Canada
Okay so I got this working, but if Im not mistaken it will not work with scoreboards like Skellett, since Skellett I believe overrides the teams
This requires Skript Mirror

Custom Syntaxes:
(This can be placed at the top of your script or in another script that loads before the one that is using it)

code_language.skript:
#! register a new team (group) for your tablist, alphabically sorted in your tablist !#
effect [(1¦un)]register team %string%:
    trigger:
        set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
        if parse mark is 1:
            {_score}.getTeam(expression-1).unregister()
        else:
            {_score}.registerNewTeam(expression-1)

#! Get/set the prefix/suffix of your tablist groups !#
#! I added [custom] here as it may not work well with Skellett !#
expression [custom] (1¦prefix|2¦suffix) of team %string%:
    get:
        if parse mark is 1:
            set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
            return {_score}.getTeam(expression-1).getPrefix()
        else if parse mark is 2:
            set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
            return {_score}.getTeam(expression-1).getSuffix()
    set:
        if parse mark is 1:
            set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
            {_score}.getTeam(expression-1).setPrefix(change value)
        else if parse mark is 2:
            set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
            {_score}.getTeam(expression-1).setSuffix(change value)

#! get/set the team of a player !#
expression team of %player%:
    get:
        return expression-1.getScoreboard().getPlayerTeam(expression-1).getName()
    set:
        set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
        {_score}.getTeam(change value).addPlayer(expression-1)

#! Checks if a team is already registered !#
condition team %string% (1¦is set|2¦(is not|isn't) set):
    check:
        set {_score} to server.getServer().getScoreboardManager().getMainScoreboard()
        if {_score}.getTeam(expression-1):
            if parse mark is 1:
                continue
        else:
            if parse mark is 2:
                continue

Example of how I am using it:
code_language.skript:
on load:
    if team "A-OWNER" isn't set:
        register team "A-OWNER"
        set prefix of team "A-OWNER" to "&9OWNER "
    if team "B-ADMIN" isn't set:
        register team "B-ADMIN"
        set prefix of team "B-ADMIN" to "&cADMIN "
    if team "C-MOD" isn't set:
        register team "C-MOD"
        set prefix of team "C-MOD" to "&dMOD "
    if team "D-PLAYER" isn't set:
        register team "D-PLAYER"
        set prefix of team "D-PLAYER" to "&7PLAYER "

on join:
    if player has permission "rank.owner":
        set team of player to "A-OWNER"
    else if player has permission "rank.admin":
        set team of player to "B-ADMIN"
    else if player has permission "rank.mod":
        set team of player to "C-MOD"
    else:
        set team of player to "D-PLAYER"
 
Last edited:
Hi there, nice Skript, pretty much what i was looking for.
But it doesnt work on 1.16 anymore and i dont know much about SkMirror / SKReflect to fix it myself.
Here is the error:

Code:
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (A-OWNER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@5d376828 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (B-ADMIN (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@409fbad4 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (C-MOD (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@12514d29 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (D-PLAYER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@6553706 (CraftTeam), which could not be converted to Boolean
 
Hi there, nice Skript, pretty much what i was looking for.
But it doesnt work on 1.16 anymore and i dont know much about SkMirror / SKReflect to fix it myself.
Here is the error:

Code:
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (A-OWNER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@5d376828 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (B-ADMIN (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@409fbad4 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (C-MOD (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@12514d29 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (D-PLAYER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@6553706 (CraftTeam), which could not be converted to Boolean
Odd, it seems to work for me - I'm using a different system, but I can get the scoreboard (I use the main scoreboard) and can register a new team with a string. Like so:

Code:
set {_score} to Bukkit.getServer().getScoreboardManager().getMainScoreboard()
{_score}.registerNewTeam("team name")
# modifications here
 
Hi there, nice Skript, pretty much what i was looking for.
But it doesnt work on 1.16 anymore and i dont know much about SkMirror / SKReflect to fix it myself.
Here is the error:

Code:
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (A-OWNER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@5d376828 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (B-ADMIN (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@409fbad4 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (C-MOD (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@12514d29 (CraftTeam), which could not be converted to Boolean
[12:10:52 WARN]: [Skript] method CraftScoreboard#registerNewTeam called with (D-PLAYER (String)) returned org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftTeam@6553706 (CraftTeam), which could not be converted to Boolean
I have never once seen an error like this.... are you using skript-mirror or reflect?
If skript-mirror ... which version?
If lower than 2.0.0, I recommend upgrading or just switching over to skript-reflect.
 
hey i have the server version 1.16.5 and the plugins you need on the latest version script, skbee and script-reflect there are no errors in the console but the players don't get a prefix in the tablist