LockITv2.3.9.sk

Created by DroidVengeance

Other available versions. Ordered by newest to oldest versions:

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

import:
	org.bukkit.event.player.PlayerInteractEvent
	org.bukkit.event.player.PlayerInteractEntityEvent
	org.bukkit.event.block.BlockBreakEvent
	org.bukkit.event.block.BlockPlaceEvent
	org.bukkit.event.block.Action



on script load:
	if directory "plugins/LockIT" doesn't exist:
		skutil create directory "plugins/LockIT"
		send "[LockIT] &fCreating folder..." to the console
	if file "plugins/LockIT/config.yml" doesn't exist:
		skutil download file from "https://bit.ly/2z30IEL" to file "plugins/LockIT/config.yml"
		send "[LockIT] &fGenerating config.yml..." to the console
	if file "plugins/LockIT/permissions.yml" doesn't exist:
		skutil download file from "https://bit.ly/2TJ0USQ" to file "plugins/LockIT/permissions.yml"
		send "[LockIT] &fGenerating permissions.yml..." to the console
	if file "plugins/LockIT/messages.yml" doesn't exist:
		skutil download file from "https://bit.ly/2NkRvjc" to file "plugins/LockIT/messages.yml"
		send "[LockIT] &fGenerating messages.yml..." to the console
		send "[LockIT] &2DONE!!" to the console
		send "" to the console
	send "[LockIT] &fGrabbing settings from the config..." to the console
	delete {lockIT::*}
	set {lockIT::prefix} to skutil yaml value "prefix" from file "plugins/LockIT/config.yml"
	set {lockIT::fastLock} to skutil yaml value "fastLock" from file "plugins/LockIT/config.yml"
	set {lockIT::version} to skutil yaml value "version" from file "plugins/LockIT/config.yml"
	set {lockit::protectedItems::*} to skutil yaml list "protectedItems" from file "plugins/LockIT/config.yml"
	send "[LockIT] &fGrabbing all messages..." to the console
	set {lockIT::msgAlreadyLocked} to skutil yaml value "msgAlreadyLocked" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgLocked} to skutil yaml value "msgLocked" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgOtherDenied} to skutil yaml value "msgOtherDenied" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgUpdateSign} to skutil yaml value "msgUpdateSign" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgNoUpdateSign} to skutil yaml value "msgNoUpdateSign" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgSignDenied} to skutil yaml value "msgSignDenied" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgFixed} to skutil yaml value "msgFixed" from file "plugins/LockIT/messages.yml"
	set {lockIT::msgSignUpdated} to skutil yaml value "msgSignUpdated" from file "plugins/LockIT/messages.yml"
	send "[LockIT] &fGrabbing all permissions..." to the console
	set {lockIT::useLockIT} to skutil yaml value "useLockIT" from file "plugins/LockIT/permissions.yml"
	set {lockIT::bypassLocked} to skutil yaml value "bypassLocked" from file "plugins/LockIT/permissions.yml"
	set {lockIT::adminLockIT} to skutil yaml value "adminLockIT" from file "plugins/LockIT/permissions.yml"
	send "[LockIT] &2DONE! ENJOY!" to the console
	send "[LockIT] You are running Version: &d%{lockIT::version}%" to the console
	set {_verCheck} to skutil line 1 from url "https://bit.ly/2ujmO3y"
	if {_verCheck} is not {lockIT::version}:
		send "[LockIT] The most recent Version: &d%{_verCheck}%" to the console


# ---------------------------------------------------------------------------------------------------------------
# Commands
# ---------------------------------------------------------------------------------------------------------------
command /lockit [<integer>] [<text>]:
	trigger:
		if arg 1 is not set:
			if arg 2 is "help":
				message "&4&m---------------------------------------------------"
				message "%{lockIT::prefix}% &eby DroidVengeance"
				message "&4&m---------------------------------------------------"
				message "  - &eTo edit a sign, rightclick and use:"
				message "    - &e/lockit <line number> <text>"
				if player has permission "lockit.admin":
					message "  - &eTo turn on fastlock (shift+rightclick)"
					message "    - &3/lockit true / false"
				message "  - &eTo fix a door use:"
				message "    - &e/lockit fix"
			if arg 2 is "fix":
				loop blocks in radius 2 of target block:
					loop-block = wall sign
					line 1 of loop-block is "[LockIT]"
					line 2 of loop-block = "%player%" or uuid of player	
					toggle target block
					send "%colored {lockIT::prefix}% %colored {lockIT::msgFixed}%"
			if arg 2 is "fastlock":
				if {lockIT::%player%::fastLock} is not set:
					set {lockIT::%player%::fastLock} to false
					send "%colored {lockIT::prefix}% &9Fastlock &6is turned &cOFF"
					stop
				if {lockIT::%player%::fastLock} is true:
					set {lockIT::%player%::fastLock} to false
					send "%colored {lockIT::prefix}% &9Fastlock &6is turned &cOFF"
					stop
				if {lockIT::%player%::fastLock} is false:
					set {lockIT::%player%::fastLock} to true
					send "%colored {lockIT::prefix}% &9Fastlock &6is turned &aON"
					stop
		if arg 1 is set:
			if arg 2 is not set:
				set line arg 1 of {lockit::%player%::signEdit} to " "
				send "%colored {lockIT::prefix}% %colored {lockIT::msgSignUpdated}%"
				delete {lockit::%player%::signEdit}
				stop
			set line arg 1 of {lockit::%player%::signEdit} to arg 2
			send "%colored {lockIT::prefix}% %colored {lockIT::msgSignUpdated}%"
			delete {lockit::%player%::signEdit}

command /lockitdebug:
	trigger:
		# Code here
		loop {lockit::protectedItems::*}:
			send "%loop-value%"
			set {_item} to loop-value parsed as an item
			give {_item} to the player

# ---------------------------------------------------------------------------------------------------------------
# Fastlock
# ---------------------------------------------------------------------------------------------------------------
on BlockPlaceEvent:
	if event.getBlockPlaced() = any wall sign:
		{lockIT::fastLock} = true
		if {lockIT::%event.getPlayer()%::fastLock} is not set:
			loop blocks in radius 1 of event.getBlockPlaced():
				loop {lockit::protectedItems::*}:
					set {_item} to loop-value-2 parsed as an item
					if loop-block = {_item}:
						if event.getPlayer() has permission "%{lockIT::useLockIT}%" or "%{lockIT::bypassLocked}%":
							close event.getPlayer()'s inventory
							wait 3 ticks
							set line 1 of event.getBlockPlaced() to "[LockIT]"
							set line 2 of event.getBlockPlaced() to "%event.getPlayer()%"
							event.getPlayer().sendMessage("%colored {lockIT::prefix}% &6This item is now protected!")
							stop
		if {lockIT::%event.getPlayer()%::fastLock} is true:
			loop blocks in radius 1 of event.getBlockPlaced():
				loop {lockit::protectedItems::*}:
					set {_item} to loop-value-2 parsed as an item
					if loop-block = {_item}:
						if event.getPlayer() has permission "%{lockIT::useLockIT}%" or "%{lockIT::bypassLocked}%":
							close event.getPlayer()'s inventory
							wait 3 ticks
							set line 1 of event.getBlockPlaced() to "[LockIT]"
							set line 2 of event.getBlockPlaced() to "%event.getPlayer()%"
							event.getPlayer().sendMessage("%colored {lockIT::prefix}% &6This item is now protected!")
							stop
		else:
			wait 1 ticks
			stop
			
on sign edit:
	if line 1 of block is "[LockIT]":
		if player has permission "%{lockIT::useLockIT}%":
			if line 2 of block contains "%player%" or uuid of event.getPlayer():
				send "%colored {lockIT::prefix}% &6This item is now protected!"
		else:
			set block to air
			send "%colored {lockIT::prefix}% &cYou don't have permission to do that!"


# --------------------------------------------------------------------------------------------------------
# Interacting with protected blocks
# ---------------------------------------------------------------------------------------------------------------
on PlayerInteractEvent:
	loop {lockit::protectedItems::*}:
		set {_item} to loop-value parsed as an item
		if event.getClickedBlock() = {_item}:
			loop blocks in radius 1 of event.getClickedBlock():
				if loop-block = wall sign:
					if line 1 of loop-block = "[LockIT]":
						if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
							cancel event
							if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
								uncancel event
								stop
							if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
								uncancel event
								stop
							event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgOtherDenied}%")
							stop
						else:
							uncancel event
				if loop-block = chest:
					loop blocks in radius 1 of loop-block-1:
						if loop-block-2 = wall sign:
							if line 1 of loop-block-2 = "[LockIT]":
								if line 2 of loop-block-2 does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
									cancel event
									if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
										uncancel event
										stop
									if line 3 of loop-block-2 contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
										uncancel event
										stop
									event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgOtherDenied}%")
									stop
								else:
									uncancel event
		if event.getClickedBlock() = oak door or dark oak door or spruce door or jungle door or acacia door or birch door:
			loop blocks in radius 2 of event.getClickedBlock():
				if loop-block = wall sign:
					if line 1 of loop-block = "[LockIT]":
						if line 2 of loop-block does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
							cancel event
							if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
								uncancel event
								if line 4 of loop-block = "[timer:1]":
									wait 1 second
									close event.getClickedBlock()
								if line 4 of loop-block = "[timer:2]":
									wait 2 second
									close event.getClickedBlock()
								if line 4 of loop-block = "[timer:3]":
									wait 3 second
									close event.getClickedBlock()
								if line 4 of loop-block = "[timer:4]":
									wait 4 second
									close event.getClickedBlock()
								if line 4 of loop-block = "[timer:5]":
									wait 5 second
									close event.getClickedBlock()
								stop
							if line 3 of loop-block contains "%event.getPlayer()%" or uuid of event.getPlayer() or "everyone":
								uncancel event
								stop
							event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgOtherDenied}%")
							stop
						else:
							uncancel event
							if line 4 of loop-block = "[timer:1]":
								wait 1 second
								close event.getClickedBlock()
							if line 4 of loop-block = "[timer:2]":
								wait 2 second
								close event.getClickedBlock()
							if line 4 of loop-block = "[timer:3]":
								wait 3 second
								close event.getClickedBlock()
							if line 4 of loop-block = "[timer:4]":
								wait 4 second
								close event.getClickedBlock()
							if line 4 of loop-block = "[timer:5]":
								wait 5 second
								close event.getClickedBlock()
		else if event.getClickedBlock() = wall sign:
			if line 1 of event.getClickedBlock() = "[LockIT]":
				"%event.getAction()%" contains "RIGHT_CLICK"
				if line 2 of event.getClickedBlock() does not contain "%event.getPlayer()%" or uuid of event.getPlayer():
					cancel event
					if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "%{lockIT::adminLockIT}%" or "lockit.admin.*":
						uncancel event
						event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgUpdateSign}%")
						set {lockit::%event.getPlayer()%::signEdit} to event.getClickedBlock()
						stop
					event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgNoUpdateSign}%")
					stop
				else:
					uncancel event
					event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgUpdateSign}%")
					set {lockit::%event.getPlayer()%::signEdit} to event.getClickedBlock()
					stop


# ---------------------------------------------------------------------------------------------------------------
# Break Protection
# ---------------------------------------------------------------------------------------------------------------
on BlockBreakEvent:
	loop {lockit::protectedItems::*}:
		set {_item} to loop-value parsed as an item
		if event.getBlock() = {_item}:
			loop blocks in radius 1 of event.getBlock():
				if loop-block = wall sign:
					if line 1 of loop-block = "[LockIT]":
						if line 2 of loop-block != "%event.getPlayer()%" or uuid of event.getPlayer():
							cancel event
							event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgOtherDenied}%")
						else:
							uncancel event
		else if event.getBlock() = wall sign:
			if line 1 of event.getBlock() = "[LockIT]":
				if line 2 of event.getBlock() != "%event.getPlayer()%" or uuid of event.getPlayer():
					cancel event
					if event.getPlayer() has permission "%{lockIT::bypassLocked}%" or "lockit.admin.*":
						uncancel event
						stop
					event.getPlayer().sendMessage("%colored {lockIT::prefix}% %colored {lockIT::msgSignDenied}%")
					stop
				else:
					uncancel event
					stop

# ---------------------------------------------------------------------------------------------------------------
# Hopper Protection
# ---------------------------------------------------------------------------------------------------------------
on place of hopper:
	if block west of block above event-block is a wall sign:
		line 1 of block west of block above event-block is "[LockIT]"
		cancel event
		send "&cYou can't place that below a protected chest."
	if block east of block above event-block is a wall sign:
		line 1 of block east of block above event-block is "[LockIT]"
		cancel event
		send "&cYou can't place that below a protected chest."
	if block south of block above event-block is a wall sign:
		line 1 of block south of block above event-block is "[LockIT]"
		cancel event
		send "&cYou can't place that below a protected chest."
	if block north of block above event-block is a wall sign:
		line 1 of block north of block above event-block is "[LockIT]"
		cancel event
		send "&cYou can't place that below a protected chest."