Advertisement
namekuzi

Untitled

Dec 19th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.13 KB | None | 0 0
  1. options:
  2.  
  3. prefix: &3&lTab &8>>
  4.  
  5. function tabPlaceholderParse(triggers: text, from: string, replacers: text) :: string:
  6. set {_triggers::*} to split {_triggers} by ", "
  7. set {_replacers::*} to split {_replacers} by ", "
  8. loop (size of {_triggers::*}) times:
  9. replace {_triggers::%loop-num%} with {_replacers::%loop-num%} in {_from}
  10. return {_from}
  11.  
  12. #Getters
  13. function getTabName(player: string, world: world) :: strings:
  14. if file "plugins/Tab/Names.yml" exists:
  15. if yml path "%{_player}%.%{_world}%.name" in file "plugins/Tab/Names.yml" exists:
  16. set {_return::*} to yml list "%{_player}%.%{_world}%.name" of file "plugins/Tab/Names.yml"
  17. return {_return::*}
  18.  
  19. function getTabUpdate(type: string, world: world, player: string = "") :: timespan:
  20. if {_type} = "name":
  21. if file "plugins/Tab/Names.yml" exists:
  22. if yml path "%{_player}%.%{_world}%.name" in file "plugins/Tab/%{_world}%.yml" exists:
  23. set {_return} to yml value "%{_player}%.%{_world}%.updateTime" of file "plugins/Tab/Names.yml"
  24. return {_return} parsed as timespan
  25. else:
  26. if file "plugins/Tab/%{_world}%.yml" exists:
  27. if yml path "updateTime" in file "plugins/Tab/%{_world}%.yml" exists:
  28. set {_return} to yml value "updateTime" of file "plugins/Tab/%{_world}%.yml"
  29. return {_return} parsed as timespan
  30.  
  31. function getTabFormat(world: world) :: string:
  32. if file "plugins/Tab/%{_world}%.yml" exists:
  33. if yml path "format" in file "plugins/Tab/%{_world}%.yml" exists:
  34. set {_return} to yml value "format" of file "plugins/Tab/%{_world}%.yml"
  35. replace "ァ" with "&" in {_return}
  36. return {_return}
  37.  
  38. function getTabHeader(world: world) :: strings:
  39. if file "plugins/Tab/%{_world}%.yml" exists:
  40. if yml path "animations.Header" in file "plugins/Tab/%{_world}%.yml" exists:
  41. set {_return::*} to yml list "animations.Header" of file "plugins/Tab/%{_world}%.yml"
  42. loop {_return::*}:
  43. replace "ァ" with "&" in {_return::%loop-index%}
  44. return {_return::*}
  45.  
  46. function getTabFooter(world: world) :: strings:
  47. if file "plugins/Tab/%{_world}%.yml" exists:
  48. if yml path "animations.Footer" in file "plugins/Tab/%{_world}%.yml" exists:
  49. set {_return::*} to yml list "animations.Footer" of file "plugins/Tab/%{_world}%.yml"
  50. loop {_return::*}:
  51. replace "ァ" with "&" in {_return::%loop-index%}
  52. return {_return::*}
  53.  
  54. function packetJson(text: text) :: jsonobject:
  55. set {_t::*} to {_text} split by ""
  56. loop {_t::*}:
  57. if loop-value = """":
  58. set {_t::%loop-index%} to "\"""
  59. else if loop-value = "\":
  60. if {_t::%loop-index parsed as int + 1%} != "n":
  61. set {_t::%loop-index%} to "\\"
  62. set {_text} to join {_t::*} by ""
  63. if {_json} isn't set:
  64. set {_json} to "{""text"":""%{_text}%"""
  65. else:
  66. set {_json} to "%{_json}%,{""text"":""%{_text}%"""
  67. return json of string "{""extra"":[%{_json}%}],""text"":""""}"
  68.  
  69. #Setters
  70.  
  71. function setTabHandF(header: text, footer: text, player: player):
  72. set {_packet} to new play_server_player_list_header_footer packet
  73. set "chatcomponent" pjson 0 of {_packet} to packetJson({_header})
  74. set "chatcomponent" pjson 1 of {_packet} to packetJson({_footer})
  75. send {_player} packet {_packet}
  76.  
  77. function setTabName(player: string, world: world):
  78. set {_tab::player} to {_player} parsed as player
  79. set {_tab::name::frame::*} to getTabName({_player}, {_world})
  80. set {_tab::update} to getTabUpdate("name", {_world}, {_player})
  81. set {_tab::name::next} to 1
  82. while {_tab::player} is in {_world}:
  83. if {_tab::player} is online:
  84. set {_tab::format} to getTabFormat({_world})
  85. 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%")
  86. set {_tab::player}'s tablist name to colored {_tab::format}
  87. if {_tab::name::next} = size of {_tab::name::frame::*}:
  88. set {_tab::name::next} to 1
  89. add 1 to {_tab::name::next}
  90. else:
  91. exit loop
  92. wait {_tab::update}
  93.  
  94. function setTab(player: string, world: world):
  95. set {_tab::player} to {_player} parsed as player
  96. set {_tab::header::frame::*} to getTabHeader({_world})
  97. set {_tab::footer::frame::*} to getTabFooter({_world})
  98. set {_tab::update} to getTabUpdate("tablist", {_world})
  99. set {_tab::header::next} to 1
  100. set {_tab::footer::next} to 1
  101. while {_tab::player} is in {_world}:
  102. if {_tab::player} is online:
  103. 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")
  104. 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")
  105. setTabHandF("%{_tab::header::frame::%{_tab::header::next}%}%", "%{_tab::footer::frame::%{_tab::footer::next}%}%", {_tab::player})
  106. if {_tab::header::next} = size of {_tab::header::frame::*}:
  107. set {_tab::header::frame::*} to getTabHeader({_world})
  108. set {_tab::header::next} to 1
  109. else:
  110. add 1 to {_tab::header::next}
  111. if {_tab::footer::next} = size of {_tab::footer::frame::*}:
  112. set {_tab::footer::frame::*} to getTabFooter({_world})
  113. set {_tab::footer::next} to 1
  114. else:
  115. add 1 to {_tab::footer::next}
  116. else:
  117. exit loop
  118. wait {_tab::update}
  119.  
  120. on load:
  121. if dir "plugins/Tab" exists:
  122. stop
  123. create dir "plugins/Tab"
  124. if file "plugins/Tab/example.yml" doesn't exist:
  125. create file "plugins/Tab/example.yml"
  126. 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!'"
  127. set "plugins/Tab/example.yml"'s file contents to {_configLines::*}
  128.  
  129. on join:
  130. wait 3 ticks
  131. if file "plugins/Tab/%world%.yml" exists:
  132. setTab(player's uuid, event-world)
  133. if yml path "%player's uuid%.%world%.name" in file "plugins/Tab/Names.yml" exists:
  134. setTabName(player's uuid, event-world)
  135.  
  136. on teleport:
  137. if event-world != future world:
  138. set {_world::future} to future world
  139. wait 3 ticks
  140. setTab(player's uuid, {_world::future})
  141. setTabName(player's uuid, {_world::future})
  142.  
  143. command /tab <text="help"> [<offlineplayer=%sender%>] [<text>]:
  144. permission: tab.use
  145. trigger:
  146. if arg-1 is "add":
  147. if arg-2 and arg-3 are set:
  148. if sender has permission "tab.cmd.add":
  149. if arg-2 has played before:
  150. if yml path "%arg-2's uuid%.%event-world%" in file "plugins/Tab/Names.yml" doesn't exist:
  151. set yml value "%arg-2's uuid%.%event-world%.updateTime" of file "plugins/Tab/Names.yml" to "3 ticks"
  152. set yml value "%arg-2's uuid%.%event-world%.realName" of file "plugins/Tab/Names.yml" to "%arg-2%"
  153. add arg-3 to yml list "%arg-2's uuid%.%event-world%.name" of file "plugins/Tab/Names.yml"
  154. send "{@prefix} &aSuccesfully added the frame &e""%colored arg-3%&e"" &ato &6%arg-2% &ain world &6%world%&7."
  155. if arg-2 is online:
  156. send "{@prefix} &aRelog for see the changes&7."
  157. else:
  158. send "{@prefix} &cThat player doesn't played never on this server&7."
  159. else:
  160. send "{@prefix} &cYou don't have permission for this&7."
  161. else:
  162. send "{@prefix} &cCorrect usage&7: /&ctab set &7<&cplayer&7> <&cname&7>"
  163. else if arg-1 is "remove":
  164. if arg-2 is set:
  165. if sender has permission "tab.cmd.remove":
  166. if yml path "%arg-2's uuid%.%event-world%.name" in file "plugins/Tab/Names.yml" exists:
  167. if arg-2 has played before:
  168. set {_tab::name::frame::*} to getTabName(arg-2's uuid, world)
  169. remove {_tab::name::frame::%arg-3%} from yml list "%arg-2's uuid%.%event-world%.Name" of file "plugins/Tab/Names.yml"
  170. send "{@prefix} &aSuccessfully removed the frame &e""%colored {_tab::name::frame::%arg-3%}%&e"" &afrom the name of &6%arg-2%&7."
  171. if arg-2 is online:
  172. send "{@prefix} &aRelog for see the changes&7."
  173. else:
  174. send "{@prefix} &cThat player doesn't played never on this server&7."
  175. else:
  176. send "{@prefix} &cThat player doesn't have a custom name&7."
  177. else:
  178. send "{@prefix} &cYou don't have permission for this&7."
  179. else:
  180. send "{@prefix} &cCorrect usage&7: /&ctab remove &7<&cplayer&7>"
  181. else if arg-1 is "help":
  182. 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."
  183. sender is op or console:
  184. send "" and "&ePermission&7: &c&otab.cmd.add"
  185. 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)"
  186. sender is op or console:
  187. send "" and "&ePermission&7: &c&otab.cmd.remove"
  188. send "" and "&a&m-----------------------------------------------------"
  189. else:
  190. send "{@prefix} &cCorrect usage&7: /&ctab &7<&cset&7/&cremove&7/&chelp&7>"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement