· 7 years ago · Oct 13, 2018, 04:12 PM
1import:
2 org.bukkit.event.player.PlayerInteractEvent
3 org.bukkit.event.player.PlayerInteractEntityEvent
4 org.bukkit.event.block.BlockBreakEvent
5 org.bukkit.event.block.BlockPlaceEvent
6 org.bukkit.event.block.Action
7
8
9on script load:
10 if folder "plugins/LockIT" doesn't exists:
11 create folder "plugins/LockIT"
12 send "[LockIT] &fCreating folder..." to the console
13 if file "plugins/LockIT/config.yml" doesn't exists:
14 download from "https://bit.ly/2MXFaCN" to "plugins/LockIT/config.yml"
15 send "[LockIT] &fGenerating config.yml..." to the console
16 if file "plugins/LockIT/permissions.yml" doesn't exists:
17 download from "https://bit.ly/2QiZ355" to "plugins/LockIT/permissions.yml"
18 send "[LockIT] &fGenereating permissions.yml..." to the console
19 if file "plugins/LockIT/messages.yml" doesn't exists:
20 download from "https://bit.ly/2CCG42G" to "plugins/LockIT/messages.yml"
21 send "[LockIT] &fGenerating messages.yml..." to the console
22 send "[LockIT] &2DONE!!" to the console
23 send "" to the console
24 send "[LockIT] &fGrabbing settings from the config..." to the console
25 delete {lockIT::*}
26 set {lockIT::prefix} to skutil yaml value "prefix" from file "plugins/LockIT/config.yml"
27 set {lockIT::fastLock} to skutil yaml value "fastLock" from file "plugins/LockIT/config.yml"
28 set {lockIT::version} to skutil yaml value "version" from file "plugins/LockIT/config.yml"
29 #set {lockit::protectedItems::*} to skutil yaml list "protectedItems" from file "plugins/LockIT/config.yml"
30 send "[LockIT] &fGrabbing all messages..." to the console
31 set {lockIT::msgAlreadyLocked} to skutil yaml value "msgAlreadyLocked" from file "plugins/LockIT/messages.yml"
32 set {lockIT::msgLocked} to skutil yaml value "msgLocked" from file "plugins/LockIT/messages.yml"
33 set {lockIT::msgChestDenied} to skutil yaml value "msgChestDenied" from file "plugins/LockIT/messages.yml"
34 set {lockIT::msgDoorDenied} to skutil yaml value "msgDoorDenied" from file "plugins/LockIT/messages.yml"
35 set {lockIT::msgTableDenied} to skutil yaml value "msgTableDenied" from file "plugins/LockIT/messages.yml"
36 set {lockIT::msgFurnaceDenied} to skutil yaml value "msgFurnaceDenied" from file "plugins/LockIT/messages.yml"
37 set {lockIT::msgTrapdoorDenied} to skutil yaml value "msgTrapdoorDenied" from file "plugins/LockIT/messages.yml"
38 set {lockIT::msgUpdateSign} to skutil yaml value "msgUpdateSign" from file "plugins/LockIT/messages.yml"
39 set {lockIT::msgNoUpdateSign} to skutil yaml value "msgNoUpdateSign" from file "plugins/LockIT/messages.yml"
40 set {lockIT::msgSignDenied} to skutil yaml value "msgSignDenied" from file "plugins/LockIT/messages.yml"
41 set {lockIT::msgFixed} to skutil yaml value "msgFixed" from file "plugins/LockIT/messages.yml"
42 set {lockIT::msgSignUpdated} to skutil yaml value "msgSignUpdated" from file "plugins/LockIT/messages.yml"
43 send "[LockIT] &fGrabbing all permissions..." to the console
44 set {lockIT::useLockIT} to skutil yaml value "useLockIT" from file "plugins/LockIT/permissions.yml"
45 set {lockIT::bypassLocked} to skutil yaml value "bypassLocked" from file "plugins/LockIT/permissions.yml"
46 set {lockIT::adminLockIT} to skutil yaml value "adminLockIT" from file "plugins/LockIT/permissions.yml"
47 send "[LockIT] &2DONE! ENJOY!" to the console
48 send "[LockIT] You are running Version: &d%{lockIT::version}%" to the console
49 set {_verCheck} to text from "https://bit.ly/2NwSz43"
50 if {_verCheck} is not {lockIT::version}:
51 send "[LockIT] The most recent Version: &d%{lockIT::version}%" to the console
52
53
54# ---------------------------------------------------------------------------------------------------------------
55# Commands
56# ---------------------------------------------------------------------------------------------------------------
57command /lockit [<integer>] [<text>]:
58 trigger:
59 if arg 1 is not set:
60 if arg 2 is "help":
61 message "&4&m---------------------------------------------------"
62 message "%{lockIT::prefix}% &eby DroidVengeance"
63 message "&4&m---------------------------------------------------"
64 message " - &eTo edit a sign, rightclick and use:"
65 message " - &e/lockit <line number> <text>"
66 if player has permission "lockit.admin":
67 message " - &eTo turn on fastlock (shift+rightclick)"
68 message " - &3/lockit true / false"
69 message " - &eTo fix a door use:"
70 message " - &e/lockit fix"
71 if arg 2 is "fix":
72 loop blocks in radius 2 of target block:
73 loop-block = wall sign
74 line 1 of loop-block is "[LockIT]"
75 line 2 of loop-block = "%player%" or uuid of player
76 toggle target block
77 send "%colored {lockIT::prefix}% %colored {lockIT::msgFixed}%"
78 if arg 1 is set:
79 if arg 2 is not set:
80 set line arg 1 of {lockit::%player%::signEdit} to " "
81 send "%colored {lockIT::prefix}% %colored {lockIT::msgSignUpdated}%"
82 delete {lockit::%player%::signEdit}
83 stop
84 set line arg 1 of {lockit::%player%::signEdit} to arg 2
85 send "%colored {lockIT::prefix}% %colored {lockIT::msgSignUpdated}%"
86 delete {lockit::%player%::signEdit}
87
88
89
90# ---------------------------------------------------------------------------------------------------------------
91# Fastlock
92# ---------------------------------------------------------------------------------------------------------------
93on BlockPlaceEvent:
94 if event.getBlockPlaced() = wall sign:
95 {lockIT::fastLock} = true
96 loop blocks in radius 1 of event.getBlockPlaced():
97 if loop-block = chest or any door or any trapdoor or crafting table or furnace or any fence gate or enchanting table or anvil:
98 if event.getPlayer() has permission "%{lockIT::useLockIT}%" or "%{lockIT::bypassLocked}%":
99 close event.getPlayer()'s inventory
100 wait 3 ticks
101 set line 1 of event.getBlockPlaced() to "[LockIT]"
102 set line 2 of event.getBlockPlaced() to "%event.getPlayer()% %event.getPlayer()'s uuid%"
103 event.getPlayer().sendMessage("%colored {lockIT::prefix}% &6This item is now protected!")
104
105on sign edit:
106 if line 1 of block is "[LockIT]":
107 if player has permission "%{lockIT::useLockIT}%":
108 if line 2 of block contains "%player%" or uuid of event.getPlayer():
109 send "%colored {lockIT::prefix}% &6This item is now protected!"
110 else:
111 set block to air
112 send "%colored {lockIT::prefix}% &cYou don't have permission to do that!"
113
114
115# --------------------------------------------------------------------------------------------------------
116# Interacting with protected blocks
117# ---------------------------------------------------------------------------------------------------------------
118on PlayerInteractEvent:
119 if event.getClickedBlock() = chest:
120 loop blocks in radius 1 of event.getClickedBlock():
121 if loop-block = wall sign:
122 if line 1 of loop-block = "[LockIT]":
123 if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
124 cancel event
125 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
126 uncancel event
127 stop
128 if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
129 uncancel event
130 stop
131 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgChestDenied}%")
132 stop
133 else:
134 uncancel event
135 if event.getClickedBlock() = any door:
136 loop blocks in radius 2 of event.getClickedBlock():
137 if loop-block = wall sign:
138 if line 1 of loop-block = "[LockIT]":
139 if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
140 cancel event
141 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
142 uncancel event
143 if line 4 of loop-block = "[timer:1]":
144 wait 1 second
145 close event.getClickedBlock()
146 if line 4 of loop-block = "[timer:2]":
147 wait 2 second
148 close event.getClickedBlock()
149 if line 4 of loop-block = "[timer:3]":
150 wait 3 second
151 close event.getClickedBlock()
152 if line 4 of loop-block = "[timer:4]":
153 wait 4 second
154 close event.getClickedBlock()
155 if line 4 of loop-block = "[timer:5]":
156 wait 5 second
157 close event.getClickedBlock()
158 stop
159 if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
160 uncancel event
161 stop
162 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgDoorDenied}%")
163 stop
164 else:
165 uncancel event
166 if line 4 of loop-block = "[timer:1]":
167 wait 1 second
168 close event.getClickedBlock()
169 if line 4 of loop-block = "[timer:2]":
170 wait 2 second
171 close event.getClickedBlock()
172 if line 4 of loop-block = "[timer:3]":
173 wait 3 second
174 close event.getClickedBlock()
175 if line 4 of loop-block = "[timer:4]":
176 wait 4 second
177 close event.getClickedBlock()
178 if line 4 of loop-block = "[timer:5]":
179 wait 5 second
180 close event.getClickedBlock()
181 if event.getClickedBlock() = any trapdoor:
182 loop blocks in radius 1 of event.getClickedBlock():
183 if loop-block = wall sign:
184 if line 1 of loop-block = "[LockIT]":
185 if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
186 cancel event
187 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
188 uncancel event
189 stop
190 if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
191 uncancel event
192 stop
193 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgTrapdoorDenied}%")
194 stop
195 else:
196 uncancel event
197 if event.getClickedBlock() = crafting table:
198 loop blocks in radius 1 of event.getClickedBlock():
199 if loop-block = wall sign:
200 if line 1 of loop-block = "[LockIT]":
201 if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
202 cancel event
203 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
204 uncancel event
205 stop
206 if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
207 uncancel event
208 stop
209 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgTableDenied}%")
210 stop
211 else:
212 uncancel event
213 if event.getClickedBlock() = furnace:
214 loop blocks in radius 1 of event.getClickedBlock():
215 if loop-block = wall sign:
216 if line 1 of loop-block = "[LockIT]":
217 if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
218 cancel event
219 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
220 uncancel event
221 stop
222 if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
223 uncancel event
224 stop
225 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgfurnaceDenied}%")
226 stop
227 else:
228 uncancel event
229 else if event.getClickedBlock() = wall sign:
230 if line 1 of event.getClickedBlock() = "[LockIT]":
231 "%event.getAction()%" contains "RIGHT_CLICK"
232 if line 2 of event.getClickedBlock() does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
233 cancel event
234 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "%{lockIT::adminLockIT}%" or "lockit.admin.*":
235 uncancel event
236 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgUpdateSign}%")
237 set {lockit::%event.getPlayer()%::signEdit} to event.getClickedBlock()
238 stop
239 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgNoUpdateSign}%")
240 stop
241 else:
242 uncancel event
243 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgUpdateSign}%")
244 set {lockit::%event.getPlayer()%::signEdit} to event.getClickedBlock()
245
246
247# ---------------------------------------------------------------------------------------------------------------
248# Break Protection
249# ---------------------------------------------------------------------------------------------------------------
250on BlockBreakEvent:
251 if event.getBlock() = CHEST:
252 loop blocks in radius 1 of event.getBlock():
253 if loop-block = wall sign:
254 if line 1 of loop-block = "[LockIT]":
255 if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
256 cancel event
257 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgChestDenied}%")
258 else:
259 uncancel event
260 if event.getBlock() = any door:
261 loop blocks in radius 1 of event.getBlock():
262 if loop-block = wall sign:
263 if line 1 of loop-block = "[LockIT]":
264 if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
265 cancel event
266 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgDoorDenied}%")
267 else:
268 uncancel event
269 if event.getBlock() = any trapdoor:
270 loop blocks in radius 1 of event.getBlock():
271 if loop-block = wall sign:
272 if line 1 of loop-block = "[LockIT]":
273 if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
274 cancel event
275 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgTrapdoorDenied}%")
276 else:
277 uncancel event
278 if event.getBlock() = crafting table:
279 loop blocks in radius 1 of event.getBlock():
280 if loop-block = wall sign:
281 if line 1 of loop-block = "[LockIT]":
282 if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
283 cancel event
284 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgTableDenied}%")
285 else:
286 uncancel event
287 if event.getBlock() = furnace:
288 loop blocks in radius 1 of event.getBlock():
289 if loop-block = wall sign:
290 if line 1 of loop-block = "[LockIT]":
291 if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
292 cancel event
293 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgFurnaceDenied}%")
294 else:
295 uncancel event
296 else if event.getBlock() = wall sign:
297 if line 1 of event.getBlock() = "[LockIT]":
298 if line 2 of event.getBlock() != "%event.getPlayer()%" or uuid of event.getPlayer():
299 cancel event
300 if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
301 uncancel event
302 stop
303 event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgSignDenied}%")
304 stop
305 else:
306 uncancel event
307
308
309# ---------------------------------------------------------------------------------------------------------------
310# Hopper Protection
311# ---------------------------------------------------------------------------------------------------------------
312on place of hopper:
313 if block west of block above event-block is a wall sign:
314 line 1 of block west of block above event-block is "[LockIT]"
315 cancel event
316 send "&cYou can't place that below a protected chest."
317 if block east of block above event-block is a wall sign:
318 line 1 of block east of block above event-block is "[LockIT]"
319 cancel event
320 send "&cYou can't place that below a protected chest."
321 if block south of block above event-block is a wall sign:
322 line 1 of block south of block above event-block is "[LockIT]"
323 cancel event
324 send "&cYou can't place that below a protected chest."
325 if block north of block above event-block is a wall sign:
326 line 1 of block north of block above event-block is "[LockIT]"
327 cancel event
328 send "&cYou can't place that below a protected chest."