Paste #66827: Untitled Paste

Date: 2020/04/02 09:41:06 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


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]>