Paste #38602: Hub Script

Date: 2016/12/30 15:07:43 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Events:
  type: world
  debug: false
  events:
    on player join:
    - inventory clear
    - give i@Server_Selector to:<player.inventory> slot:1
    - give i@Player_Hider_Disabled quantity:1 to:<player.inventory> slot:2
    - give i@Server_Store quantity:1 to:<player.inventory> slot:5
    - if <player.is_op> {
      - give i@StaffHammer to:<player.inventory> slot:9 }
    - run SurvivalWhitelist
    on server start:
    - run Player_Count_Refresh
    - adjust <server.list_players> 'location:l@-54.5,52.1,-94.5,0,90,MainLobby'
    - note cu@-19,51,-114,Mainlobby|-19,58,-104,Mainlobby as:cuboid1
    - note cu@-19,51,-86,Mainlobby|-19,38,-76,Mainlobby as:cuboid2
    - note cu@-46,51,-59,Mainlobby|-36,58,-59,Mainlobby as:cuboid3
    - note cu@-64,51,-59,Mainlobby|-74,58,-59,Mainlobby as:cuboid4
    - define announcements 1
    - while <def[announcements].is[==].to[1]> {
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '                <&a><&l>Welcome to the XPCraft Server!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '                      <&a>Type /vote for voting links!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '       <&a>Use the server selector or portals to play games!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '             <&a>Sign up on our forums at www.xpcraft.com!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '     <&a>Click the tutorial holograms to learn about our games!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - announce '<&a>Use coupon code XPCRAFT for 50% off any store purchases!'
      - announce '<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>-<&6>-<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>=<&2>=<&6>='
      - wait 240s
      }
    on player enters cuboid1:
    - adjust <player> send_to:server@shift1
    on player enters cuboid2:
    - adjust <player> send_to:server@shift2
    on player enters cuboid3:
    - adjust <player> send_to:server@shift3
    on player enters cuboid4:
    - adjust <player> send_to:server@shift4
    on system time 05:00:
    - run safe_shutdown
    on system time 11:00:
    - run safe_shutdown
    on system time 17:00:
    - run safe_shutdown    
    on system time 23:00:
    - run safe_shutdown
    on player clicks Server_Selector in inventory:
    - inventory open d:in@Server_GUI_Menu
    on player clicks with Server_Selector:
    - inventory open d:in@Server_GUI_Menu  
    on player clicks Player_Hider_Disabled in inventory:
    - run Player_Hide_Task
    on player clicks with Player_Hider_Disabled:
    - run Player_Hide_Task
    on player clicks Player_Hider_Enabled in inventory:
    - run Player_Show_Task
    on player clicks with Player_Hider_Enabled:
    - run Player_Show_Task
    on player clicks Server_Store in inventory:
    - determine passively cancelled
    - execute as_player "buy"
    on player clicks with Server_Store:
    - determine passively cancelled
    - execute as_player "buy"
    on player clicks Filler in Server_GUI_Menu:
    - determine cancelled
    on player clicks Shift in Server_GUI_Menu:
    - inventory open d:in@Shift_GUI_Menu
    on player clicks Filler in Shift_GUI_Menu:
    - determine cancelled
    on player clicks Creative in Server_GUI_Menu:
    - determine passively cancelled
    - inventory close d:in@Server_GUI_Menu
    - narrate "<&c>This server is still in-development. Check our website for updates!"
    on player clicks Survival in Server_GUI_Menu:
    - determine passively cancelled
    - inventory close d:in@Server_GUI_Menu
    - if <player.has_flag[whitelist.survival]> {
      - adjust <player> send_to:server@survival
      }
      else {
      - narrate "<&c>This server is in closed beta. Please contact an admin if you'd like to be whitelisted."
      }
    on player clicks Shift_1 in Shift_GUI_Menu:
    - determine passively cancelled
    - adjust <player> send_to:server@shift1
    on player clicks Shift_2 in Shift_GUI_Menu:
    - determine passively cancelled
    - adjust <player> send_to:server@shift2
    on player clicks Shift_3 in Shift_GUI_Menu:
    - determine passively cancelled
    - adjust <player> send_to:server@shift3
    on player clicks Shift_4 in Shift_GUI_Menu:
    - determine passively cancelled
    - adjust <player> send_to:server@shift4
    on restart command:
    - if <context.server> && !<player.is_op> queue clear
    - determine cancelled passively
    - run safe_shutdown
    on stop command:
    - if <context.server> && !<player.is_op> queue clear
    - determine cancelled passively
    - run safe_shutdown
    on shutdown command:
    - if <context.server> && !<player.is_op> queue clear
    - determine cancelled passively
    - run safe_shutdown
    on weather rains in MainLobby:
    - determine cancelled
    on msg command:
    - define sender <player>
    - define target <server.match_player[<context.args.get[1]>||null>]||null>
    - flag <def[sender]> messager:<def[target]>
    - flag <def[target]> messager:<def[sender]>  
    - narrate "<&b><def[sender]> <&7>-> <&b>You<&7><&co> <context.args.space_separated>" targets:<def[target]>
    - narrate "<&b>You <&7>-> <&b><def[target]><&7><&co> <context.args.space_separated>" targets:<def[sender]>
    on reply command:
    - if !<player.has_flag[messager]> {
      - determine passively cancelled
      - narrate "<&c>No one has messaged you since you last logged in."
      - queue clear
      }
    - narrate "<&b><def[sender]> <&7>-> <&b>You<&7><&co> <context.args.space_separated>" targets:<player.flag[messager].as_player>
    - narrate "<&b>You <&7>-> <&b><player.flag[messager].as_player><&7><&co> <context.args.space_separated>" targets:<def[sender]>
    on player quit:
    - flag player messager:!
    - wait 1t
    - adjust <player> 'location:l@-54.5,52.1,-94.5,0,90,MainLobby'

##### TASKS #####
Player_Count_Refresh:
  type: task
  debug: false
  script:
    - while true:
      - foreach <bungee.list_servers>:
        - ~bungeetag <server.list_online_players.size.as_int> server:<def[value].name> save:player_count
        - flag server playercount.<def[value].name>:<entry[player_count].result>
      - wait 60s
SurvivalWhitelist: 
  type: task 
  debug: false 
  script: 
  - if <player.has_flag[whitelist.survival]> { 
    - queue clear 
    } 
  - ~bungeetag <player.is_whitelisted> server:survival save:whitelist 
  - flag player whitelist.survival:<entry[whitelist].result>
Player_Hide_Task:
    type: task
    debug: true
    speed: 0
    script:
      - take slot:2 from:<player.inventory>
      - give i@Player_Hider_Enabled quantity:1 to:<player.inventory> slot:2  
      - foreach <player.world.players.exclude[<player>].filter[is_op.not]> {
          - adjust <player> hide_entity:<def[value]>
        }   
Player_Show_Task:
    type: task
    debug: true
    speed: 0
    script:
      - take slot:2 from:<player.inventory>
      - give i@Player_Hider_Disabled quantity:1 to:<player.inventory> slot:2 
      - foreach <player.world.players.exclude[<player>].filter[is_op.not]> {
          - adjust <player> show_entity:<def[value]>
        }
safe_shutdown:
  type: task
  debug: false
  speed: 0
  script:
    - if <server.has_flag[already_restarting]> queue clear
    - flag server already_restarting duration:2m
    - announce "<&a><&l>This server will be restarting in <&e><&l>one minute<&a><&l>."
    - repeat 3:
      - playsound sound:ENTITY_ARROW_HIT_PLAYER <server.list_online_players> volume:1.5 pitch:0.7
      - wait 3t
    - repeat 1:
      - actionbar "<&a>Restarting in<&e> 60 <&a>seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 10s
      - actionbar "<&a>Restarting in<&e> 50 <&a>seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 10s
      - actionbar "<&a>Restarting in<&e> 40 <&a>seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 10s
      - actionbar "<&a>Restarting in<&e> 30 <&a>seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 10s
      - actionbar "<&a>Restarting in<&e> 20 <&a>seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 10s
    - repeat 10:
      - actionbar "<&a>Restarting in<&co> <&e><el@10.sub[<def[value]>].as_int><&a> seconds." targets:<server.list_online_players>
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 1s
    - repeat 3:
      - playsound sound:UI_BUTTON_CLICK <server.list_online_players> pitch:1.2
      - wait 3t
    - if <bungee.list_servers.contains[server@lobby]||false> && <bungee.server||null> != server@lobby {
      - announce "<&c>This server is restarting.<&nl><&c>Please try again in a minute."
      - kick <server.list_online_players> "reason:<&c>This server is restarting.<&nl><&c>Please try again in a minute."
      } else {
      - kick <server.list_online_players> "reason:<&c>This server is restarting.<&nl><&c>Please try again in a minute."
      }
    - flag server already_restarting:!
    - execute as_server "restart"

##### INVENTORIES AND ITEMS #####
Server_GUI_Menu:
    type: inventory
    title: <&3>Server List
    size: 9
    slots:
      - "[Filler] [Filler] [i@Survival[quantity=<server.flag[playercount.survival].as_int>;flags=li@hide_enchants]] [Filler] [i@Creative[quantity=<server.flag[playercount.creative].as_int>;flags=li@hide_enchants]] [Filler] [i@Shift[quantity=<server.flag[playercount.shift1].add[<server.flag[playercount.shift2]>].add[<server.flag[playercount.shift3]>].add[<server.flag[playercount.shift4]>].as_int>;flags=li@hide_enchants]] [Filler] [Filler]"     
Shift_GUI_Menu:
    type: inventory
    title: <&3>Server List
    size: 9
    Slots:
      - "[i@Shift_1[quantity=<server.flag[playercount.shift1]>;flags=li@hide_enchants]] [i@Shift_2[quantity=<server.flag[playercount.shift2]>;flags=li@hide_enchants]] [i@Shift_3[quantity=<server.flag[playercount.shift3]>;flags=li@hide_enchants]] [i@Shift_4[quantity=<server.flag[playercount.shift4]>;flags=li@hide_enchants]] [Filler] [Filler] [Filler] [Filler] [Filler]"
Server_Selector:
  type: item
  material: i@compass
  display name: <&3>Server Selector
  bound: true
Player_Hider_Disabled:
  type: item
  material: i@347
  display name: <&b>Player Hider <&e>- <&c>Disabled
  bound: true
Player_Hider_Enabled:
  type: item
  material: i@347
  display name: <&b>Player Hider <&e>- <&a>Enabled
  bound: true
Server_Store:
  type: item
  material: i@384
  display name: <&e>Server Store
  bound: true
Creative:
    type: item
    material: 271
    display name: <&2>Creative
    enchantments:
    - ARROW_INFINITE:1  
Survival:
    type: item
    material: 267
    display name: <&6>Survival
    enchantments:
    - ARROW_INFINITE:1
Shift:
    type: item
    material: quartz_ore
    display name: <&5>Shift
    enchantments:
    - ARROW_INFINITE:1  
Shift_1:
    type: item
    material: quartz_ore
    display name: <&5>Shift 1
    enchantments:
    - ARROW_INFINITE:1 
Shift_2:
    type: item
    material: quartz_ore
    display name: <&5>Shift 2
    enchantments:
    - ARROW_INFINITE:1
Shift_3:
    type: item
    material: quartz_ore
    display name: <&5>Shift 3
    enchantments:
    - ARROW_INFINITE:1  
Shift_4:
    type: item
    material: quartz_ore
    display name: <&5>Shift 4
    enchantments:
    - ARROW_INFINITE:1
Filler:
    type: item
    material: black_stained_glass_pane
StaffHammer:
    type: item
    material: diamond_axe
    display name: <&4>Staff Hammer

##### COMMANDS #####
HelpCommand:
  type: command
  name: help
  debug: false
  script:
  - narrate "<&b>Did you find a hacker or rule breaker? Report them here:"
  - narrate "<&e>http://xpcraft.com/forums/ban-reports.9/"
  - narrate "<&b>Found a bug? Report it here:"
  - narrate "<&e>http://xpcraft.com/forums/bug-reports.3/"
  - narrate "<&b>For help with games and all other server features, visit our forums:"
  - narrate "<&e>http://xpcraft.com/forums/"
MsgCommand:
  type: command
  name: message
  usage: /msg <player>
  aliases:
  - m
ReplyCommand:
  type: command
  name: message
  usage: /reply
  aliases:
  - r