Date: 2019/06/22 14:06:51 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#----------------------------
#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]>