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.

#Please contact eult on discord if you need help
options:
	#verison
		version: 7.4
	# PERMISSIONS
		# whether or not the permission should be required to use
		permission-required: false
		# what permission is required to open any shulker box
		permission: bsb.use
		# permission required by admins to unlock locked shulker boxes using the command
		permission-admin: bsb.admin
		# message to send when a user doesn't have the required permission node to unlock shulker boxes
		permission-message: &cYou do not have permission to this. &7&o(Missing node 'bsb.use')
		# message to send when a user doesn't have the required permission node to unlock shulker boxes
		permission-message-admin: &cYou do not have permission to this. &7&o(Missing node 'bsb.admin')
		# how the message should be displayed to the player
		permission-message-format: actionbar # accepted entries are 'actionbar', 'title', 'message' (using any other will effectively disable this)


	# MISCELLANEOUS
		# whether or not players should be allowed to place shulker boxes
		place-shulkers: true
		# whether or not players opening shulkr boxes by shift clicking in the inventory
		open-with-sneaking: false

	# COOLDOWN
		# whether or not a cooldown should be applied to opening shulker boxes
		cooldown-enabled: true
		# how long a cooldown duration should last on the items
		cooldown-duration: 5 seconds
		# cooldown bypass permission to allow admins to freely open shulker boxes
		cooldown-bypass-permission: bsb.admin
		# message to send when attempting to open a shulker box while on cooldown
		# you can use '%{_remaining}%' to showcase how much longer
		cooldown-message: &cYou're current on cooldown for another %{_remaining}%
		# whether or not the skript should send a message when trying to open a shulker box while on cooldown
		cooldown-message-enabled: true
		# how the message should be displayed to the player
		cooldown-message-format: title # accepted entries are 'actionbar', 'title', 'message' (using any other will effectively disable this)

	# SOUNDS
		# Note: setting any of the sounds to 'none' will disable the functionality
		# sound to play when a user opens a shulker box
		sounds-open: block.shulker_box.open
		# sound to play when a user closes a shulker box
		sounds-close: block.shulker_box.close
		# sound to play when a user attempts to open a locked shulker box
		sounds-locked: block.chest.locked
		# sound to play when a user attempts to open a shulker box while on cooldown
		sounds-cooldown: block.chest.locked
		# sound to player when a user doesn't have the requiered permission
		sounds-permission: block.chest.locked

	# LOCKED STATE
		# message to send when attempting to open a locked shulker box
		locked-message: &cThis shulker box is currently locked, please ask an admin to unlock!
		# whether or not the skript should attempt to lock suspicious shulker boxes
		locked-enabled: true
		# whether or not the skript should send a message when attempting to open a locked shulker box
		locked-message-enabled: true
		# how the message should be displayed to the player
		locked-message-format: actionbar # accepted entries are 'actionbar', 'title', 'message' (using any other will effectively disable this)
		# disable dispenser message when they are locked
		# you can use '%{_amount}%' for the amount of locked shulkers in the dispenser
		locked-dispenser: &cInactivated dispenser contains &6%{_amount}% &clocked shulker/s, so it is inoperable.
		# message to send when attempting to drop a locked shulker
		Locked-dropped: &cLocked items cannot be dropped

	# LOCKED REASON
		# listed below are possible reasons for shulker's lockup
		locked-reason-1: Containing illegible items.
		locked-reason-2: Suspicious of duplicate.
		locked-reason-3: Other reason.

	# CLARIFICATION
		# as a clarification of the locks, locks prevent the duplication; the shulker gets locked when it's opened,
		# then unlocked when it's closed. Whenever a shulker is closed without a packet, a lock remains.

#----------------------------------------------------------------

#--------------------------
#	Command (Unlocking)
#--------------------------
# Handle the BetterShulkerBoxes command
command /BetterShulkerBoxes [<text>] [<text>]:
	aliases: bsb
	trigger:
		if player has permission "{@permission-admin}":
			if player is not holding any shulker box:
				send "&eMake sure to hold a shulker box"
				stop
			if arg-1 is "lock":
				set uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of player's tool to player
				if arg-2 is set:
					set string tag "BlockEntityTag;PublicBukkitValues;skbee-custom;lockedreason" of nbt of player's tool to "%arg-2 ? "NOT SET"%"
				BSBCommandGui(player)
			if arg-1 is "unlock":
				BSBunlock(player)
				BSBCommandGui(player)
			if arg-1 is not set:
				BSBCommandGui(player)
		else:
			parse if "{@permission-message-format}" is "actionbar":
				send action bar "{@permission-message-admin}" to player
			else parse if "{@permission-message-format}" is "title":
				reset title of player
				send title "&4&lAUTHORIZATION" with subtitle "{@permission-message-admin}" to player for 0.5 seconds with fadein 0 seconds with fadeout a second
			else parse if "{@permission-message-format}" is "message":
				send "{@permission-message-admin}" to player

# Handle inventory clicks for BetterShulkerBoxes command
on inventory click:
	if player's current inventory is metadata value "BSB;GUI-Inside" of player:
		cancel event
		BSBCommandGui(player) if event-slot is slot 35 of player's current inventory
	if player's current inventory is metadata value "BSB;GUI" of player:
		cancel event
		if event-slot is slot 0 of player's current inventory:
			set metadata tag "BSB;GUI-Inside" of player to chest inventory with 4 rows with name "%name of slot 0 of player's current inventory ? "Shulker box"%"
			set {_items::*} to compound list tag "BlockEntityTag;Items" of nbt of slot 0 of player's current inventory
			loop {_items::*}:
				set {_loopSlot} to int tag "Slot" of loop-value
				set {_loopItem} to item from nbt loop-value
				set slot {_loopSlot} of (metadata tag "BSB;GUI-Inside" of player) to {_loopItem}
			set slot 35 of (metadata tag "BSB;GUI-Inside" of player) to arrow named "&aBack to Admin GUI"
			open (metadata tag "BSB;GUI-Inside" of player) to player
			stop
		if BSBisLocked(player's tool) is false:
			if event-slot is slot 3 of player's current inventory:
				BSBlock(player, "{@locked-reason-1}")
			if event-slot is slot 4 of player's current inventory:
				BSBlock(player, "{@locked-reason-2}")
			if event-slot is slot 5 of player's current inventory:
				BSBlock(player, "{@locked-reason-3}")
		else:
			if event-slot is slot 4 of player's current inventory:
				BSBunlock(player)
		BSBCommandGui(player)

#--------------------------
#	Events (Interacting)
#--------------------------

# This is the main event
on right click with any shulker box:
	parse if {@permission-required} is true:
		if player doesn't have permission "{@permission}":
			parse if "{@permission-message-format}" is "actionbar":
				send action bar "{@permission-message}" to player
			else parse if "{@permission-message-format}" is "title":
				reset title of player
				send title "&4&lAUTHORIZATION" with subtitle "{@permission-message}" to player for 0.5 seconds with fadein 0 seconds with fadeout a second
			else parse if "{@permission-message-format}" is "message":
				send "{@permission-message}" to player
			cancel event
			stop
	stop if exact target block of player is interactable
	event-item is player's tool
	cancel event if {@place-shulkers} is false
	parse if {@open-with-sneaking} is true:
		if player is not sneaking:
			stop
	if target entity is item frame, donkey or armor stand:
		if distance between the player and location of target block <= 5:
			stop
	stop if distance between the player and location of target block <= 5
	BSBCheckCooldown(player) is false
	BSBCheckLockedState(player, event-item) is false
	if player is holding event-item:
		set metadata "BSB;ShulkerSlot" of player to hotbar slot of player
	else:
		# Used to determine offhand slot of player
		set metadata "BSB;ShulkerSlot" of player to offhand tool of player
	set uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of event-item to player
	BSBOpen(player, event-item)

on inventory click:
	clicked slot is any shulker box
	event-inventory is inventory of player
	parse if {@permission-required} is true:
		if player doesn't have permission "{@permission}":
			parse if "{@permission-message-format}" is "actionbar":
				send action bar "{@permission-message}" to player
			else parse if "{@permission-message-format}" is "title":
				reset title of player
				send title "&4&lAUTHORIZATION" with subtitle "{@permission-message}" to player for 0.5 seconds with fadein 0 seconds with fadeout a second
			else parse if "{@permission-message-format}" is "message":
				send "{@permission-message}" to player
			cancel event
			stop
	if metadata "BSB;ShulkerSlot" of player is clicked slot:
		cancel event
		stop
	stop if click action is not right mouse button
	close player's inventory
	cancel event
	if BSBCheckCooldown(player) or BSBCheckLockedState(player, event-item) is true:
		stop
	set metadata "BSB;ShulkerSlot" of player to clicked slot
	set uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of clicked slot to player
	BSBOpen(player, clicked slot)

# When closing BetterShulkerInventory update the slot
on inventory close:
	player has metadata "BSB;ShulkerInv"
	clear metadata "BSB;ShulkerInv" of player
	loop items within event-inventory:
		set {_item} to full nbt of loop-item
		set tag "Slot" of {_item} to index of loop-slot
		add {_item} to {_itemNBT::*}
	set compound list tag "BlockEntityTag;Items" of nbt of (metadata "BSB;ShulkerSlot" of player) to {_itemNBT::*}
	delete uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of (metadata "BSB;ShulkerSlot" of player)
	clear metadata "BSB;ShulkerSlot" of player
	BSBPlaySound(player, "close")

#disable the ability to spawn shulker using dispensers when they are locked
on dispense of any shulker box:
	parse if {@locked-enabled} is true:
		loop all items in event-block:
			if tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of loop-value is set:
				add 1 to {_amount}
				cancel event
		if {_amount} is set:
			loop players in radius 4 around event-block:
				send "{@locked-dispenser}" to loop-value

on drop:
	if name of player's inventory = name of (metadata tag "BSB;ShulkerInv" of player):
		if metadata "BSB;ShulkerSlot" of player is set:
			if BSBisLocked(event-item) is true:
				cancel event
				send "{@Locked-dropped}"

on death:
	if name of victim's inventory = name of (metadata tag "BSB;ShulkerInv" of victim):
		set {_item} to metadata "BSB;ShulkerSlot" of victim
		set {_items::*} to slots (integers between 0 and 26) of victim's current inventory
		close victim's inventory
		stop if gamerule keepInventory of world of victim is true
		remove {_item} from drops
		set {_nbt} to (nbt compound of {_item})
		delete (compound list tag "BlockEntityTag;Items" of {_nbt})
		delete uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of {_nbt}
		add full nbt compound of {_items::*} to compound list tag "BlockEntityTag;Items" of {_nbt}
		set {_slots::*} to compound list tag "BlockEntityTag;Items" of {_nbt}
		loop {_slots::*}:
			set {_n} to loop-index parsed as number - 1
			set byte tag "Slot" of loop-value to {_n}
		drop {_item}

on place of any shulker box:
	cancel event if nbt of player's tool has tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked"

#--------------------------
#	FUNCTIONS
#--------------------------
# Open a shulker box using the BetterShulkerBox inventory
function BSBOpen(player: player, item: item):
	set metadata tag "BSB;ShulkerInv" of {_player} to shulker box inventory with name "%name of {_item} ? "Shulker box"%"
	set {_items::*} to compound list tag "BlockEntityTag;Items" of nbt of {_item}
	loop {_items::*}:
		set {_loopSlot} to int tag "Slot" of loop-value
		set {_loopItem} to item from nbt loop-value
		set slot {_loopSlot} of (metadata tag "BSB;ShulkerInv" of {_player}) to {_loopItem}
	open (metadata tag "BSB;ShulkerInv" of {_player}) to {_player}
	BSBPlaySound({_player}, "open")

function BSBPlaySound(player: player, sound: string):
	if {_sound} is "locked":
		parse if "{@sounds-locked}" is not "none":
			play sound "{@sounds-locked}" at volume 2 with pitch 1 for {_player}
	else if {_sound} is "cooldown":
		parse if "{@sounds-cooldown}" is not "none":
			play sound "{@sounds-cooldown}" at volume 2 with pitch 1 for {_player}
	else if {_sound} is "permission":
		parse if "{@sounds-permission}" is not "none":
			play sound "{@sounds-permission}" at volume 2 with pitch 1 for {_player}
	else if {_sound} is "open":
		parse if "{@sounds-open}" is not "none":
			play sound "{@sounds-open}" at volume 2 with pitch 1 for {_player}
	else if {_sound} is "close":
		parse if "{@sounds-close}" is not "none":
			play sound "{@sounds-close}" at volume 2 with pitch 1 for {_player}

function BSBCheckLockedState(player: player, item: object) :: boolean:
	set {_state} to false
	parse if {@locked-enabled} is true:
		set {_nbt} to nbt of {_item}
		if {_nbt} has tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked":
			set {_state} to true
		else if {_nbt} has tag "custom;locked":
			set {_state} to true
		{_player} is set
		if {_state} is true:
			BSBPlaySound({_player}, "locked")
			parse if "{@locked-message-format}" is "actionbar":
				send action bar "{@locked-message}" to {_player}
			else parse if "{@locked-message-format}" is "title":
				reset title of {_player}
				send title "&4&lLOCKED" with subtitle "{@locked-message}" to {_player} for 0.5 seconds with fadein 0 seconds with fadeout a second
			else parse if "{@locked-message-format}" is "message":
				send "{@locked-message}" to {_player}
	return {_state}

function BSBCheckCooldown(player: player) :: boolean:
	parse if {@cooldown-enabled} is true:
		{_player} doesn't have permission "{@cooldown-bypass-permission}"
		if now < metadata "BSB;ShulkerCooldown" of {_player}:
			BSBPlaySound({_player}, "cooldown")
			parse if {@cooldown-message-enabled} is true:
				set {_remaining} to difference between now and metadata "BSB;ShulkerCooldown" of {_player}
				parse if "{@cooldown-message-format}" is "actionbar":
					send action bar "{@cooldown-message}" to {_player}
				else parse if "{@cooldown-message-format}" is "title":
					reset title of {_player}
					send title "&4&lCOOLDOWN" with subtitle "{@cooldown-message}" to {_player} for 0.5 seconds with fadein 0 seconds with fadeout a second
				else parse if "{@cooldown-message-format}" is "message":
					send "{@cooldown-message}" to {_player}
			return true
		set metadata "BSB;ShulkerCooldown" of {_player} to {@cooldown-duration} later
	return false

function BSBCommandGui(player: player):
	set metadata "BSB;GUI" of {_player} to chest inventory with 1 rows with name "&9BSB ADMIN GUI"
	if BSBisLocked({_player}'s tool) is true:
		set {_view} to (uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of {_player}'s tool) parsed as player
		set {_reason} to tag "BlockEntityTag;PublicBukkitValues;skbee-custom;lockedreason" of nbt compound of {_player}'s tool
		set slot 0 of metadata "BSB;GUI" of {_player} to {_player}'s tool with lore "&4&lLOCKED", "&7By &e%{_view}%", "&7For &e%{_reason} ? "Not set"%", "", "&a&l[ClICK TO VIEW]"
		set slot 4 of metadata "BSB;GUI" of {_player} to Lime dye named "&aUNLOCK" with lore "", "&7Click here to unlock", "&7the shulker box."
	else:
		set slot 0 of metadata "BSB;GUI" of {_player} to {_player}'s tool with lore "", "&a&l[ClICK TO VIEW]"
		set slot 3 of metadata "BSB;GUI" of {_player} to Red dye named "&aLOCK" with lore "", "&7Click here to lock", "&7the shulker box for", "&7{@locked-reason-1}"
		set slot 4 of metadata "BSB;GUI" of {_player} to Red dye named "&aLOCK" with lore "", "&7Click here to lock", "&7the shulker box for", "&7{@locked-reason-2}"
		set slot 5 of metadata "BSB;GUI" of {_player} to Red dye named "&aLOCK" with lore "", "&7Click here to lock", "&7the shulker box for", "&7{@locked-reason-3}"
	open (metadata "BSB;GUI" of {_player}) to {_player}

function BSBlock(player: player, string: string):
	set uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of {_player}'s tool to {_player}
	set string tag "BlockEntityTag;PublicBukkitValues;skbee-custom;lockedreason" of nbt of {_player}'s tool to "%{_string}%"

function BSBunlock(player: player):
	delete uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of nbt of {_player}'s tool
	delete uuid tag "BlockEntityTag;PublicBukkitValues;skbee-custom;lockedreason" of nbt of {_player}'s tool

function BSBisLocked(item: item) :: boolean:
	set {_nbt} to (nbt compound of {_item})
	set {_uuid} to (tag "BlockEntityTag;PublicBukkitValues;skbee-custom;locked" of {_nbt})
	if {_uuid} is set:
		return true
	else:
		return false