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