· 8 years ago · Jan 03, 2018, 05:08 PM
1options:
2 prefix: &c&lAdv&4Vaults&8»
3 headerfooter: &7&m-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
4 version: 1.2
5
6on load:
7 delete {itemlist::*}
8 add diamond to {itemlist::*}
9 add emerald to {itemlist::*}
10 add ender chest to {itemlist::*}
11 add bookshelf to {itemlist::*}
12 add netherrack to {itemlist::*}
13 add blaze rod to {itemlist::*}
14 add crafting table to {itemlist::*}
15 add obsidian to {itemlist::*}
16 add furnace to {itemlist::*}
17 add enchantment table to {itemlist::*}
18 add jukebox to {itemlist::*}
19 add redstone to {itemlist::*}
20 add iron ingot to {itemlist::*}
21 add gold ingot to {itemlist::*}
22 add sea lantern to {itemlist::*}
23 add diamond sword to {itemlist::*}
24 add diamond chestplate to {itemlist::*}
25 add water bucket to {itemlist::*}
26 add lava bucket to {itemlist::*}
27 add book to {itemlist::*}
28 add compass to {itemlist::*}
29 add clock to {itemlist::*}
30 add steak to {itemlist::*}
31 add ender pearl to {itemlist::*}
32 add chest to {itemlist::*}
33 add brewing stand item to {itemlist::*}
34 add nether star to {itemlist::*}
35
36function space(p: Player, n: Number, text: String):
37 message "{@headerfooter}" to {_p}
38 loop {_n} times:
39 message "" to {_p}
40 message "%{_text}%" to {_p}
41 loop {_n} times:
42 message "" to {_p}
43 message "{@headerfooter}" to {_p}
44
45on chat:
46 if {advvaults.chat.%uuid of player%} is set:
47 space(player, 1, " &7Vault name has been &cchanged &7to %colored message%")
48 set {advvaults.name.%uuid of player%::%{advvaults.chat.%uuid of player%}%} to "%colored message%"
49 delete {advvaults.chat.%uuid of player%}
50 cancel event
51
52function permissionsHeader(i: Integer = 1):
53 write "## Custom Permissions can be created with their own minimum and maximum vaults" at line 1 to file "plugins/AdvancedVaults/permissions.yml"
54 write "## Players with each permissions with have the miniumum vaults available to them. And up to the maximum available for purchase." at line 2 to file "plugins/AdvancedVaults/permissions.yml"
55 write "## Price of the purchasable vaults can be edited in the config.yml" at line 3 to file "plugins/AdvancedVaults/permissions.yml"
56 write "## Players with permission 'advancedvaults.open' will gain the default min and max." at line 4 to file "plugins/AdvancedVaults/permissions.yml"
57 write "## " at line 5 to file "plugins/AdvancedVaults/permissions.yml"
58 write "## Use Example format below" at line 6 to file "plugins/AdvancedVaults/permissions.yml"
59 write "## " at line 7 to file "plugins/AdvancedVaults/permissions.yml"
60 write "## permissions:" at line 8 to file "plugins/AdvancedVaults/permissions.yml"
61 write "## example-name:" at line 9 to file "plugins/AdvancedVaults/permissions.yml"
62 write "## min: 5" at line 10 to file "plugins/AdvancedVaults/permissions.yml"
63 write "## max: 10" at line 11 to file "plugins/AdvancedVaults/permissions.yml"
64 write "## rows: 4" at line 12 to file "plugins/AdvancedVaults/permissions.yml"
65 write "## " at line 13 to file "plugins/AdvancedVaults/permissions.yml"
66 write "## Permission: 'advancedvaults.open.example-name'" at line 14 to file "plugins/AdvancedVaults/permissions.yml"
67 write "## " at line 15 to file "plugins/AdvancedVaults/permissions.yml"
68
69function configHeader(i: Integer = 1):
70 write "## Thank you for using AdvancedVaults | Don't forget to leave a review!" at line 1 to file "plugins/AdvancedVaults/config.yml"
71 write "## All below options are customizable" at line 2 to file "plugins/AdvancedVaults/config.yml"
72 write "## " at line 3 to file "plugins/AdvancedVaults/config.yml"
73
74function configGenerate(i: Integer = 1):
75 set yaml value "settings.vault-price" of file "plugins/AdvancedVaults/config.yml" to 10000
76
77function defaultGenerate(i: Integer = 1):
78 if directory "plugins/AdvancedVaults" doesn't exist:
79 create directory "plugins/AdvancedVaults"
80 if file "plugins/AdvancedVaults/permissions.yml" doesn't exist:
81 create file "plugins/AdvancedVaults/permissions.yml"
82 permissionsHeader()
83 set yaml value "permissions.default.min" of file "plugins/AdvancedVaults/permissions.yml" to 1
84 set yaml value "permissions.default.max" of file "plugins/AdvancedVaults/permissions.yml" to 9
85 set yaml value "permissions.default.rows" of file "plugins/AdvancedVaults/permissions.yml" to 6
86
87
88function vaultMin(p: Player) :: Number:
89 set {_sep} to "%system property file separator%"
90 if dir "plugins%{_sep}%AdvancedVaults" exists:
91 set {_file} to "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
92 set {_default} to yaml value "permissions.default.min" from file "%{_file}%"
93 if {_default} is not set:
94 defaultGenerate()
95 set {_min} to yaml value "permissions.default.min" from file "%{_file}%"
96 loop yaml nodes "permissions" from file "%{_file}%":
97 if loop-value is not "default":
98 if {_p} has permission "advancedvaults.open.%loop-value%":
99 set {_temp} to yaml value "permissions.%loop-value%.min" from file "%{_file}%"
100 if {_temp} > {_min}:
101 set {_min} to {_temp}
102 return {_min}
103 else:
104 defaultGenerate()
105 set {_min} to yaml value "permissions.default.min" from file "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
106 return {_min}
107
108
109function vaultMax(p: Player) :: Number:
110 set {_sep} to "%system property file separator%"
111 if dir "plugins%{_sep}%AdvancedVaults" exists:
112 set {_file} to "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
113 set {_default} to yaml value "permissions.default.max" from file "%{_file}%"
114 if {_default} is not set:
115 defaultGenerate()
116 set {_max} to yaml value "permissions.default.max" from file "%{_file}%"
117 loop yaml nodes "permissions" from file "%{_file}%":
118 if loop-value is not "default":
119 if {_p} has permission "advancedvaults.open.%loop-value%":
120 set {_temp} to yaml value "permissions.%loop-value%.max" from file "%{_file}%"
121 if {_temp} > {_max}:
122 set {_max} to {_temp}
123 return {_max}
124 else:
125 defaultGenerate()
126 set {_max} to yaml value "permissions.default.max" from file "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
127 return {_max}
128
129function vaultRows(p: Player) :: Number:
130 set {_sep} to "%system property file separator%"
131 if dir "plugins%{_sep}%AdvancedVaults" exists:
132 set {_file} to "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
133 set {_default} to yaml value "permissions.default.rows" from file "%{_file}%"
134 if {_default} is not set:
135 defaultGenerate()
136 set {_max} to yaml value "permissions.default.rows" from file "%{_file}%"
137 loop yaml nodes "permissions" from file "%{_file}%":
138 if loop-value is not "default":
139 if {_p} has permission "advancedvaults.open.%loop-value%":
140 set {_temp} to yaml value "permissions.%loop-value%.rows" from file "%{_file}%"
141 if {_temp} > {_max}:
142 set {_max} to {_temp}
143 return {_max}
144 else:
145 defaultGenerate()
146 set {_max} to yaml value "permissions.default.rows" from file "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
147 return {_max}
148
149function vaultLimits(p: Player):
150 if {_p} has permission "advancedvaults.open":
151 set {_uuid} to uuid of {_p}
152 set {advvaults.max::%{_uuid}%} to vaultMax({_p})
153 set {advvaults.min::%{_uuid}%} to vaultMin({_p})
154 set {advvaults.rows::%{_uuid}%} to vaultRows({_p})
155 if {advvaults.min::%{_uuid}%} > {advvaults.max::%{_uuid}%}:
156 set {advvaults.min::%{_uuid}%} to {advvaults.max::%{_uuid}%}
157 if {advvaults.owned::%{_uuid}%} is not set:
158 set {advvaults.owned::%{_uuid}%} to {advvaults.min::%{_uuid}%}
159 if {advvaults.rows::%{_uuid}%} > 6:
160 set {advvaults.rows::%{_uuid}%} to 6
161 if {advvaults.rows::%{_uuid}%} < 1:
162 set {advvaults.rows::%{_uuid}%} to 1
163
164function vaultOpen(p: OfflinePlayer, n: Number, a: Player):
165 set {_u} to uuid of {_p}
166 if {advvaults.name.%{_u}%::%{_n}%} is not set:
167 set {_GUIname} to "&c&lVault %{_n}%"
168 else:
169 set {_GUIname} to "%{advvaults.name.%{_u}%::%{_n}%}%"
170
171 if {advvaults.rows::%{_u}%} is not set:
172 set {_sep} to "%system property file separator%"
173 set {_file} to "plugins%{_sep}%AdvancedVaults%{_sep}%permissions.yml"
174 set {_rows} to yaml value "permissions.default.rows" from file "%{_file}%"
175 else:
176 set {_rows} to {advvaults.rows::%{_u}%}
177 create a gui with virtual chest with size {_rows} named "%{_GUIname}%":
178 run when close:
179 set {advvaults.items.%{_u}%.%{_n}%::*} to all items of gui-inventory
180 if {_a} is not {_p}:
181 space({_a}, 1, " &cChanges to &4%{_p}%'s Vault &chave been saved")
182 open last created gui to {_a}
183 set {_x} to 0
184 loop {advvaults.items.%{_u}%.%{_n}%::*}:
185 set slot {_x} of {_a}'s current inventory to loop-value
186 add 1 to {_x}
187
188function vaultEdit(p: Player, n: Number):
189 set {_u} to uuid of {_p}
190 if {advvaults.name.%{_u}%::%{_n}%} is not set:
191 set {_GUIname} to "&c&lEdit Vault %{_n}%"
192 else:
193 set {_GUIname} to "&c&lEdit %{advvaults.name.%{_u}%::%{_n}%}%"
194 create a gui with virtual chest with size 6 named "%{_GUIname}%":
195 make gui slot (integers from 0 to 8) with black stained glass pane named "&0"
196 loop {itemlist::*}:
197 set {_item} to loop-value
198 make gui slot (loop-index parsed as number) + 8 with loop-value named "&7Change Icon to &c&l%loop-value%" with lore "||&8Click &7to select":
199 set {advvaults.icon.%{_u}%::%{_n}%} to {_item}
200# space({_p}, 1, " &7The item for &c&lVault %{_n}% &7has been set to &c&l%{_item}%")
201 set {_page} to rounded up {_n}/36
202 advVaultMenu({_p}, {_page})
203 make gui slot (integers from 45 to 53) with black stained glass pane named "&0"
204 make gui slot 52 with barrier named "&c&lClear Vault":
205 delete {advvaults.items.%{_u}%.%{_n}%::*}
206 space({_p}, 1, " &7You have &ccleared Vault %{_n}%")
207 close {_p}'s inventory
208 make gui slot 46 with book and quill named "&c&lRename Vault" with lore "&7&m-------------||||&8Left-Click &7to rename Vault||&4Right-Click &cto reset name||||&7&m-------------":
209 if gui-click-type is left mouse button:
210 space({_p}, 1, " &c&lPlease type a new name in chat. &7Colors can be used.")
211 set {advvaults.chat.%{_u}%} to {_n}
212 close {_p}'s inventory
213 if gui-click-type is right mouse button:
214 delete {advvaults.name.%{_u}%::%{_n}%}
215 close {_p}'s inventory
216 set {_page} to rounded up {_n}/36
217 advVaultMenu({_p}, {_page})
218 open last created gui to {_p}
219
220
221function rowsVault(page: Number, size: Number, num: Number) :: Number:
222 if {_num} > ({_page}*36):
223 return 4
224 else:
225 set {_num} to rounded up ({_num} - ({_page}-1)*36)/9
226 return {_num}
227
228
229function advVaultMenu(p: Player, page: Number):
230 set {_u} to uuid of {_p}
231 if {advvaults.max::%{_u}%} is set:
232 set {_mxPg} to rounded up ({advvaults.max::%{_u}%}/36)
233 if {_mxPg} is less than 1:
234 set {_mxPg} to 1
235 set {_max} to {advvaults.max::%{_u}%}
236 set {_min} to {advvaults.min::%{_u}%}
237 set {_owned} to {advvaults.owned::%{_u}%}
238 set {_rows} to rowsVault({_page}, 36, {advvaults.max::%{_u}%}) + 2
239 create a gui with virtual chest with size {_rows} named "&c&lAdv&4Vaults&8â– &7%{_page}%&8/&7%{_mxPg}%":
240 make gui slot (integers from 0 to 8) with black stained glass pane named "&0"
241 loop ({_max} - ({_page}-1)*36) times:
242 set {_n} to loop-number + ({_page}-1)*36
243 if {advvaults.icon.%{_u}%::%{_n}%} is set:
244 set {_item} to {advvaults.icon.%{_u}%::%{_n}%}
245 else:
246 set {_item} to chest
247 if {_n} <= {_owned}:
248 if {advvaults.name.%{_u}%::%{_n}%} is not set:
249 set {_name} to "&c&lVault: &8&l%{_n}%"
250 else:
251 set {_name} to "&c&lVault: &8&l%{advvaults.name.%{_u}%::%{_n}%}%"
252 make gui slot (loop-number + 8) with {_item} named "%{_name}%" with lore "&7&m-------------||||&c&l➥&4&lContains: &7%size of {advvaults.items.%{_u}%.%{_n}%::*}%||||&8Left-Click &7to open vault||&4Right-Click &cto edit vault name/item||||&7&m-------------":
253 if gui-click-type is left mouse button:
254 vaultOpen({_p}, {_n}, {_p})
255 else if gui-click-type is right mouse button:
256 vaultEdit({_p}, {_n})
257 else:
258 set {_price} to yaml value "settings.vault-price" from file "plugins/AdvancedVaults/config.yml"
259 make gui slot (loop-number + 8) with barrier named "&c&lLocked Vault" with lore "&7&m-------------||||&8&lPurchase Vault for &a&l$%{_price}%||||&7&m-------------":
260 if {_p}'s balance >= {_price}:
261 remove {_price} from {_p}'s balance
262 add 1 to {advvaults.owned::%{_u}%}
263 advVaultMenu({_p}, 1)
264 else:
265 close {_p}'s inventory
266 space({_p}, 1, " &c&lInsufficient Funds to purchase this Vault")
267
268 if {_rows} is between 3 and 6:
269 make gui slot (integers from (9 * {_rows}) - 9 to (9 * {_rows}) - 1) with black stained glass pane named "&0"
270 if {_page} > 1:
271 make gui slot (9 * {_rows}) - 9 with skull of "MHF_ArrowLeft" parsed as offline player named "&c« &4Previous Page":
272 advVaultMenu({_p}, {_page} - 1)
273 if ({advvaults.max::%{_u}%} - {_page}*36) > 0: #Check if there is values for next pages
274 make gui slot 53 with skull of "MHF_ArrowRight" parsed as offline player named "&2Next Page &a»":
275 advVaultMenu({_p}, {_page} + 1)
276 open last created gui to {_p}
277 else:
278 send "{@prefix} &7You have no access to &cany vaults." to {_p}
279
280on load:
281 if directory "plugins/AdvancedVaults" doesn't exist:
282 create directory "plugins/AdvancedVaults"
283 if file "plugins/AdvancedVaults/permissions.yml" doesn't exist:
284 create file "plugins/AdvancedVaults/permissions.yml"
285 permissionsHeader()
286 defaultGenerate()
287 if file "plugins/AdvancedVaults/config.yml" doesn't exist:
288 create file "plugins/AdvancedVaults/config.yml"
289 configHeader()
290 configGenerate()
291
292#Vault Command
293#[<text>] [<integer>] [<text>]:
294
295function vaultHelpMenu(p: Player):
296 message "{@headerfooter}" to {_p}
297 message " " to {_p}
298 message " &c/vault &8| &7Opens vault menu to player" to {_p}
299 message " &c/vault open <id> &8| Open specific vault to player" to {_p}
300 message " &c/vault open <id> <player> &8| Admin can open another players vault" to {_p}
301 message " " to {_p}
302 message "{@headerfooter}" to {_p}
303
304command /vault [<text>] [<number>] [<offlineplayer=%player%>]:
305 aliases: /chest, /playervault, /vaults, /pv, /advancedvaults, /advancedvault, /backpack
306 description: A place to store your items.
307 permission: advancedvaults.open
308 permission message: {@prefix} &cYou do not have permission to use this command.
309 trigger:
310 if arg 1 is not set:
311 vaultLimits(player)
312 wait 2 ticks
313 advVaultMenu(player, 1)
314
315 else if arg 1 is "open":
316 if arg 2 is set:
317 if arg 3 is player:
318 vaultLimits(player)
319 if arg 2 <= {advvaults.max::%uuid of player%}:
320 if arg 2 <= {advvaults.owned::%uuid of player%}:
321 vaultOpen(player, arg 2, player)
322 else:
323 message "{@prefix} &7You &cdo not &7own &cVault %arg 2%"
324 else:
325 message "{@prefix} &7You &cdo not &7have access to &cVault %arg 2%"
326 else if player has permission "advancedvaults.admin.open":
327 if arg 3 is online:
328 vaultLimits(arg 3)
329 if {advvaults.min::%uuid of arg 3%} is set:
330 if arg 2 <= {advvaults.max::%uuid of player%}:
331 if arg 2 <= {advvaults.owned::%uuid of player%}:
332 vaultOpen(arg 3, arg 2, player)
333 else:
334 message "{@prefix} &7%arg 3% &cdoes not &7own &cVault %arg 2%"
335 else:
336 message "{@prefix} &cVault %arg 2% &7does not exist for &c%arg 3%"
337 else:
338 message "{@prefix} &c%arg 3% &7has no vaults."
339 else if arg 1 is "help":
340 vaultHelpMenu(player)
341 else:
342 vaultHelpMenu(player)
343
344
345# else if arg 1 is "clear":