Paste #54835: Test

Date: 2019/06/22 14:06:51 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#----------------------------
#DO NOT TOUCH THIS FILE
#----------------------------
BossRespawnRegsiter:
  type: task
  debug: false
  definitions: name|respawnLoc|respawnTimer|aMsg|dMsg|tpLoc

  script:
    - if <server.has_flag[bossRespawns].not>:
      - flag server bossRespawns:!|:<[name]>
    - else if <server.flag[bossRespawns].contains[<[name]>].not>:
      - flag server bossRespawns:|:<[name]>
    - flag server bosses.<[name]>.respawnLocation:<[respawnLoc]>
    - flag server bosses.<[name]>.respawnTimer:<[respawnTimer]>
    - flag server bosses.<[name]>.aliveMessage:<[aMsg]>
    - flag server bosses.<[name]>.deathMessage:<[dMsg]>
    - flag server bosses.<[name]>.teleportLocation:<[tpLoc]>
    - if <server.has_flag[bosses.<[name]>.status].not>:
      - flag server bosses.<[name]>.status:alive
    - if <server.has_flag[bosses.<[name]>.headName].not>:
      - chunkload <[respawnLoc].chunk> duration:10s
      - mythicspawn <[name]> <[respawnLoc]> save:mob
      - flag server bosses.<[name]>.headName:<entry[mob].spawned_mythicmob.entity_type.replace[_].to_titlecase>



BossRespawnHandler:
  type: world
  debug: false

  events:
    on mythicmob mob death:
      - if <server.flag[bossRespawns].contains[<context.mob.internal_name>]>:
        - flag server bosses.<context.mob.internal_name>.mob:!
        - flag server bosses.<context.mob.internal_name>.status:dead
        - define spawnLoc <server.flag[bosses.<context.mob.internal_name>.respawnLocation]>
        - announce "<server.flag[bosses.<context.mob.internal_name>.deathMessage]>"
        - wait <server.flag[bosses.<context.mob.internal_name>.respawnTimer]>
        - flag server bosses.<context.mob.internal_name>.status:alive
        - announce "<server.flag[bosses.<context.mob.internal_name>.aliveMessage]>"


    on server start:
      - foreach <server.flag[bossRespawns]>:
        - if <server.flag[bosses.<def[value]>.status]||dead> == dead:
          - flag server bosses.<[name]>.status:alive



bossAlive:
  type: command
  debug: false
  name: bossstat
  description: Checks the status of bosses
  usage: /bossstat
  aliases: '' 
  allowed help: ''
  script:
    - narrate "<&e>--------------"
    - narrate "<&e>Boss Statuses
    - narrate "<&e>--------------"
    - foreach <server.flag[bossRespawns]>:
      - if <server.flag[bosses.<def[value]>.status]> == dead:
        - narrate "<&e><def[value]>:<&sp><&4>Dead"
      - else:
        - narrate "<&e><def[value]>:<&sp><&a>Alive"

bossStatusCheck:
  type: command
  debug: false
  name: bosses
  description: Checks the status of bosses
  usage: /bosses
  aliases: '' 
  allowed help: ''
  script:
    - inventory open d:in@bossTeleportInventory


bossInventoryClick:
  type: world
  debug: true

  events:
    on player clicks in bossTeleportInventory:
      - if <context.item||air> != air:
        - define boss <context.item.nbt[bosses.bosshead]>
        - if <server.flag[bosses.<def[boss]>.mob]||null> == null && <server.flag[bosses.<def[boss]>.status]> == alive:
          - mythicspawn <def[boss]> <server.flag[bosses.<def[boss]>.respawnLocation]> save:mob
          - flag server bosses.<def[boss]>.mob:<entry[mob].spawned_mythicmob>
        - teleport <player> <server.flag[bosses.<def[boss]>.teleportLocation]>
      - determine cancelled

bossTeleportInventory:
  type: inventory
  debug: true

  title: <&4>Boss List
  size: 54
  procedural items: 
    - define list li@
    - foreach <server.flag[bossRespawns]>:
      - if <server.flag[bosses.<def[value]>.status]> == alive:
        - if <server.flag[bosses.<def[value]>.headName]||null> == "GIANT":
          - define item i@human_skull[skull_skin=MHF_ZOMBIE]
        - else if <server.flag[bosses.<def[value]>.headName]||null> != null:
          - define item i@human_skull[skull_skin=MHF_<server.flag[bosses.<def[value]>.headName]>]
        - else:
          - define item i@emerald_block
        - adjust <def[item]> nbt:li@bosses.bosshead/<def[value]> save:newitem
        - adjust <entry[newitem].result> "display_name:<&e><def[value]>" save:newitem
        - adjust <entry[newitem].result> "lore:<&e>Boss Status: <&a>Alive|<&a>Click to teleport." save:newitem
        - define list <def[list].include[<entry[newitem].result>]>
      - else:
        - define item i@redstone_block
        - adjust <def[item]> "display_name:<&e><def[value]>" save:newitem
        - adjust <entry[newitem].result> "lore:<&e>Boss Status: <&4>Dead" save:newitem
        - define list <def[list].include[<entry[newitem].result>]>
    - determine <def[list]>