spawner.sk

Created by Runakai

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.

on script load:
	set {Pig::Spawner::*} to 2500 and 5000
	set {Chicken::Spawner::*} to 3500 and 7000
	set {Fox::Spawner::*} to 4500 and 9000
	set {Cat::Spawner::*} to 5500 and 11000
	set {Wolf::Spawner::*} to 6500 and 13000
	set {Cow::Spawner::*} to 7500 and 15000
	set {Sheep::Spawner::*} to 8500 and 17000
	set {Mooshroom::Spawner::*} to 9500 and 19000
	set {Horse::Spawner::*} to 10500 and 21000
	set {Blaze::Spawner::*} to 11000 and 23000
	set {Intervall::*} to 15, 10 and 5
options:
	UpgradeInvName: &cUpgrade
	Coinvariable: {money::%uuid of player%}
	CoinvariableinFunction: {money::%{_uuid}%}
	PaperName: &cStats
	PaperLore: "", "Level: %{_level}%", "Cost of Upgrade: %{_nextUpgradeCost}%" and "Entity: %{_entity}%"
	NoMoreUpdateAvailableLore: &6All done!
	GreenWoolName: &eUpgrade your Spawner!
	GreenWoolLore: "Upgrade your spawner now!" and "only %{_nextUpgradeCost}%$!"
	RedWoolName: &cNot enough mooney
	RedWoolLore: "You need more money dude"
	WhiteWoolName: You upgraded everything!
	WhiteWoolLore: "" and "hi"
	barrierItem: barrier named "&cRemove spawner"
	SpawnerUpgradedMessage: Congrats!
	Wait10Seconds: Now please wait 10 seconds
	UseRemoveButton: You're the owner. Use the remove button!
function setToLvL1(location: location, p: player):
	add "{MinSpawnDelay:300s}" to nbt of block at {_location}
	add "{MaxSpawnDelay:300s}" to nbt of block at {_location}
	set {Spawner::Owner::%{_location}%} to {_player}
	add "{SpawnCount:1s}" to nbt of block at {_location}
on inventory close:
	if name of event-inventory is "{@UpgradeInvName}":
		delete metadata tag "UpgradeCost" of player
		delete metadata tag "CurrentLevel" of player
		delete (metadata tag "SpawnerPosition" of player)		
function openUpgradeInv(player: player, spawner: location):
	set {_tag} to proper case (2nd element out of (split "%(tag ""SpawnData;id"" of nbt of (block at {_spawner}))%" by ":"))
	if {%{_tag}%::Spawner::1} is set:
		set {_getDelay} to tag "MaxSpawnDelay" of nbt of block at {_spawner}
		set {_produceTime} to ((first element out of (split "%{_getDelay}%" by "s")) parsed as integer)/20
		set {_level} to (4 - (0.2 * {_produceTime}))
		set {_nextUpgradeCost} to {%{_tag}%::Spawner::%{_level}%} ? ("{@NoMoreUpdateAvailableLore}")
		set {_entity} to {_tag}
		set metadata tag "UpgradeCost" of {_player} to {_nextUpgradeCost}
		set metadata tag "CurrentLevel" of {_player} to {_level}
		set metadata tag "SpawnerPosition" of {_player} to location of block at {_spawner}
		if name of {_player}'s current inventory is not "{@UpgradeInvName}":
			open chest inventory with 3 rows named "{@UpgradeInvName}" to {_player}
		set slot (integers from 0 to 9), (integers from 18 to 27) and 17 of {_player}'s current inventory to lime stained glass pane named ""
		set slot 10 of {_player}'s current inventory to paper named "{@PaperName}" with lore {@PaperLore}
		set {_uuid} to {_player}'s uuid
		if {@CoinvariableinFunction} >= {_nextUpgradeCost}:
			set {_item} to green wool named "{@GreenWoolName}" with lore {@GreenWoolLore}
		else:
			if {_nextUpgradeCost} is not "{@NoMoreUpdateAvailableLore}":
				set {_item} to red wool named "{@RedWoolName}" with lore {@RedWoolLore}
			else:
				set {_item} to white wool named "{@WhiteWoolName}" with lore {@WhiteWoolLore}
		set slot 13 of {_player}'s current inventory to {_item}
		set slot 16 of {_player}'s current inventory to {@barrierItem}	
on rightclick on spawner:
	{Spawner::Owner::%event-location%} is player
	openUpgradeInv(player, event-location)
on place:
	if event-block is a spawner:
		set {Spawner::Owner::%event-location%} to player
		set {_Level} to tag "Level" of player's tool's nbt
		if {_Level} is not set:
			setToLvL1(event-location, player)
		else:
			set {_Entity} to tag "Entity" of player's tool's nbt
			set {_Delay} to tag "Delay" of player's tool's nbt
			add "{SpawnData:{id:""minecraft:%{_Entity}%""}}" to event-block's nbt
			add "{MinSpawnDelay:%{_Delay}%s}" to nbt of event-block
			add "{SpawnCount:1s}" to nbt of event-block
			add "{MaxSpawnDelay:%{_Delay}%s}" to nbt of event-block
			add "{SpawnPotentials:[{Weight:69,Entity:{id:""minecraft:%{_Entity}%""}}]}" to nbt of event-block
on inventory click:
	if name of event-inventory is "{@UpgradeInvName}":
		cancel event
		event-slot is green wool:
			send "{@SpawnerUpgradedMessage}"
			remove metadata tag "UpgradeCost" of player from {@Coinvariable}
			set {_level} to (metadata tag "CurrentLevel" of player) + 1
			delete metadata tag "CurrentLevel" of player
			set {_nextTime} to ({Intervall::%{_level}%})*20
			add "{MinSpawnDelay:%{_nextTime}%s}" to nbt of block at (metadata tag "SpawnerPosition" of player)
			add "{MaxSpawnDelay:%{_nextTime}%s}" to nbt of block at (metadata tag "SpawnerPosition" of player)
			openUpgradeInv(player, (metadata tag "SpawnerPosition" of player))
		else if event-slot is barrier:
			send "{@Wait10Seconds}"
			set {_loc} to (metadata tag "SpawnerPosition" of player)
			block at {_loc} is a spawner
			set {_tag} to lower case (2nd element out of (split "%(tag ""SpawnData;id"" of nbt of (block at {_loc}))%" by ":"))
			set {_getDelay} to tag "MaxSpawnDelay" of nbt of block at {_loc}
			set {_produceTime} to ((first element out of (split "%{_getDelay}%" by "s")) parsed as integer)/20
			set {_level} to (4 - (0.2 * {_produceTime}))
			set {_nextUpgradeCost} to {%{_tag}%::Spawner::%{_level}%} ? ("{@NoMoreUpdateAvailableLore}")
			set {_entity} to {_tag}
			set {_spawner} to spawner with nbt "{Entity:%{_tag}%,Delay:%{_getDelay}%,Level:%{_level}%}"
			close player's inventory
			wait 10 seconds
			give {_spawner} to player
			set block at {_loc} to air 
on break of spawner:
	if {Spawner::Owner::%event-location%} is player:
		send "{@UseRemoveButton}"
		cancel event