Date: 2017/02/16 19:12:36 UTC-08: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
cosmetic_handler_gui_handler:
type: world
debug: true
events:
on player clicks in cosmetic_handler_gui:
- determine cancelled passively
- define action <context.item.nbt[action]||null>
- choose <def[action]>:
- case open:
- define menu <context.item.nbt[menu]||null>
- if <def[menu]> != null {
- playsound <player> sound:UI_BUTTON_CLICK
- flag <player> cosmetic_handler.gui.current_menu:<def[menu]>
- run cosmetic_handler_open_gui def:<def[menu]>
}
- case perform:
- define cosmetic <context.item.nbt[cosmetic]||null>
- if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
- playsound <player> sound:UI_BUTTON_CLICK pitch:1.2
} else {
- playsound <player> sound:UI_BUTTON_CLICK pitch:0.8
}
- wait 1t
- ~run cosmetic_handler_toggle def:<def[cosmetic]> instantly
- run cosmetic_handler_open_gui def:<player.flag[cosmetic_handler.gui.current_menu]||null>
##
# cosmetic controllers
##
cosmetic_handler_toggle:
type: task
debug: true
speed: 0
script:
- define cosmetic <def[1]||null>
- if <def[cosmetic]> == null {
- debug error "No cosmetic specified!"
- queue clear
}
- if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
- ~run cosmetic_handler_enable_cosmetic def:<def[cosmetic]>
} else {
- ~run cosmetic_handler_disable_cosmetic def:<def[cosmetic]>
}
cosmetic_handler_enable_cosmetic:
type: task
debug: true
speed: 0
script:
- define cosmetic <def[1]||null>
- if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled]> {
- queue clear
}
- ~run cosmetic_handler_disable_all_cosmetics
- flag <player> cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled
- flag <player> cosmetic_handler.active_cosmetics:->:<def[cosmetic]>
- define flag cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled
- define category <s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.category]||null>
- flag <player> cosmetic_handler.gui.inventory.<def[category]>[<player.flag[cosmetic_handler.gui.caching_index_of.<def[category]>.<def[cosmetic]>]||0>]:<proc[cosmetic_gui_item].context[<def[cosmetic]>].escaped>
- define script "<s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.script name].as_script>"
- if "<def[script].list_keys[].contains[on enable]||false>" {
- inject <def[script]> "path:on enable"
}
cosmetic_handler_disable_cosmetic:
type: task
debug: true
speed: 0
script:
- define cosmetic <def[1]||null>
- if <player.has_flag[cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled].not> {
- queue clear
}
- flag <player> cosmetic_handler.cosmetic_states.<def[cosmetic]>.enabled:!
- flag <player> cosmetic_handler.active_cosmetics:<-:<def[cosmetic]>
- define category <s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.category]||null>
- flag <player> cosmetic_handler.gui.inventory.<def[category]>[<player.flag[cosmetic_handler.gui.caching_index_of.<def[category]>.<def[cosmetic]>]||0>]:<proc[cosmetic_gui_item].context[<def[cosmetic]>].escaped>
- define script "<s@cosmetic_registry.yaml_key[cosmetics.<def[cosmetic]>.script name].as_script>"
- if "<def[script].list_keys[].contains[on disable]||false>" {
- inject <def[script]> "path:on disable"
}
cosmetic_handler_disable_all_cosmetics:
type: task
debug: true
speed: 0
script:
- foreach <player.flag[cosmetic_handler.active_cosmetics]||li@>:
- ~run cosmetic_handler_disable_cosmetic def:<def[value]>
- wait 1t