Date: 2015/08/10 12:40:54 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
DoorKeys:
type: world
events:
on player clicks block:
- if <context.location.material> !contains "door" {
- queue clear
}
- foreach <server.list_flags> {
- if <fl@%value%.as_list.contains[<context.location.block>]> {
- goto is_locked
}
- if <def[loop_index]> == <server.list_flags.size> {
- queue clear
}
}
- mark is_locked
- foreach <server.list_flags> {
- if <fl@%value%.as_list.contains[<context.location.block>]> {
- define tier <def[value].after[T]>
}
}
- if "!<context.item.display.contains[Tier <def[tier]>]>" {
- narrate "<red>You need to use the tier <def[tier]> key to open this!"
- determine cancelled
} else {
- narrate "<green>You have used the tier <def[tier]> key!"
}
# /doorkey tier reset
# /doorkey tier list
# /doorkey tier create
# /doorkey tier edit display|material|lore|recipe value
# /doorkey tier give player
# lore: 1|2|3|4
# recipe: 1|2|3|4|5|6|7|8|9
# - i@1|i@2|i@3
# - i@4|i@5|i@6
# - i@7|i@8|i@9
on doorkey command:
- if <player>
- determine fulfilled passively
- define tier <context.args.get[1]>
- choose <context.args.get[2]>:
- case "list":
- narrate "<green>Tier <def[tier]> door keys are currently at<&co>"
- narrate "<green><server.flag[doorkeys_t<def[tier]>]>"
- queue clear
- case "reset":
- flag server doorkeys_t<def[tier]>:none
- narrate "<green>Tier <def[tier]> door keys reset!"
- queue clear
- case "create":
- if !<server.has_file[/scripts/doorkeys.dscript]> {
- yaml create id:doorkeys
- yaml savefile:/scripts/doorkeys.dscript id:doorkeys
}
- yaml load:/scripts/doorkeys.dscript id:doorkeys
- yaml set <def[tier]>.type:item id:doorkeys
- yaml set "<def[tier]>.display name:<def[tier]>" id:doorkeys
- yaml set "<def[tier]>.material:stone" id:doorkeys
- narrate "<green><def[tier]> key created!"
- queue clear
- case "edit":
- if !<yaml[doorkeys].contains[<def[tier]>]> {
- narrate "<red>Key not found!"
- queue clear
}
- if <context.args.get[4]> == null {
- narrate "<red>Please enter a value!"
- queue clear
}
- yaml load:/scripts/doorkeys.dscript id:doorkeys
- define value <context.args.get[4]>
- choose <context.args.get[3]>:
- case "display":
- yaml set "<def[tier]>.display name:<def[value]>" id:doorkeys
- yaml savefile:/scripts/doorkeys.dscript id:doorkeys
- narrate "<green>Display of Key <def[tier]> set to<&co> <def[value]>!"
- case "material":
- yaml set <def[tier]>.material:<def[value]> id:doorkeys
- yaml savefile:/scripts/doorkeys.dscript id:doorkeys
- narrate "<green>Display of Key <def[tier]> set to<&co> <def[value]>!"
- case "lore":
- yaml set <def[tier]>.lore:li@<def[value]> id:doorkeys
- yaml savefile:/scripts/doorkeys.dscript id:doorkeys
- narrate "<green>Display of Key <def[tier]> set to<&co> <def[value]>!"
- case "recipe":
- if <def[value].as_list.size> > 9 {
- narrate "<red>Entered too many items!"
- queue clear
} else if <def[value].as_list.size> < 9 {
- narrate "<red>Not enough items entered!"
- queue clear
} else {
- yaml set <def[tier]>.recipe:->:i@<def[value].get[1]><&pipe>i@<def[value].get[3]><&pipe>i@<def[value].get[3]> id:doorkeys
- yaml set <def[tier]>.recipe:->:i@<def[value].get[4]><&pipe>i@<def[value].get[5]><&pipe>i@<def[value].get[6]> id:doorkeys
- yaml set <def[tier]>.recipe:->:i@<def[value].get[7]><&pipe>i@<def[value].get[8]><&pipe>i@<def[value].get[9]> id:doorkeys
- yaml savefile:/scripts/doorkeys.dscript id:doorkeys
- inventory open origin in@workbench
- narrate "<green>Display of Key <def[tier]> set to<&co> <def[value]>!"
}
- queue clear
- if <player.location.cursor_on[10].above.material> contains "door" {
- define otherblock <player.location.cursor_on[10].above>
- define text "& <player.location.cursor_on[10].above>"
} else if <player.location.cursor_on[10].below.material> contains "door" {
- define otherblock <player.location.cursor_on[10].below>
- define text "& <player.location.cursor_on[10].below>"
} else {
- define otherblock none
}
- if <server.flag[doorkeys_t<def[tier]>].as_list> contains <player.location.cursor_on[10]> {
- flag server doorkeys_t<def[tier]>:<-:<player.location.cursor_on[10]>
- if <def[otherblock]> !== "none" {
- flag server doorkeys_t<def[tier]>:<-:<def[otherblock]>
}
- narrate "<red><player.location.cursor_on[10].simple> <def[otherblock].simple> removed from the Tier <def[tier]> Door list!"
} else {
- flag server doorkeys_t<def[tier]>:->:<player.location.cursor_on[10]>
- if <def[otherblock]> !== "none" {
- flag server doorkeys_t<def[tier]>:->:<def[otherblock]>
}
- narrate "<green><player.location.cursor_on[10].simple> & <def[otherblock].simple> added to the Tier <def[tier]> Door list!"
}
Tier1:
type: item
material: stone
display name: <aqua>Key Tier 1!
lore:
- lore 1
- lore 2
recipe:
- i@stone|i@air|i@air
- i@diamond|i@air|i@air
- i@stone|i@air|i@air
Tier2:
type: item
material: stone
display name: <blue>Key Tier 2!
lore:
- lore 1
- lore 2
recipe:
- i@stone|i@air|i@air
- i@diamond|i@air|i@air
- i@stone|i@air|i@air