Date: 2020/04/02 09:41:06 UTC-07:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
lobbyInventoryHandler:
type: world
debug: false
events:
on player drops serverselector:
- determine cancelled
on player clicks with serverselector using either_hand:
- determine passively CANCELLED
- foreach <bungee.list_servers.filter[starts_with[lobby]].alphanumeric> as:lobby:
- ~bungeetag <server.list_online_players.size> server:<[lobby]> save:<[lobby]>Playercount
- flag server <[lobby]>Playercount:<entry[<[lobby]>Playercount].result>
- if <player.groups.contains_any[admin|advbuilder|builder|dev|mod|systemdev]> && <bungee.list_servers.contains_any[dev1|build1]>:
- foreach <bungee.list_servers.filter[starts_with[dev]].alphanumeric> as:dev:
- ~bungeetag <server.list_online_players.size> server:<[dev]> save:<[dev]>Playercount
- flag server <[dev]>Playercount:<entry[<[dev]>Playercount].result>
- foreach <bungee.list_servers.filter[starts_with[build]].alphanumeric> as:build:
- ~bungeetag <server.list_online_players.size> server:<[build]> save:<[build]>Playercount
- flag server <[build]>Playercount:<entry[<[build]>Playercount].result>
- inventory open d:<inventory[lobbyInventory]>
on player enters lobbyPortal:
- determine passively CANCELLED
- foreach <bungee.list_servers.filter[starts_with[lobby]].alphanumeric> as:lobby:
- ~bungeetag <server.list_online_players.size> server:<[lobby]> save:<[lobby]>Playercount
- flag server <[lobby]>Playercount:<entry[<[lobby]>Playercount].result>
- if <player.groups.contains_any[admin|advbuilder|builder|dev|mod|systemdev]> && <bungee.list_servers.contains[starts_with[dev]]>:
- foreach <bungee.list_servers.filter[starts_with[dev]].alphanumeric> as:dev:
- ~bungeetag <server.list_online_players.size> server:dev1 save:devPlayercount
- flag server <[dev]>Playercount:<entry[<[dev]>Playercount].result>
- foreach <bungee.list_servers.filter[starts_with[build]].alphanumeric> as:build:
- ~bungeetag <server.list_online_players.size> server:build1 save:buildPlayercount
- flag server <[build]>Playercount:<entry[<[build]>Playercount].result>
- shoot <player> destination:<player.location.sub[5,0,0]> speed:2 origin:<player.location> no_rotate
- wait 2t
- inventory open d:<inventory[lobbyInventory]>
on player clicks in lobbyInventory:
- determine cancelled
on player drags in lobbyInventory:
- determine cancelled
on player clicks serverLobbyOnline in lobbyInventory:
- bungeeexecute "send <player.name> <context.item.nbt[lobby]>"
on player clicks serverDevOnline in lobbyInventory:
- bungeeexecute "send <player.name> dev1"
on player clicks serverBuildOnline in lobbyInventory:
- bungeeexecute "send <player.name> build1"
lobbyInventory:
type: inventory
debug: false
title: Vailcraft Servers<&co> Page 1
size: 54
procedural items:
- define serverListLobby li@
- foreach <bungee.list_servers.filter[starts_with[lobby]].alphanumeric> as:lobby:
- define itemDName <s@serverNames.yaml_key[<[lobby]>.displayname]>
- if <[lobby]> == <bungee.server>:
- define itemLore "<server.flag[<[lobby]>Playercount]>|<&f>|<&7>You are connected|<&7>to this lobby."
- else:
- define itemLore "<server.flag[<[lobby]>Playercount]>|<&f>|<&7>Click to join..."
# serverItemLobby is the actual item that you click on for each individual lobby.
- define serverItemLobby "i@serverLobbyOnline[display_name=<&b><[itemDName]>;lore=<&9>Players<&co> <&7><[itemLore]>;nbt=lobby/<[lobby]>]"
# serverListLobby is the collection (list) of serverItemLobby for each online lobby.
- define serverListLobby <[serverListLobby].include[<[serverItemLobby]>]>
# itemsLobby is the output from the foreach so that the full list can be used outside of the loop.
- define itemsLobby <[serverListLobby]>
- define whitelistLobby li@46|47|48|49|50|51|52
- define whitelistDividers li@8|17|26|35|36|37|38|39|40|41|42|43|44|53
- define dividers <list[].pad_right[14].with[i@black_stained_glass_pane]>
# outputLobby starts here as an empty list, adding 54 i@air spaces (the number of
# spaces in a large chest) so that the list can be populated with lobbies.
- define outputLobby <list[].pad_right[54].with[air]>
- foreach <[itemsLobby]>:
# outputLobby starts here as a list of 54 i@air spaces, but then the items are added
# to the slots that were whitelisted specifically for lobby items.
# The `.get[<[loop_index]>]` is to specify which whitelistLobby space to fill first.
- define outputLobby <[outputLobby].set[<[value]>].at[<[whitelistLobby].get[<[loop_index]>]>]>
- foreach <[dividers]>:
- define outputLobby <[outputLobby].set[<[value]>].at[<[whitelistDividers].get[<[loop_index]>]>]>
- if <player.groups.contains_any[admin|advbuilder|builder|dev|mod|systemdev]>:
- if <bungee.list_servers.contains[dev1]>:
- define serverItemDev1 "i@serverDevOnline[lore=<&e>Players<&co> <&7><server.flag[dev1Playercount]>/50|<&f>|<&7>Click to join...;nbt=dev/dev1]"
- define outputLobby <[outputLobby].set[<[serverItemDev1]>].at[45]>
- if !<bungee.list_servers.contains[dev1]>:
- define serverItemDev1 "i@serverDevOffline[lore=<&7>Offline...]"
- define outputLobby <[outputLobby].set[<[serverItemDev1]>].at[45]>
- if <bungee.list_servers.contains[build1]>:
- define serverItemBuild1 "i@serverBuildOnline[lore=<&d>Players<&co> <&7><server.flag[build1Playercount]>/50|<&f>|<&7>Click to join...;nbt=build/build1]"
- define outputLobby <[outputLobby].set[<[serverItemBuild1]>].at[54]>
- if !<bungee.list_servers.contains[build1]>:
- define serverItemBuild1 "i@serverBuildOffline[lore=<&7>Offline...]"
- define outputLobby <[outputLobby].set[<[serverItemBuild1]>].at[54]>
- determine <[outputLobby]>