akon1248

KitPvP-6

Apr 20th, 2019
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.04 KB | None | 0 0
  1. on load:
  2. delete {kitpvp.duel.receiveduel::*}
  3. delete {kitpvp.duel.latestreceiveduel::*}
  4. delete {kitpvp.duel.sendduel::*}
  5. delete {kitpvp.duel.sendduelmode::*}
  6. delete {kitpvp.duel.waitingaccept::*}
  7. delete {kitpvp.duel.using::*}
  8. delete {kitpvp.duel.matchtime::*}
  9. delete {kitpvp.duel.duelmode::*}
  10. delete {kitpvp.duel.usingarena::*}
  11. delete {kitpvp.duel.opponent::*}
  12. delete {kitpvp.duel.waitingplayers.kitpvp::*}
  13. delete {kitpvp.duel.waitingplayers.builduhc::*}
  14. delete {kitpvp.duel.waitingplayers.potpvp::*}
  15. delete {kitpvp.duel.waitingplayers.archer::*}
  16. delete {kitpvp.duel.waitingplayers.gapple::*}
  17. delete {kitpvp.duel.waitingplayers.combo::*}
  18. loop {kitpvp.duel.arena::*}:
  19. {kitpvp.duel.playerplacedblocks.%loop-value%::*}
  20. {kitpvp.duel.lobby} is not set
  21. set {kitpvp.duel.lobby} to location at 0, 64, 0 in world "world"
  22. function getTimerFromTicks(ticks: number) :: string:
  23. set {_seconds} to floor({_ticks}/20)
  24. set {_minutes} to floor({_seconds}/60)
  25. set {_seconds} to {_seconds}-60*{_minutes}
  26. if {_minutes} < 10:
  27. set {_minutes} to "0%{_minutes}%"
  28. if {_seconds} < 10:
  29. set {_seconds} to "0%{_seconds}%"
  30. return "%{_minutes}%:%{_seconds}%"
  31. function getItemStackFromID(id: number, data: number) :: item:
  32. loop all itemtypes:
  33. id of loop-value is {_id}
  34. set {_value} to loop-value
  35. set durability of {_value} to {_data}
  36. return {_value}
  37. stop loop
  38. command /setduellobby:
  39. permission: kitpvp.admin
  40. permission message: &cYou do not have permission to use this command.
  41. trigger:
  42. set {kitpvp.duel.lobby} to location of block at player
  43. set yaw of {kitpvp.duel.lobby} to yaw of player
  44. set pitch of {kitpvp.duel.lobby} to pitch of player
  45. send "&a1v1の待機場所を&e%{kitpvp.duel.lobby}%&aに設定しました"
  46. command /arena [<text>] [<text>]:
  47. permission: kitpvp.admin
  48. permission message: &cYou do not have permission to use this command.
  49. trigger:
  50. if arg-1 is not set:
  51. send "&cUsage: /arena <addarena|removearena|info|tp1|tp2|bounds> <arena> OR /arena list"
  52. else if arg-1 is not "addarena" or "removearena" or "info" or "tp1" or "tp2" or "bounds" or "list":
  53. send "&cUsage: /arena <addarena|removearena|info|tp1|tp2|bounds> <arena> OR /arena list"
  54. else if arg-1 is "addarena" or "removearena" or "info" or "tp1" or "tp2" or "bounds":
  55. if arg-2 is not set:
  56. send "&cUsage: /arena %arg-1 in lower case% <arena>"
  57. else if arg-1 is "addarena":
  58. if {kitpvp.duel.arena::%arg-2%} is set:
  59. send "&cアリーナ%arg-2 in lower case%は既に存在しています"
  60. else if {kitpvp.duel.arena::%arg-2%} is not set:
  61. set {kitpvp.duel.arena::%arg-2%} to arg-2 in lower case
  62. set {kitpvp.duel.tp1::%arg-2%} to location of block at player
  63. set {kitpvp.duel.tp2::%arg-2%} to location of block at player
  64. set yaw of {kitpvp.duel.tp1::%arg-2%} to yaw of player
  65. set pitch of {kitpvp.duel.tp1::%arg-2%} to pitch of player
  66. set yaw of {kitpvp.duel.tp2::%arg-2%} to yaw of player
  67. set pitch of {kitpvp.duel.tp2::%arg-2%} to pitch of player
  68. set {kitpvp.duel.pos1::%arg-2%} to location of block at player
  69. set {kitpvp.duel.pos2::%arg-2%} to location of block at player
  70. send "&aアリーナ&e%arg-2 in lower case%&aを追加しました"
  71. else if arg-1 is "removearena":
  72. if {kitpvp.duel.arena::%arg-2%} is not set:
  73. send "&cアリーナ%arg-2 in lower case%は存在していません"
  74. else if {kitpvp.duel.arena::%arg-2%} is set:
  75. delete {kitpvp.duel.arena::%arg-2%}
  76. delete {kitpvp.duel.tp1::%arg-2%}
  77. delete {kitpvp.duel.tp2::%arg-2%}
  78. delete {kitpvp.duel.pos1::%arg-2%}
  79. delete {kitpvp.duel.pos2::%arg-2%}
  80. send "&aアリーナ&e%arg-2 in lower case%&aを消去しました"
  81. else if arg-1 is "info":
  82. if {kitpvp.duel.arena::%arg-2%} is not set:
  83. send "&cアリーナ%arg-2 in lower case%は存在していません"
  84. else if {kitpvp.duel.arena::%arg-2%} is set:
  85. send "&7-=-=-=-=-=-=-&bArena Info&7-=-=-=-=-=-=-"
  86. send "&6Name: &e%arg-2 in lower case%"
  87. send "&6TP1: &e%{kitpvp.duel.tp1::%arg-2%}%"
  88. send "&6TP2: &e%{kitpvp.duel.tp2::%arg-2%}%"
  89. send "&6Bounds:"
  90. send " &6Pos1: &e%{kitpvp.duel.pos1::%arg-2%}%"
  91. send " &6Pos2: &e%{kitpvp.duel.pos2::%arg-2%}%"
  92. else if arg-1 is "tp1":
  93. if {kitpvp.duel.arena::%arg-2%} is not set:
  94. send "&cアリーナ%arg-2 in lower case%は存在していません"
  95. else if {kitpvp.duel.arena::%arg-2%} is set:
  96. set {kitpvp.duel.tp1::%arg-2%} to location of block at player
  97. set yaw of {kitpvp.duel.tp1::%arg-2%} to yaw of player
  98. set pitch of {kitpvp.duel.tp1::%arg-2%} to pitch of player
  99. send "&aアリーナ&e%arg-2 in lower case%&aのテレポート地点1を&e%{kitpvp.duel.tp1::%arg-2%}%&aに設定しました"
  100. else if arg-1 is "tp2":
  101. if {kitpvp.duel.arena::%arg-2%} is not set:
  102. send "&cアリーナ%arg-2 in lower case%は存在していません"
  103. else if {kitpvp.duel.arena::%arg-2%} is set:
  104. set {kitpvp.duel.tp2::%arg-2%} to location of block at player
  105. set yaw of {kitpvp.duel.tp2::%arg-2%} to yaw of player
  106. set pitch of {kitpvp.duel.tp2::%arg-2%} to pitch of player
  107. send "&aアリーナ&e%arg-2 in lower case%&aのテレポート地点2を&e%{kitpvp.duel.tp2::%arg-2%}%&aに設定しました"
  108. else if arg-1 is "bounds":
  109. if {kitpvp.duel.arena::%arg-2%} is not set:
  110. send "&cアリーナ%arg-2 in lower case%は存在していません"
  111. else if {kitpvp.duel.arena::%arg-2%} is set:
  112. set {_posstrs::*} to split "%selection of player%" by " and "
  113. set {_pos1coords::*} to split {_posstrs::1} by ", "
  114. set {_pos2coords::*} to split {_posstrs::2} by ", "
  115. set {kitpvp.duel.pos1::%arg-2%} to location at removePrefix({_pos1coords::1}, "x: ") parsed as number, removePrefix({_pos1coords::2}, "y: ") parsed as number, removePrefix({_pos1coords::3}, "z: ") parsed as number in world "%player's world%"
  116. set {kitpvp.duel.pos2::%arg-2%} to location at removePrefix({_pos2coords::1}, "x: ") parsed as number, removePrefix({_pos2coords::2}, "y: ") parsed as number, removePrefix({_pos2coords::3}, "z: ") parsed as number in world "%player's world%"
  117. send "&aアリーナ&e%arg-2 in lower case%&aの範囲を変更しました"
  118. send "&6Pos1: &e%{kitpvp.duel.pos1::%arg-2%}%"
  119. send "&6Pos2: &e%{kitpvp.duel.pos2::%arg-2%}%"
  120. else if arg-1 is "list":
  121. if {kitpvp.duel.arena::*} is not set:
  122. send "&cアリーナはひとつも存在しません"
  123. else if {kitpvp.duel.arena::*} is set:
  124. set {_arenaliststr} to "&e%join {kitpvp.duel.arena::*} by ""&f, &e""%"
  125. send "&7Arenas (%size of {kitpvp.duel.arena::*}%): %{_arenaliststr}%"
  126. on rightclick with diamond sword:
  127. name of player's tool is "&aDuels"
  128. cancel event
  129. open chest with 1 row named "&aDuel Menu" to player
  130. wait 1 tick
  131. set slot 0 of player's current inventory to iron sword with nbt "{display:{Name:""&6KitPvP""},HideFlags:2}"
  132. set slot 1 of player's current inventory to splash potion with nbt "{display:{Name:""&6PotPvP""},Potion:""minecraft:strong_healing"",HideFlags:32}"
  133. set slot 2 of player's current inventory to player head with nbt "{display:{Name:""&6BuildUHC""},SkullOwner:{Id:""e19442f7-4300-4004-b3cf-7d5ec3c72d0c"",Properties:{textures:[{Value:""eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2JiNjEyZWI0OTVlZGUyYzVjYTUxNzhkMmQxZWNmMWNhNWEyNTVkMjVkZmMzYzI1NGJjNDdmNjg0ODc5MWQ4In19fQ==""}]}}}"
  134. set slot 3 of player's current inventory to bow named "&6Archer"
  135. set slot 4 of player's current inventory to enchanted golden apple named "&6Gapple"
  136. set slot 5 of player's current inventory to diamond sword with nbt "{display:{Name:""&6Combo""},HideFlags:2}"
  137. on inventory click:
  138. inventory type of player's current inventory is "CHEST"
  139. inventory name of player's current inventory is "&aDuel Menu"
  140. "%player's current inventory%" is "inventory of <none>"
  141. cancel event
  142. inventory type of clicked inventory is "CHEST"
  143. inventory name of clicked inventory is "&aDuel Menu"
  144. "%clicked inventory%" is "inventory of <none>"
  145. set {_bool} to false
  146. if clicked item is iron sword:
  147. name of clicked item is "&6KitPvP"
  148. set {_bool} to true
  149. if clicked item is splash potion:
  150. name of clicked item is "&6PotPvP"
  151. set {_bool} to true
  152. if clicked item is player head:
  153. name of clicked item is "&6BuildUHC"
  154. set {_bool} to true
  155. if clicked item is bow:
  156. name of clicked item is "&6Archer"
  157. set {_bool} to true
  158. if clicked item is enchanted golden apple:
  159. name of clicked item is "&6Gapple"
  160. set {_bool} to true
  161. if clicked item is diamond sword:
  162. name of clicked item is "&6Combo"
  163. set {_bool} to true
  164. {_bool} is true
  165. play sound "BLOCK_NOTE_PLING" to player with volume 1 and pitch 5
  166. set selected hotbar slot of player to 0
  167. close player's inventory
  168. set {kitpvp.playingstate.%player%} to "waiting_duel"
  169. set {kitpvp.duel.waitingplayers.%removeColorCode(name of clicked item in lower case)%::%player%} to player
  170. clear player's inventory
  171. teleport player to {kitpvp.duel.lobby}
  172. set level of player to 0
  173. set level progress of player to 0
  174. set slot 0 of player's inventory to barrier named "&cBack to Lobby" with lore "&d&oUndroppable"
  175. wipe player sidebar
  176. on rightclick with barrier:
  177. name of player's tool is "&cBack to Lobby"
  178. cancel event
  179. leaveDUEL(player)
  180. teleportSpawn(player)
  181. on quit:
  182. leaveDUEL(player)
  183. function leaveDUEL(p: player):
  184. set {_bool} to false
  185. set {_mode} to ""
  186. if {kitpvp.duel.waitingplayers.kitpvp::*} contain {_p}:
  187. set {_bool} to true
  188. set {_mode} to "kitpvp"
  189. if {kitpvp.duel.waitingplayers.potpvp::*} contain {_p}:
  190. set {_bool} to true
  191. set {_mode} to "potpvp"
  192. if {kitpvp.duel.waitingplayers.builduhc::*} contain {_p}:
  193. set {_bool} to true
  194. set {_mode} to "builduhc"
  195. if {kitpvp.duel.waitingplayers.archer::*} contain {_p}:
  196. set {_bool} to true
  197. set {_mode} to "archer"
  198. if {kitpvp.duel.waitingplayers.gapple::*} contain {_p}:
  199. set {_bool} to true
  200. set {_mode} to "gapple"
  201. if {kitpvp.duel.waitingplayers.combo::*} contain {_p}:
  202. set {_bool} to true
  203. set {_mode} to "combo"
  204. {_bool} is true
  205. delete {kitpvp.duel.waitingplayers.%{_mode}%::%{_p}%}
  206. every tick:
  207. if size of {kitpvp.duel.waitingplayers.kitpvp::*} >= 2:
  208. set {_num} to 0
  209. loop {kitpvp.duel.waitingplayers.kitpvp::*}:
  210. if {_num} is 0:
  211. set {_p1} to loop-value
  212. delete {kitpvp.duel.waitingplayers.kitpvp::%loop-index%}
  213. else if {_num} is 1:
  214. set {_p2} to loop-value
  215. delete {kitpvp.duel.waitingplayers.kitpvp::%loop-index%}
  216. stop loop
  217. add 1 to {_num}
  218. send "&a対戦相手: &e%{_p2}%" to {_p1}
  219. send "&a対戦相手: &e%{_p1}%" to {_p2}
  220. startDuel({_p1}, {_p2}, "kitpvp")
  221. if size of {kitpvp.duel.waitingplayers.potpvp::*} >= 2:
  222. set {_num} to 0
  223. loop {kitpvp.duel.waitingplayers.potpvp::*}:
  224. if {_num} is 0:
  225. set {_p1} to loop-value
  226. delete {kitpvp.duel.waitingplayers.potpvp::%loop-index%}
  227. else if {_num} is 1:
  228. set {_p2} to loop-value
  229. delete {kitpvp.duel.waitingplayers.potpvp::%loop-index%}
  230. stop loop
  231. add 1 to {_num}
  232. send "&a対戦相手: &e%{_p2}%" to {_p1}
  233. send "&a対戦相手: &e%{_p1}%" to {_p2}
  234. startDuel({_p1}, {_p2}, "potpvp")
  235. if size of {kitpvp.duel.waitingplayers.builduhc::*} >= 2:
  236. set {_num} to 0
  237. loop {kitpvp.duel.waitingplayers.builduhc::*}:
  238. if {_num} is 0:
  239. set {_p1} to loop-value
  240. delete {kitpvp.duel.waitingplayers.builduhc::%loop-index%}
  241. else if {_num} is 1:
  242. set {_p2} to loop-value
  243. delete {kitpvp.duel.waitingplayers.builduhc::%loop-index%}
  244. stop loop
  245. add 1 to {_num}
  246. send "&a対戦相手: &e%{_p2}%" to {_p1}
  247. send "&a対戦相手: &e%{_p1}%" to {_p2}
  248. startDuel({_p1}, {_p2}, "builduhc")
  249. if size of {kitpvp.duel.waitingplayers.archer::*} >= 2:
  250. set {_num} to 0
  251. loop {kitpvp.duel.waitingplayers.archer::*}:
  252. if {_num} is 0:
  253. set {_p1} to loop-value
  254. delete {kitpvp.duel.waitingplayers.archer::%loop-index%}
  255. else if {_num} is 1:
  256. set {_p2} to loop-value
  257. delete {kitpvp.duel.waitingplayers.archer::%loop-index%}
  258. stop loop
  259. add 1 to {_num}
  260. send "&a対戦相手: &e%{_p2}%" to {_p1}
  261. send "&a対戦相手: &e%{_p1}%" to {_p2}
  262. startDuel({_p1}, {_p2}, "archer")
  263. if size of {kitpvp.duel.waitingplayers.gapple::*} >= 2:
  264. set {_num} to 0
  265. loop {kitpvp.duel.waitingplayers.gapple::*}:
  266. if {_num} is 0:
  267. set {_p1} to loop-value
  268. delete {kitpvp.duel.waitingplayers.gapple::%loop-index%}
  269. else if {_num} is 1:
  270. set {_p2} to loop-value
  271. delete {kitpvp.duel.waitingplayers.gapple::%loop-index%}
  272. stop loop
  273. add 1 to {_num}
  274. send "&a対戦相手: &e%{_p2}%" to {_p1}
  275. send "&a対戦相手: &e%{_p1}%" to {_p2}
  276. startDuel({_p1}, {_p2}, "gapple")
  277. if size of {kitpvp.duel.waitingplayers.combo::*} >= 2:
  278. set {_num} to 0
  279. loop {kitpvp.duel.waitingplayers.combo::*}:
  280. if {_num} is 0:
  281. set {_p1} to loop-value
  282. delete {kitpvp.duel.waitingplayers.combo::%loop-index%}
  283. else if {_num} is 1:
  284. set {_p2} to loop-value
  285. delete {kitpvp.duel.waitingplayers.combo::%loop-index%}
  286. stop loop
  287. add 1 to {_num}
  288. send "&a対戦相手: &e%{_p2}%" to {_p1}
  289. send "&a対戦相手: &e%{_p1}%" to {_p2}
  290. startDuel({_p1}, {_p2}, "combo")
  291. on command:
  292. command is "duel"
  293. cancel event
  294. if {kitpvp.playingstate.%player%} is not "not_playing":
  295. send "&cこのコマンドはロビーでのみ使用できます"
  296. else if {kitpvp.playingstate.%player%} is "not_playing":
  297. set {_command::*} to split full command by " "
  298. if size of {_command::*} is 2 or 3:
  299. if {_command::2} is "accept":
  300. if size of {_command::*} is 2:
  301. if {kitpvp.duel.receiveduel::%player%::*} is not set:
  302. send "&c1v1の申し込みは来ていません"
  303. else:
  304. send "&e%player%&aが1v1の申し込みを承認しました" to {kitpvp.duel.latestreceiveduel::%player%}
  305. remove {kitpvp.duel.latestreceiveduel::%player%} from {kitpvp.duel.receiveduel::%player%::*}
  306. delete {kitpvp.duel.sendduel::%{kitpvp.duel.latestreceiveduel::%player%}%}
  307. delete {kitpvp.duel.waitingaccept::%{kitpvp.duel.latestreceiveduel::%player%}%::%player%}
  308. startDuel(player, {kitpvp.duel.latestreceiveduel::%player%}, {kitpvp.duel.sendduelmode::%{kitpvp.duel.latestreceiveduel::%player%}%})
  309. delete {kitpvp.duel.sendduelmode::%{kitpvp.duel.latestreceiveduel::%player%}%}
  310. delete {kitpvp.duel.latestreceiveduel::%player%}
  311. else if size of {_command::*} is 3:
  312. set {_p2} to {_command::3} parsed as player
  313. if {_p2} is not set:
  314. send "&c%{_command::3}%はオフラインか存在しないプレイヤーです"
  315. else if {_p2} is player:
  316. send "&c自分自身と1v1をすることはできません"
  317. else if {_p2} is set:
  318. if {kitpvp.duel.receiveduel::%player%::*} do not contain {_p2}:
  319. send "&c%{_p2}%からの1v1の申し込みは来ていません"
  320. else if {kitpvp.duel.receiveduel::%player%::*} contain {_p2}:
  321. send "&e%player%&aが1v1の申し込みを承認しました" to {_p2}
  322. if {kitpvp.duel.latestreceiveduel::%player%} is {_p2}:
  323. delete {kitpvp.duel.latestreceiveduel::%player%}
  324. remove {_p2} from {kitpvp.duel.receiveduel::%player%::*}
  325. delete {kitpvp.duel.sendduel::%{_p2}%}
  326. delete {kitpvp.duel.waitingaccept::%{_p2}%::%player%}
  327. startDuel(player, {_p2}, {kitpvp.duel.sendduelmode::%{_p2}%})
  328. delete {kitpvp.duel.sendduelmode.%{_p2}%}
  329. else:
  330. if size of {_command::*} is 2:
  331. set {_p2} to {_command::2} parsed as player
  332. if {_p2} is not set:
  333. send "&c%{_command::2}%はオフラインか存在しないプレイヤーです"
  334. else if {_p2} is player:
  335. send "&c自分自身と1v1をすることはできません"
  336. else if {kitpvp.duel.receiveduel::%{_p2}%::*} contain player:
  337. send "&c既に%{_p2}%に1v1の申し込みを送信しています"
  338. else:
  339. open chest with 1 row named "&aDuel Menu§s§e§n§d" to player
  340. wait 1 tick
  341. set {_lore} to removeSuffix("§%join (split name of {_p2} by """") by ""§""%", "§")
  342. set slot 0 of player's current inventory to iron sword with nbt "{display:{Name:""&6KitPvP§p§2§:%{_lore}%""},HideFlags:2}"
  343. set slot 1 of player's current inventory to splash potion with nbt "{display:{Name:""&6PotPvP§p§2§:%{_lore}%""},Potion:""minecraft:strong_healing"",HideFlags:32}"
  344. set slot 2 of player's current inventory to player head with nbt "{display:{Name:""&6BuildUHC§p§2§:%{_lore}%""},SkullOwner:{Id:""e19442f7-4300-4004-b3cf-7d5ec3c72d0c"",Properties:{textures:[{Value:""eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2JiNjEyZWI0OTVlZGUyYzVjYTUxNzhkMmQxZWNmMWNhNWEyNTVkMjVkZmMzYzI1NGJjNDdmNjg0ODc5MWQ4In19fQ==""}]}}}"
  345. set slot 3 of player's current inventory to bow named "&6Archer§p§2§:%{_lore}%"
  346. set slot 4 of player's current inventory to enchanted golden apple named "&6Gapple§p§2§:%{_lore}%"
  347. set slot 5 of player's current inventory to diamond sword with nbt "{display:{Name:""&6Combo§p§2§:%{_lore}%""},HideFlags:2}"
  348. else:
  349. send "&cUsage: /duel <player> OR /duel accept [player]"
  350. else:
  351. send "&cUsage: /duel <player> OR /duel accept [player]"
  352. on inventory click:
  353. inventory type of player's current inventory is "CHEST"
  354. inventory name of player's current inventory is "&aDuel Menu§s§e§n§d"
  355. "%player's current inventory%" is "inventory of <none>"
  356. cancel event
  357. inventory type of clicked inventory is "CHEST"
  358. inventory name of clicked inventory is "&aDuel Menu§s§e§n§d"
  359. "%clicked inventory%" is "inventory of <none>"
  360. set {_bool} to false
  361. set {_strs::*} to split name of clicked item by "§p§2§:"
  362. set {_name} to {_strs::1}
  363. if clicked item is iron sword:
  364. {_name} is "&6KitPvP"
  365. set {_bool} to true
  366. set {_mode} to "kitpvp"
  367. if clicked item is splash potion:
  368. {_name} is "&6PotPvP"
  369. set {_bool} to true
  370. set {_mode} to "potpvp"
  371. if clicked item is player head:
  372. {_name} is "&6BuildUHC"
  373. set {_bool} to true
  374. set {_mode} to "builduhc"
  375. if clicked item is bow:
  376. {_name} is "&6Archer"
  377. set {_bool} to true
  378. set {_mode} to "archer"
  379. if clicked item is enchanted golden apple:
  380. {_name} is "&6Gapple"
  381. set {_bool} to true
  382. set {_mode} to "gapple"
  383. if clicked item is diamond sword:
  384. {_name} is "&6Combo"
  385. set {_bool} to true
  386. set {_mode} to "combo"
  387. {_bool} is true
  388. close player's inventory
  389. set {_p2name} to {_strs::2}
  390. replace "§" in {_p2name} with ""
  391. loop all players:
  392. name of loop-player is {_p2name}
  393. set {_p2} to loop-player
  394. stop loop
  395. if {_p2} is not set:
  396. send "&c%{_p2name}%はオフラインです"
  397. else:
  398. play sound "BLOCK_NOTE_PLING" to player with volume 1 and pitch 5
  399. set {kitpvp.duel.sendduel::%player%} to {_p2}
  400. set {kitpvp.duel.sendduelmode::%player%} to {_mode}
  401. send "&e%{_p2}%&aに1v1の申し込みを送信しました%nl%&aモード: &e%removeColorCode({_name})%"
  402. set {kitpvp.duel.latestreceiveduel::%{_p2}%} to player
  403. set {kitpvp.duel.receiveduel::%{_p2}%::%player%} to player
  404. send "&e%player%&aから1v1の申し込みがありました%nl%&aモード: &e%removeColorCode({_name})%" to {_p2}
  405. send "&a10秒以内に&e&n/duel accept&aと打つことで1v1を開始できます" to {_p2}
  406. set {_packet} to new play_server_chat packet
  407. set "chatcomponent" pjson 0 of {_packet} to "{""extra"":[{""text"":""ここをクリックで承認"",""color"":""gold"",""bold"":true,""clickEvent"":{""action"":""run_command"",""value"":""/duel accept %player%""}}],""text"":""""}" parsed as jsonobject
  408. set byte pnum 0 of {_packet} to 0
  409. send {_p2} packet {_packet}
  410. set {kitpvp.duel.waitingaccept::%player%::%{_p2}%} to 1
  411. wait 10 second
  412. {kitpvp.duel.waitingaccept::%player%::%{_p2}%} is 1
  413. if {kitpvp.duel.latestreceiveduel::%{_p2}%} is player:
  414. delete {kitpvp.duel.latestreceiveduel::%{_p2}%}
  415. remove player from {kitpvp.duel.receiveduel::%{_p2}%::*}
  416. delete {kitpvp.duel.sendduel::%player%}
  417. delete {kitpvp.duel.waitingaccept::%player%::%{_p2}%}
  418. send "&a10秒経っても承認されなかったため1v1の申し込みは無効になりました"
  419. send "&a10秒経っても承認されなかったため1v1の申し込みは無効になりました" to {_p2}
  420. on tab complete:
  421. set {_strs::*} to split event-string by " "
  422. {_strs::1} is "/duel"
  423. if size of {_strs::*} is 2:
  424. if {_strs::2} is "":
  425. loop all players:
  426. add name of loop-player to completions
  427. else:
  428. loop all players:
  429. first length of {_strs::2} characters of name of loop-player is {_strs::2}
  430. add name of loop-player to completions
  431. else if size of {_strs::*} is 3:
  432. {_strs::2} is "accept"
  433. if {_strs::3} is "":
  434. loop all players:
  435. add name of loop-player to completions
  436. else:
  437. loop all players:
  438. first length of {_strs::3} characters of name of loop-player is {_strs::3}
  439. add name of loop-player to completions
  440. function startDuel(p1: player, p2: player, mode: string):
  441. {_p1} is not {_p2}
  442. {_mode} is "gapple" or "potpvp" or "combo" or "builduhc" or "archer" or "kitpvp"
  443. loop {kitpvp.duel.arena::*}:
  444. {kitpvp.duel.using::%loop-index%} is not set
  445. set {_usablearenas::%loop-index%} to loop-value
  446. if {_usablearenas::*} is not set:
  447. send "&c使用可能なアリーナが存在しなかったため1v1を開始できませんでした" to {_p1}
  448. send "&c使用可能なアリーナが存在しなかったため1v1を開始できませんでした" to {_p2}
  449. leaveDUEL({_p1})
  450. leaveDUEL({_p2})
  451. teleportSpawn({_p1})
  452. teleportSpawn({_p2})
  453. else if {_usablearenas::*} is set:
  454. set level of {_p1} to 0
  455. set level progress of {_p1} to 0
  456. set level of {_p2} to 0
  457. set level progress of {_p2} to 0
  458. clear {_p1}'s inventory
  459. clear {_p2}'s inventory
  460. if {_mode} is "kitpvp":
  461. set slot 0 of {_p1}'s inventory to chest named "&aKit Select" with lore "&d&oUndroppable"
  462. set slot 0 of {_p2}'s inventory to chest named "&aKit Select" with lore "&d&oUndroppable"
  463. set selected hotbar slot of {_p1} to 0
  464. set selected hotbar slot of {_p2} to 0
  465. set {_arena} to random element out of {_usablearenas::*}
  466. set {kitpvp.duel.using::%{_arena}%} to 1
  467. set {kitpvp.duel.duelmode::%{_arena}%} to {_mode}
  468. teleport {_p1} to {kitpvp.duel.lobby}
  469. teleport {_p2} to {kitpvp.duel.lobby}
  470. set {kitpvp.playingstate.%{_p1}%} to "waiting_duel"
  471. set {kitpvp.playingstate.%{_p2}%} to "waiting_duel"
  472. wipe {_p1} sidebar
  473. wipe {_p2} sidebar
  474. set {kitpvp.duel.usingarena::%{_p1}%} to {_arena}
  475. set {kitpvp.duel.usingarena::%{_p2}%} to {_arena}
  476. set {kitpvp.duel.opponent::%{_p1}%} to {_p2}
  477. set {kitpvp.duel.opponent::%{_p2}%} to {_p1}
  478. send "&e15秒後&aに試合を開始します" to {_p1}
  479. send "&e15秒後&aに試合を開始します" to {_p2}
  480. play sound "UI_BUTTON_CLICK" to {_p1} with volume 1 and pitch 15
  481. play sound "UI_BUTTON_CLICK" to {_p2} with volume 1 and pitch 15
  482. wait 5 second
  483. {kitpvp.duel.using::%{_arena}%} is 1
  484. send "&e10秒後&aに試合を開始します" to {_p1}
  485. send "&e10秒後&aに試合を開始します" to {_p2}
  486. play sound "UI_BUTTON_CLICK" to {_p1} with volume 1 and pitch 15
  487. play sound "UI_BUTTON_CLICK" to {_p2} with volume 1 and pitch 15
  488. wait 5 second
  489. loop 5 times:
  490. {kitpvp.duel.using::%{_arena}%} is 1
  491. send "&e%6-loop-number%秒後&aに試合を開始します" to {_p1}
  492. send "&e%6-loop-number%秒後&aに試合を開始します" to {_p2}
  493. play sound "UI_BUTTON_CLICK" to {_p1} with volume 1 and pitch 15
  494. play sound "UI_BUTTON_CLICK" to {_p2} with volume 1 and pitch 15
  495. wait 1 second
  496. {kitpvp.duel.using::%{_arena}%} is 1
  497. if random integer between 0 and 1 is 1:
  498. teleport {_p1} to {kitpvp.duel.tp1::%{_arena}%}
  499. teleport {_p2} to {kitpvp.duel.tp2::%{_arena}%}
  500. else:
  501. teleport {_p1} to {kitpvp.duel.tp2::%{_arena}%}
  502. teleport {_p2} to {kitpvp.duel.tp1::%{_arena}%}
  503. play sound "BLOCK_NOTE_PLING" to {_p1} with volume 1 and pitch 5
  504. play sound "BLOCK_NOTE_PLING" to {_p2} with volume 1 and pitch 5
  505. send "&a開始しました" to {_p1}
  506. send "&a開始しました" to {_p2}
  507. set {kitpvp.playingstate.%{_p1}%} to "playing_duel"
  508. set {kitpvp.playingstate.%{_p2}%} to "playing_duel"
  509. set {kitpvp.duel.matchtime::%{_arena}%} to 18000
  510. set selected hotbar slot of {_p1} to 0
  511. set selected hotbar slot of {_p2} to 0
  512. updateSideBar("duel", {_p1})
  513. updateSideBar("duel", {_p2})
  514. if {_mode} is "kitpvp":
  515. set {_uuid} to UUID of {_p1}
  516. loop 41 times:
  517. set {_slot} to loop-number - 1
  518. set slot {_slot} of {_p1}'s inventory to {kititems.%{kitpvp.lastselectedkit.%{_uuid}%}%::%{_slot}%}
  519. set {_uuid} to UUID of {_p2}
  520. loop 41 times:
  521. set {_slot} to loop-number - 1
  522. set slot {_slot} of {_p2}'s inventory to {kititems.%{kitpvp.lastselectedkit.%{_uuid}%}%::%{_slot}%}
  523. else:
  524. set max health of {_p1} to 10
  525. set max health of {_p2} to 10
  526. set health of {_p1} to 10
  527. set health of {_p2} to 10
  528. loop 41 times:
  529. set {_slot} to loop-number - 1
  530. set slot {_slot} of {_p1}'s inventory to {duelkit.%{_mode}%::%{_slot}%}
  531. set slot {_slot} of {_p2}'s inventory to {duelkit.%{_mode}%::%{_slot}%}
  532. on damage of player:
  533. {kitpvp.playingstate.%victim%} is "playing_duel"
  534. {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%victim%}%} is "combo"
  535. set damage delay of victim to 0 tick
  536. on quit:
  537. if {kitpvp.playingstate.%player%} is "waiting_duel":
  538. send "&c対戦相手がサーバーから退出したためカウントダウンを中断しました" to {kitpvp.duel.opponent::%player%}
  539. teleportSpawn({kitpvp.duel.opponent::%player%})
  540. play sound "UI_BUTTON_CLICK" to {kitpvp.duel.opponent::%player%} with volume 1 and pitch 5
  541. delete {kitpvp.duel.using::%{kitpvp.duel.usingarena::%player%}%}
  542. delete {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%}
  543. delete {kitpvp.duel.usingarena::%{kitpvp.duel.opponent::%player%}%}
  544. delete {kitpvp.duel.opponent::%{kitpvp.duel.opponent::%player%}%}
  545. delete {kitpvp.duel.usingarena::%player%}
  546. delete {kitpvp.duel.opponent::%player%}
  547. else if {kitpvp.playingstate.%player%} is "playing_duel":
  548. broadcast "&e%{kitpvp.duel.opponent::%player%}%&aが&e%player%&aとの1v1で勝利しました"
  549. loop all entities:
  550. loop-entity is dropped item or projectile
  551. loop-entity's world is {kitpvp.duel.tp1::%{kitpvp.duel.usingarena::%player%}%}'s world
  552. x-coordinate of loop-entity is between x-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%player%}%} and x-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%player%}%}
  553. y-coordinate of loop-entity is between y-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%player%}%} and y-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%player%}%}
  554. z-coordinate of loop-entity is between z-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%player%}%} and z-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%player%}%}
  555. kill loop-entity
  556. set {_session} to new editsession in world "%player's world%" with limit -1
  557. set {_items::*} to "fire" parsed as item
  558. set {_id} to 8
  559. loop 4 times:
  560. set {_data} to 0
  561. loop 10 times:
  562. add getItemStackFromID({_id}, {_data}) to {_items::*}
  563. add 1 to {_data}
  564. add 1 to {_id}
  565. replace {_items::*} between {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%player%}%} and {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%player%}%} with air using {_session}
  566. loop {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::*}:
  567. set block at {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::%loop-index%} to air
  568. delete {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::%loop-index%}
  569. teleportSpawn({kitpvp.duel.opponent::%player%})
  570. send {kitpvp.duel.opponent::%player%} title "&6&lVICTORY" for 2 second with 0 tick fade in and 0.5 second fade out
  571. giveReward({kitpvp.duel.opponent::%player%}, 30, "Victory")
  572. send "&a+30 EXP (Victory)" to {kitpvp.duel.opponent::%player%}
  573. play sound "ENTITY_PLAYER_LEVELUP" to {kitpvp.duel.opponent::%player%} with volume 1 and pitch 5
  574. delete {kitpvp.duel.using::%{kitpvp.duel.usingarena::%player%}%}
  575. delete {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%}
  576. delete {kitpvp.duel.matchtime::%{kitpvp.duel.usingarena::%player%}%}
  577. delete {kitpvp.duel.usingarena::%{kitpvp.duel.opponent::%player%}%}
  578. delete {kitpvp.duel.opponent::%{kitpvp.duel.opponent::%player%}%}
  579. delete {kitpvp.duel.usingarena::%player%}
  580. delete {kitpvp.duel.opponent::%player%}
  581. on death of player:
  582. {kitpvp.playingstate.%victim%} is "playing_duel"
  583. set death message to ""
  584. broadcast "&e%{kitpvp.duel.opponent::%victim%}%&aが&e%victim%&aとの1v1で勝利しました"
  585. loop all entities:
  586. loop-entity is a dropped item or a projectile
  587. loop-entity's world is {kitpvp.duel.tp1::%{kitpvp.duel.usingarena::%victim%}%}'s world
  588. x-coordinate of loop-entity is between x-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%victim%}%} and x-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%victim%}%}
  589. y-coordinate of loop-entity is between y-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%victim%}%} and y-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%victim%}%}
  590. z-coordinate of loop-entity is between z-coordinate of {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%victim%}%} and z-coordinate of {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%victim%}%}
  591. kill loop-entity
  592. set {_session} to new editsession in world "%player's world%" with limit -1
  593. set {_items::*} to "fire" parsed as item
  594. set {_id} to 8
  595. loop 4 times:
  596. set {_data} to 0
  597. loop 10 times:
  598. add getItemStackFromID({_id}, {_data}) to {_items::*}
  599. add 1 to {_data}
  600. add 1 to {_id}
  601. replace {_items::*} between {kitpvp.duel.pos1::%{kitpvp.duel.usingarena::%victim%}%} and {kitpvp.duel.pos2::%{kitpvp.duel.usingarena::%victim%}%} with air using {_session}
  602. loop {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%victim%}%::*}:
  603. set block at {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%victim%}%::%loop-index%} to air
  604. delete {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%victim%}%::%loop-index%}
  605. teleportSpawn({kitpvp.duel.opponent::%victim%})
  606. send {kitpvp.duel.opponent::%victim%} title "&6&lVICTORY" for 2 second with 0 tick fade in and 0.5 second fade out
  607. giveReward({kitpvp.duel.opponent::%victim%}, 30, "Victory")
  608. play sound "ENTITY_PLAYER_LEVELUP" to {kitpvp.duel.opponent::%victim%} with volume 1 and pitch 5
  609. delete {kitpvp.duel.using::%{kitpvp.duel.usingarena::%victim%}%}
  610. delete {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%victim%}%}
  611. delete {kitpvp.duel.matchtime::%{kitpvp.duel.usingarena::%victim%}%}
  612. delete {kitpvp.duel.usingarena::%{kitpvp.duel.opponent::%victim%}%}
  613. delete {kitpvp.duel.opponent::%{kitpvp.duel.opponent::%victim%}%}
  614. delete {kitpvp.duel.usingarena::%victim%}
  615. delete {kitpvp.duel.opponent::%victim%}
  616. wait 19 tick
  617. force victim to respawn
  618. teleportSpawn(victim)
  619. every tick:
  620. loop {kitpvp.duel.matchtime::*}:
  621. {kitpvp.duel.matchtime::%loop-index%} >= 1
  622. remove 1 from {kitpvp.duel.matchtime::%loop-index%}
  623. if mod({kitpvp.duel.matchtime::%loop-index%}, 20) is 0:
  624. loop all players:
  625. {kitpvp.duel.usingarena::%loop-player%} is loop-index
  626. updateSideBar("duel", loop-player)
  627. {kitpvp.duel.matchtime::%loop-index%} is 0
  628. loop all players:
  629. {kitpvp.duel.usingarena::%loop-player%} is loop-index
  630. send loop-player title "&9&lDRAW" for 2 second with 0 tick fade in and 0.5 second fade out
  631. giveReward(loop-player, 15, "Draw")
  632. send "&a+15 EXP (Draw)" to loop-player
  633. delete {kitpvp.duel.usingarena::%loop-player%}
  634. delete {kitpvp.duel.opponent::%loop-player%}
  635. teleportSpawn(loop-player)
  636. loop all entities:
  637. loop-entity is dropped item or projectile
  638. loop-entity's world is {kitpvp.duel.tp1::%loop-index%}'s world
  639. x-coordinate of loop-entity is between x-coordinate of {kitpvp.duel.pos1::%{_arena}%} and x-coordinate of {kitpvp.duel.pos2::%{_arena}%}
  640. y-coordinate of loop-entity is between y-coordinate of {kitpvp.duel.pos1::%{_arena}%} and y-coordinate of {kitpvp.duel.pos2::%{_arena}%}
  641. z-coordinate of loop-entity is between z-coordinate of {kitpvp.duel.pos1::%{_arena}%} and z-coordinate of {kitpvp.duel.pos2::%{_arena}%}
  642. kill loop-entity
  643. delete {kitpvp.duel.using::%loop-index%}
  644. delete {kitpvp.duel.duelmode::%loop-index%}
  645. delete {kitpvp.duel.matchtime::%loop-index%}
  646. set {_session} to new editsession in world "%{kitpvp.duel.tp1::%loop-index%}'s world%" with limit -1
  647. set {_items::*} to "fire" parsed as item
  648. set {_id} to 8
  649. loop 4 times:
  650. set {_data} to 0
  651. loop 10 times:
  652. add getItemStackFromID({_id}, {_data}) to {_items::*}
  653. add 1 to {_data}
  654. add 1 to {_id}
  655. replace {_items::*} between {kitpvp.duel.pos1::%loop-index%} and {kitpvp.duel.pos2::%loop-index%} with air using {_session}
  656. wait 1 tick
  657. loop {kitpvp.duel.playerplacedblocks.%loop-index%::*}:
  658. set block at {kitpvp.duel.playerplacedblocks.%loop-index-1%::%loop-index-2%} to air
  659. delete {kitpvp.duel.playerplacedblocks.%loop-index-1%::%loop-index-2%}
  660. on click:
  661. id of player's tool is 397
  662. durability of player's tool is 3
  663. name of player's tool is "&6Golden Head"
  664. cancel event
  665. set {_lastuse} to metadata value "GoldenHeadLastUse" of player
  666. if check [{_lastuse} is not set] or check [unix timestamp of now - {_lastuse} >= 1]:
  667. play sound "ENTITY_GENERIC_EAT" to player with volume 1 and pitch 5
  668. execute console command "execute %player% ~ ~ ~ effect @s 1 10 0"
  669. execute console command "execute %player% ~ ~ ~ effect @s 10 5 2"
  670. execute console command "execute %player% ~ ~ ~ effect @s 22 120 0"
  671. player's gamemode is survival or adventure
  672. remove 1 from item amount of player's tool
  673. set metadata value "GoldenHeadLastUse" of player to unix timestamp of now
  674. else:
  675. send "&c使用間隔が短すぎます" to player
  676. command /setduelkititems [<text>]:
  677. permission: kitpvp.admin
  678. permission message: &cYou do not have permission to use this command.
  679. trigger:
  680. if arg is not set:
  681. send "&cUsage: /setduelkititems <DuelMode>"
  682. else if arg is not "potpvp" or "builduhc" or "gapple" or "archer" or "combo":
  683. send "&cUsage: /setduelkititems <DuelMode>"
  684. else:
  685. if arg is "potpvp":
  686. set {_duelmodename} to "PotPvP"
  687. if arg is "builduhc":
  688. set {_duelmodename} to "BuildUHC"
  689. if arg is "gapple":
  690. set {_duelmodename} to "Gapple"
  691. if arg is "archer":
  692. set {_duelmodename} to "Archer"
  693. if arg is "combo":
  694. set {_duelmodename} to "Combo"
  695. loop 41 times:
  696. set {_slot} to loop-number - 1
  697. set {duelkit.%arg%::%{_slot}%} to slot {_slot} of player's inventory
  698. send "&e%{_duelmodename}%&aのキットを設定しました"
  699. command /setduelkit <text>:
  700. permission: kitpvp.admin
  701. permission message: &cYou do not have permission to use this command.
  702. trigger:
  703. {duelkit.%arg%::*} is set
  704. loop 41 times:
  705. set {_slot} to loop-number - 1
  706. set slot {_slot} of player's inventory to {duelkit.%arg%::%{_slot}%}
  707. on place:
  708. player's gamemode is not creative
  709. {kitpvp.playingstate.%player%} is "playing_duel"
  710. {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%} is "builduhc"
  711. add location of event-block to {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::*}
  712. on mine:
  713. {kitpvp.playingstate.%player%} is "playing_duel"
  714. {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%} is "builduhc"
  715. {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::*} contain location of event-block
  716. drop event-block at location 0.5 meter east location 0.5 meter above location 0.5 meter south location of event-block
  717. on break:
  718. {kitpvp.playingstate.%player%} is "playing_duel"
  719. {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%} is "builduhc"
  720. {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::*} contain location of event-block
  721. remove location of event-block from {kitpvp.duel.playerplacedblocks.%{kitpvp.duel.usingarena::%player%}%::*}
  722. on form:
  723. event-block is cobblestone or stone
  724. loop {kitpvp.duel.using::*}:
  725. x-coordinate of event-block is between x-coordinate of {kitpvp.duel.pos1::%loop-index%} and x-coordinate of {kitpvp.duel.pos2::%loop-index%}
  726. y-coordinate of event-block is between y-coordinate of {kitpvp.duel.pos1::%loop-index%} and y-coordinate of {kitpvp.duel.pos2::%loop-index%}
  727. z-coordinate of event-block is between z-coordinate of {kitpvp.duel.pos1::%loop-index%} and z-coordinate of {kitpvp.duel.pos2::%loop-index%}
  728. add location of event-block to {kitpvp.duel.playerplacedblocks.%loop-index%::*}
  729. on rightclick with ender pearl:
  730. {kitpvp.playingstate.%player%} is "playing_duel"
  731. {kitpvp.duel.duelmode::%{kitpvp.duel.usingarena::%player%}%} is "potpvp"
  732. if {enderpearlcooldown.%player%} is not set:
  733. set {enderpearlcooldown.%player%} to 300
  734. else if {enderpearlcooldown.%player%} is set:
  735. send "&aCooldown: &c%ceil({enderpearlcooldown.%player%}/20)% seconds"
  736. cancel event
  737. every tick:
  738. loop all players:
  739. {enderpearlcooldown.%loop-player%} >= 1
  740. remove 1 from {enderpearlcooldown.%loop-player%}
  741. set level of loop-player to ceil({enderpearlcooldown.%loop-player%}/20)
  742. set level progress of loop-player to {enderpearlcooldown.%loop-player%}/300
  743. {enderpearlcooldown.%loop-player%} is 0
  744. delete {enderpearlcooldown.%loop-player%}
Add Comment
Please, Sign In to add comment