Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- options:
- prefix: &3&lTab &8>>
- function tabPlaceholderParse(triggers: text, from: string, replacers: text) :: string:
- set {_triggers::*} to split {_triggers} by ", "
- set {_replacers::*} to split {_replacers} by ", "
- loop (size of {_triggers::*}) times:
- replace {_triggers::%loop-num%} with {_replacers::%loop-num%} in {_from}
- return {_from}
- #Getters
- function getTabName(player: string, world: world) :: strings:
- if file "plugins/Tab/Names.yml" exists:
- if yml path "%{_player}%.%{_world}%.name" in file "plugins/Tab/Names.yml" exists:
- set {_return::*} to yml list "%{_player}%.%{_world}%.name" of file "plugins/Tab/Names.yml"
- return {_return::*}
- function getTabUpdate(type: string, world: world, player: string = "") :: timespan:
- if {_type} = "name":
- if file "plugins/Tab/Names.yml" exists:
- if yml path "%{_player}%.%{_world}%.name" in file "plugins/Tab/%{_world}%.yml" exists:
- set {_return} to yml value "%{_player}%.%{_world}%.updateTime" of file "plugins/Tab/Names.yml"
- return {_return} parsed as timespan
- else:
- if file "plugins/Tab/%{_world}%.yml" exists:
- if yml path "updateTime" in file "plugins/Tab/%{_world}%.yml" exists:
- set {_return} to yml value "updateTime" of file "plugins/Tab/%{_world}%.yml"
- return {_return} parsed as timespan
- function getTabFormat(world: world) :: string:
- if file "plugins/Tab/%{_world}%.yml" exists:
- if yml path "format" in file "plugins/Tab/%{_world}%.yml" exists:
- set {_return} to yml value "format" of file "plugins/Tab/%{_world}%.yml"
- replace "ァ" with "&" in {_return}
- return {_return}
- function getTabHeader(world: world) :: strings:
- if file "plugins/Tab/%{_world}%.yml" exists:
- if yml path "animations.Header" in file "plugins/Tab/%{_world}%.yml" exists:
- set {_return::*} to yml list "animations.Header" of file "plugins/Tab/%{_world}%.yml"
- loop {_return::*}:
- replace "ァ" with "&" in {_return::%loop-index%}
- return {_return::*}
- function getTabFooter(world: world) :: strings:
- if file "plugins/Tab/%{_world}%.yml" exists:
- if yml path "animations.Footer" in file "plugins/Tab/%{_world}%.yml" exists:
- set {_return::*} to yml list "animations.Footer" of file "plugins/Tab/%{_world}%.yml"
- loop {_return::*}:
- replace "ァ" with "&" in {_return::%loop-index%}
- return {_return::*}
- function packetJson(text: text) :: jsonobject:
- set {_t::*} to {_text} split by ""
- loop {_t::*}:
- if loop-value = """":
- set {_t::%loop-index%} to "\"""
- else if loop-value = "\":
- if {_t::%loop-index parsed as int + 1%} != "n":
- set {_t::%loop-index%} to "\\"
- set {_text} to join {_t::*} by ""
- if {_json} isn't set:
- set {_json} to "{""text"":""%{_text}%"""
- else:
- set {_json} to "%{_json}%,{""text"":""%{_text}%"""
- return json of string "{""extra"":[%{_json}%}],""text"":""""}"
- #Setters
- function setTabHandF(header: text, footer: text, player: player):
- set {_packet} to new play_server_player_list_header_footer packet
- set "chatcomponent" pjson 0 of {_packet} to packetJson({_header})
- set "chatcomponent" pjson 1 of {_packet} to packetJson({_footer})
- send {_player} packet {_packet}
- function setTabName(player: string, world: world):
- set {_tab::player} to {_player} parsed as player
- set {_tab::name::frame::*} to getTabName({_player}, {_world})
- set {_tab::update} to getTabUpdate("name", {_world}, {_player})
- set {_tab::name::next} to 1
- while {_tab::player} is in {_world}:
- if {_tab::player} is online:
- set {_tab::format} to getTabFormat({_world})
- set {_tab::format} to tabPlaceholderParse("[name], [world], [prefix], [suffix], [displayname]", {_tab::format}, "%{_tab::name::frame::%{_tab::name::next}%}%, %{_world}%, %{_tab::player}'s prefix%, %{_tab::player}'s suffix%, %{_tab::player}'s display name%")
- set {_tab::player}'s tablist name to colored {_tab::format}
- if {_tab::name::next} = size of {_tab::name::frame::*}:
- set {_tab::name::next} to 1
- add 1 to {_tab::name::next}
- else:
- exit loop
- wait {_tab::update}
- function setTab(player: string, world: world):
- set {_tab::player} to {_player} parsed as player
- set {_tab::header::frame::*} to getTabHeader({_world})
- set {_tab::footer::frame::*} to getTabFooter({_world})
- set {_tab::update} to getTabUpdate("tablist", {_world})
- set {_tab::header::next} to 1
- set {_tab::footer::next} to 1
- while {_tab::player} is in {_world}:
- if {_tab::player} is online:
- set {_tab::header::frame::%{_tab::header::next}%} to colored tabPlaceholderParse("[world], [worldonline], [online], [prefix], [suffix], [name], [displayname], [nl]", {_tab::header::frame::%{_tab::header::next}%}, "%{_world}%, %size of players in {_world}%, %size of players%, %{_tab::player}'s prefix%, %{_tab::player}'s suffix%, %{_tab::player}%, %{_tab::player}'s display name%, \\\n")
- set {_tab::footer::frame::%{_tab::footer::next}%} to colored tabPlaceholderParse("[world], [worldonline], [online], [prefix], [suffix], [name], [displayname], [nl]", {_tab::footer::frame::%{_tab::footer::next}%}, "%{_world}%, %size of players in {_world}%, %size of players%, %{_tab::player}'s prefix%, %{_tab::player}'s suffix%, %{_tab::player}%, %{_tab::player}'s display name%, \\\n")
- setTabHandF("%{_tab::header::frame::%{_tab::header::next}%}%", "%{_tab::footer::frame::%{_tab::footer::next}%}%", {_tab::player})
- if {_tab::header::next} = size of {_tab::header::frame::*}:
- set {_tab::header::frame::*} to getTabHeader({_world})
- set {_tab::header::next} to 1
- else:
- add 1 to {_tab::header::next}
- if {_tab::footer::next} = size of {_tab::footer::frame::*}:
- set {_tab::footer::frame::*} to getTabFooter({_world})
- set {_tab::footer::next} to 1
- else:
- add 1 to {_tab::footer::next}
- else:
- exit loop
- wait {_tab::update}
- on load:
- if dir "plugins/Tab" exists:
- stop
- create dir "plugins/Tab"
- if file "plugins/Tab/example.yml" doesn't exist:
- create file "plugins/Tab/example.yml"
- set {_configLines::*} to "updateTime: 3 ticks", "format: '[prefix]&e[name][suffix]'", "", "animations:", " header:", " - '&6&lT&e&lab'", " - '&e&lT&6&la&e&lb'", " - '&e&lTa&6&lb'", " - '&e&lT&6&la&e&lb'", " - '&6&lT&e&lab'", " - '&e&lTab'", " - '&5&lTab'", " - '&f&lTab'", " - '&a&lTab'", " - '&d&lTab'", " - '&c&lTab'", " Footer:", " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &e[name]&7!'", " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &5[name]&7!'", " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &f[name]&7!'", " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &a[name]&7!'", " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &d[name]&7!'" and " - '&7Players&8: &b[online][nl][nl]&3Enjoy your stay in the server &c[name]&7!'"
- set "plugins/Tab/example.yml"'s file contents to {_configLines::*}
- on join:
- wait 3 ticks
- if file "plugins/Tab/%world%.yml" exists:
- setTab(player's uuid, event-world)
- if yml path "%player's uuid%.%world%.name" in file "plugins/Tab/Names.yml" exists:
- setTabName(player's uuid, event-world)
- on teleport:
- if event-world != future world:
- set {_world::future} to future world
- wait 3 ticks
- setTab(player's uuid, {_world::future})
- setTabName(player's uuid, {_world::future})
- command /tab <text="help"> [<offlineplayer=%sender%>] [<text>]:
- permission: tab.use
- trigger:
- if arg-1 is "add":
- if arg-2 and arg-3 are set:
- if sender has permission "tab.cmd.add":
- if arg-2 has played before:
- if yml path "%arg-2's uuid%.%event-world%" in file "plugins/Tab/Names.yml" doesn't exist:
- set yml value "%arg-2's uuid%.%event-world%.updateTime" of file "plugins/Tab/Names.yml" to "3 ticks"
- set yml value "%arg-2's uuid%.%event-world%.realName" of file "plugins/Tab/Names.yml" to "%arg-2%"
- add arg-3 to yml list "%arg-2's uuid%.%event-world%.name" of file "plugins/Tab/Names.yml"
- send "{@prefix} &aSuccesfully added the frame &e""%colored arg-3%&e"" &ato &6%arg-2% &ain world &6%world%&7."
- if arg-2 is online:
- send "{@prefix} &aRelog for see the changes&7."
- else:
- send "{@prefix} &cThat player doesn't played never on this server&7."
- else:
- send "{@prefix} &cYou don't have permission for this&7."
- else:
- send "{@prefix} &cCorrect usage&7: /&ctab set &7<&cplayer&7> <&cname&7>"
- else if arg-1 is "remove":
- if arg-2 is set:
- if sender has permission "tab.cmd.remove":
- if yml path "%arg-2's uuid%.%event-world%.name" in file "plugins/Tab/Names.yml" exists:
- if arg-2 has played before:
- set {_tab::name::frame::*} to getTabName(arg-2's uuid, world)
- remove {_tab::name::frame::%arg-3%} from yml list "%arg-2's uuid%.%event-world%.Name" of file "plugins/Tab/Names.yml"
- send "{@prefix} &aSuccessfully removed the frame &e""%colored {_tab::name::frame::%arg-3%}%&e"" &afrom the name of &6%arg-2%&7."
- if arg-2 is online:
- send "{@prefix} &aRelog for see the changes&7."
- else:
- send "{@prefix} &cThat player doesn't played never on this server&7."
- else:
- send "{@prefix} &cThat player doesn't have a custom name&7."
- else:
- send "{@prefix} &cYou don't have permission for this&7."
- else:
- send "{@prefix} &cCorrect usage&7: /&ctab remove &7<&cplayer&7>"
- else if arg-1 is "help":
- send "&a&m------------------------&r &e&lTab &a&m------------------------", "", "&7/&etab add &7<&eplayer&7> <&eframe&7>", "", "&eDescription&7:" and "&5- &c&oAdd a frame to the specified player custom name&7."
- sender is op or console:
- send "" and "&ePermission&7: &c&otab.cmd.add"
- send "", "&7/&etab remove &7<&eplayer&7> &7[&eframe number&7]", "", "&eDescription&7:", "&5- &c&oRemove the name of the specified player from the tablist&7&o.", "&5- &c&oremove a specified frame from the custom name of the specified player too&7&o." and "&5- &7&o(&c&oDon&7&o'&c&ot remove the player from the tablist&7&o)"
- sender is op or console:
- send "" and "&ePermission&7: &c&otab.cmd.remove"
- send "" and "&a&m-----------------------------------------------------"
- else:
- send "{@prefix} &cCorrect usage&7: /&ctab &7<&cset&7/&cremove&7/&chelp&7>"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement