on load: if plugin "skript-reflect" and "skript-yaml" and "Vault" is enabled: TlmConfigGenerator() send "&e&lTABLISTMANAGER &eWas loaded correctly &8(&cNO ERRORS&8).%nl%&a&lTABLISTMANAGER WIKI: &ehttps://jacobjoergensen.gitbook.io/tablistmanager/%nl%&a&lTABLISTMANAGER REPORT BUGS & IDEAS: &ehttps://github.com/JacobJoergensen/TablistManager/issues" to console else: send "&c&lADDON CHECKER &7You need the following Skript addons to run TablistManager: Skript-Reflect, Skript-Yaml and Vault" to console plural expression [get] (version) [(url)] %string%: return type: strings get: set {_link} to try new class "java.io.BufferedReader"(try new class "java.io.InputStreamReader"(try new class "java.net.URL"(expr-1).openStream())) set {_q::*} to ...try {_link}.lines() try {_link}.close() return {_q::*} on join: if player is operator: if yaml value "Settings.Server.Update_Checker" of "config" is true: if "%get version "https://raw.githubusercontent.com/JacobJoergensen/TablistManager/main/version.txt"%" is not "2.1": send "&c&lUPDATE CHECKER &7You are running an old version of TablistManager &8(&cCurrent version: &c2.1&8) - (&aLatest version: &a%get version "https://raw.githubusercontent.com/JacobJoergensen/TablistManager/main/version.txt"%&8) %nl% &f&nDownload latest version%nl%" TlmReset(player) on gamemode change: if yaml value "Settings.Player.Spectator_Hide" of "config" is true: hide player from all players if player's gamemode is spectator reveal player to all players if player's gamemode is not spectator # CONFIG GENERATOR function TlmConfigGenerator(): load yaml "plugins/TablistManager/Config.yml" as "config" if yaml path "Content.Header" in "config" exists: set yaml value "Settings.Server.Server_Prefix" of "config" to yaml value "Settings.Server_Prefix" of "config" set yaml value "Settings.Server.Update_Checker" of "config" to yaml value "Settings.Update_Checker" of "config" set yaml value "Settings.Server.Admin_Permission" of "config" to yaml value "Settings.Admin_Permission" of "config" set yaml value "Settings.Server.Tps_Performance_Value" of "config" to 12 set yaml value "Settings.Server.Update_Time" of "config" to yaml value "Settings.Update_Time" of "config" set yaml value "Settings.Player.Prefix" of "config" to yaml value "Settings.Prefix" of "config" set yaml value "Settings.Player.Suffix" of "config" to yaml value "Settings.Suffix" of "config" set yaml value "Settings.Player.Default_Tabname_Color" of "config" to "&7" set yaml value "Settings.Player.Spectator_Hide" of "config" to true set yaml value "Blacklisted.Enabled" of "config" to false set yaml list "Blacklisted.Worlds" of "config" to "test-world" and "blacklisted-world" set yaml value "Tablist.Header" of "config" to yaml value "Content.Header" of "config" set yaml value "Tablist.Footer" of "config" to yaml value "Content.Footer" of "config" delete yaml value "Settings.Server_Prefix" of "config" delete yaml value "Settings.Update_Checker" of "config" delete yaml value "Settings.Admin_Permission" of "config" delete yaml value "Settings.Prefix" of "config" delete yaml value "Settings.Suffix" of "config" delete yaml value "Settings.Update_Time" of "config" delete yaml value "Content.Header" of "config" delete yaml value "Content.Footer" of "config" delete yaml value "Content" of "config" save yaml "config" send "&4&lTABLISTMANAGER &eConverted old Config.yml to the new Config.yml format!" to console if yaml path "Tablist.Enabled" in "config" does not exist: set yaml value "Tablist.Enabled" of "config" to true save yaml "config" send "&4&lTABLISTMANAGER &eUpdated your config to match the latest change!" to console if yaml "config" is empty: set yaml value "Settings.Server.Server_Prefix" of "config" to "&6&lSERVER" set yaml value "Settings.Server.Update_Checker" of "config" to true set yaml value "Settings.Server.Admin_Permission" of "config" to "tablistmanager.admin" set yaml value "Settings.Server.Tps_Performance_Value" of "config" to 12 set yaml value "Settings.Server.Update_Time" of "config" to 5 set yaml value "Settings.Player.Prefix" of "config" to false set yaml value "Settings.Player.Suffix" of "config" to false set yaml value "Settings.Player.Default_Tabname_Color" of "config" to "&7" set yaml value "Settings.Player.Spectator_Hide" of "config" to true set yaml value "Blacklisted.Enabled" of "config" to false set yaml list "Blacklisted.Worlds" of "config" to "test-world" and "blacklisted-world" set yaml value "Tablist.Enabled" of "config" to true set yaml value "Tablist.Header" of "config" to "&d&lWelcome To My Server {newline} &c&oVisit the Config.yml to edit this!{newline}" set yaml value "Tablist.Footer" of "config" to "{nl}&e&lPlayers: &a{OnlinePlayers}/{MaxPlayers}, &7&oHello {player} {nl} &fTps: {Tps} &8| &fReal Time: {realtime} &r" save yaml "config" send "&4&lTABLISTMANAGER &eA new Config.yml was created!" to console # TABLIST HANDLER function TlmHandler(p: player, w: world): if {_p} does not have metadata value "tablist": while {_p} is online: set metadata value "tablist" of {_p} to true TlmConfigGenerator() if tps is bigger than "%yaml value "Settings.Server.Tps_Performance_Value" of "config"%" parsed as number: wait "%yaml value "Settings.Server.Update_Time" of "config"% seconds" parsed as timespan if yaml value "Tablist.Enabled" of "config" is false: set {_access} to false TlmReset({_p}) if yaml value "Blacklisted.Enabled" of "config" is true: loop yaml list "Blacklisted.Worlds" of "config": if "%loop-val%" parsed as world = {_w}: set {_access} to false TlmReset({_p}) if {_access} is not false: set all players' tab list header to TlmPlaceholders("%yaml value "Tablist.Header" of "config"%", {_p}) set all players' tab list footer to TlmPlaceholders("%yaml value "Tablist.Footer" of "config"%", {_p}) load yaml "plugins/TablistManager/Players.yml" as "players" if yaml value "%uuid of {_p}%.tabname" of "players" is not set: set yaml value "%uuid of {_p}%.tabname" of "players" to "%yaml value "Settings.Player.Default_Tabname_Color" of "config"%%{_p}%" save yaml "players" set {_prefix} to "%{_p}'s prefix% " if yaml value "Settings.Player.Prefix" of "config" is true set {_prefix} to "" if yaml value "Settings.Player.Prefix" of "config" is false set {_suffix} to " %{_p}'s suffix%" if yaml value "Settings.Player.Suffix" of "config" is true set {_suffix} to "" if yaml value "Settings.Player.Suffix" of "config" is false set {_tabName} to yaml value "%uuid of {_p}%.tabname" of "players" set {_p}'s tab list name to "%{_prefix}%%{_tabName}%%{_suffix}%" # TABLIST RESETTER function TlmReset(p: player): delete metadata value "tablist" of {_p} reset players' tab list header reset players' tab list footer set {_p}'s tab list name to "&7%{_p}'s displayname%" TlmHandler({_p}, world of {_p}) # PLACEHOLDERS function TlmPlaceholders(s: string, p: player) returns text: replace all "{NewLine}" or "{NL}" or "||" or "&&" with newline in {_s} replace all "{Player}" or "{PlayerName}" with "%{_p}%" in {_s} replace all "{DisplayName}" or "{PlayerDisplayName}" with {_p}'s displayname in {_s} replace all "{Level}" with "%{_p}'s level%" in {_s} replace all "{PlayerHealth}" with "%{_p}'s health%" in {_s} replace all "{MaxPlayerHealth}" with "%{_p}'s max health%" in {_s} replace all "{FoodLevel}" with "%{_p}'s food level%" in {_s} replace all "{ActiveItem}" or "{CurrentItem}" with "%{_p}'s tool%" in {_s} replace all "{Coordinate}" or "{Location}" with "%{_p}'s location%" in {_s} replace all "{Gamemode}" with "%{_p}'s gamemode%" in {_s} replace all "{LightLevel}" with "%light level at {_p}%" in {_s} replace all "{IpAddress}" with ip of {_p} in {_s} replace all "{TimePlayed}" with "%time played of {_p}%" in {_s} replace all "{World}" with "%{_p}'s world%" in {_s} set {_worldTime} to time in world "%{_p}'s world%" replace all "{WorldTime}" or "{WTime}" with "%{_worldTime}%" in {_s} set {_onlinePlayersWorld} to amount of all players in world "%{_p}'s world%" replace all "{OnlinePlayersInWorld}" or "{WorldOnline}" or "{Opiw}" with "%{_onlinePlayersWorld}%" in {_s} replace all "{Online}" or "{OnlinePlayers}" with "%number of all players%" in {_s} replace all "{NonStaffOnline}" with "%number of all players - number of all players where [input has permission "tablistmanager.staff"]%" in {_s} replace all "{StaffOnline}" or "{OnlineStaff}" with "%number of all players where [input has permission "tablistmanager.staff"]%" in {_s} replace all "{MaxPlayers}" with "%max player count%" in {_s} replace all "{BukkitVersion}" with bukkit version in {_s} replace all "{MinecraftVesion}" or "{McVersion}" with minecraft version in {_s} replace all "{Ping}" with "%{_p}'s ping%" in {_s} replace all "{Tps}" with "%tps%" in {_s} replace all "{ServerTime}" or "{RealTime}" with now formatted as "HH:mm:ss" in {_s} replace all "{Date}" with now formatted as "d/M/yyyy" in {_s} replace all "{Motd}" with motd in {_s} replace all "{FreeMemory}" or "{FreeRam}" with "%free memory%" in {_s} replace all "{MaxMemory}" or "{MaxRam}" with "%max memory%" in {_s} replace all "{TotalMemory}" or "{TotalRam}" with "%total memory%" in {_s} parse if plugin "GroupManager" or "LuckPerms" or "PermissionsEx" or "UltraPermissions" is enabled: replace all "{Group}" or "{Rank}" with group of {_p} in {_s} parse if plugin "CMI" or "Essentials" is enabled: replace all "{Money}" or "{Balance}" with "%{_p}'s balance%" in {_s} return {_s} # COMMANDS command /tablistmanager:tablistmanager [] [] []: aliases: tablist, tablistmanager, tablist-manager, tab, tabm, tlm trigger: if player has permission "%yaml value "Settings.Server.Admin_Permission" of "config"%": execute player command "/tablist" if arg 1 is "help" if arg 1 is not set: send formatted "&f%nl%&c▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ &c&lTablistManager&c ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬%nl%&f%nl%&6COMMAND OVERVIEW%nl% &8➳ &e/Tablist &8, &7Shows this message. %nl% &8➳ &e/Tablist update &8<&eplayer&8> &8, &7Update the Tablist manually for a specific player. %nl% &8➳ &e/Tablist toggle &8, &7Toggle the Tablist on and off.%nl% &8➳ &e/Tablist tabname &8<&eplayer&8> &8<&etabname&8> &8, &7Change the tabname of a specific player.%nl% &8➳ &e/Tablist reload &8, &7Reload TablistManager.%nl%&f%nl%&f%nl%&6PLACEHOLDER HOVER LIST &8(&7Hover your mouse over here&8) %nl%&f%nl%&c▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ &c&lTablistManager&c ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬%nl%&f" if arg 1 is "reload": make player execute command "/sk reload TablistManager.sk" send formatted "&f%nl%&c&lTLM RELOAD &8➳ &aTablistManager was reloaded!%nl%&f%nl%&bVisit WIKI &8| &bVisit REPORT BUGS & IDEAS" if arg 1 is "toggle": if yaml value "Tablist.Enabled" of "config" is true: set yaml value "Tablist.Enabled" of "config" to false send action bar "&cTablist was disabled!" else if yaml value "Tablist.Enabled" of "config" is false: set yaml value "Tablist.Enabled" of "config" to true send action bar "&aTablist was enabled!" save yaml "config" set {_player} to arg 2 if arg 2 is set set {_player} to player if arg 2 is not set if arg 1 is "update": TlmReset({_player}) play sound "ENTITY_PLAYER_LEVELUP" with volume 2 to {_player} send title "&4&lTABLIST HELP" with subtitle "&8/&ctablist help" to {_player} for 2 seconds if {_player} has permission "%yaml value "Settings.Admin_Permission" of "config"%" send action bar "&eT&6a&eb&6l&ei&6s&et &6U&ep&6d&ea&6t&ee&6d" to {_player} if arg 1 is "tabname" or "name": if arg 3 is set: set {_value} to arg 3 set {_value} to "%yaml value "Settings.Player.Default_Tabname_Color" of "config"%%{_player}%" if {_value} is "reset" or "default" set yaml value "%uuid of {_player}%.tabname" of "players" to "%{_value}%" save yaml "players" send formatted "&f%nl%&2&lEDIT: &aYou have changed &2%{_player}%'s&a TabName design,%nl% &8(&c&lPREVIEW: %{_value}%&8)%nl%&f" to player play sound "block.anvil.use" with volume 2 to {_player} else: send formatted "%yaml value "Settings.Server.Server_Prefix" of "config"% &cYou must enter your new tab name!" else: send "%yaml value "Settings.Server.Server_Prefix" of "config"% &cSorry you do not have access to this!"