# # ____ _ _ ____ # | _ \ | | | | |___ \ # | |_) | __ _ ___| | ___ __ __ _ ___| | _____ __ ____) | # | _ < / _` |/ __| |/ / '_ \ / _` |/ __| |/ / __| \ \ / /__ < # | |_) | (_| | (__| <| |_) | (_| | (__| <\__ \ \ V /___) | # |____/ \__,_|\___|_|\_\ .__/ \__,_|\___|_|\_\___/ \_/|____/ # | | # |_| # # Backpacks v3.3 # Now stored totally in NBT! No variables! # # And once again, a recode. # The v2 was never posted, but it exists. # # What's new? # - You can define the number of rows. # - Only the ID appears in the lore (as it can be useful). # - Backpacks can be renamed. # - Pure NBT, no more databases. # - More optimised? # # Needed addons: # - skStuff. # - skQuery. # # # Configuration # It is recommended to customize only here. # No support will be given with edited code. # options: # The DEFAULT name of the backpack item. # It can be change if you shift + rightclick the backpack. backpack.name : &dBackpack # Lore of the backpack item. New lines can be specified by using '||'. backpack.lore : &7Use an anvil to customize||&7your amazing backpack! # Item to be used as backpack. # You can use anything, blocks won't be placed. backpack.item : chest # Name of inventory that opens when you open a backpack, to detect if it's a backpack and save it. # More than 30 characters in the name of the inventory will cause a crash. backpack.inventoryname : Backpack # The sound when the backpack opens & closes. # Under the sound is the pitch, that sets how 'acute' is the sound (bigger numbers means more acute sounds). # The list of sounds can be found here: http://www.theredengineer.com/1.9-playsound-list.html backpack.sound.open : entity horse armor backpack.sound.open.pitch : 1 backpack.sound.close : entity horse armor backpack.sound.close.pitch : 2 # These are the backpack prices. # Set a different price for each size. # Use the following example: # 500-1500-3000-4000-7000-10000 | Meaning $500 for 1 row, $1500 for 2 rows, $3000 for 3 rows... up to six. # # Remember that you will need VAULT installed. # You can still sell the backpacks using plugins like ChestShop, and craftings with https://www.spigotmc.org/resources/custom-recipes.11440/. backpack.buy.eachsize : 500-1500-3000-4000-7000-10000 # # Messages # If you want to add a default translation, please PM me on skUnity! (user: EWS) # # This message shows up when you use "/backpack (buy|pucharse) [rows number | 1-6]" wrongly. # Default: "&7Usage: /backpack (buy|pucharse) [rows number | 1-6]." backpack.msgs.buy.wrongly: "&7Usage: /backpack (buy|pucharse) [rows number | 1-6]." # This message shows up when you misconfigurate the prices in the script and tries do buy something. # Default: "&7An error occured, please contact an admin and tell him that the 'backpacks' plugin is misconfigurated." backpack.msgs.buy.misconfig: "&7An error occured, please contact an admin and tell him that the 'backpacks' plugin is misconfigurated." # This message is the separator (lines added before and after a message). # Default: "&m-|--&3&m------&f&m--------------------------------&3&m------&f&m--|-" backpack.msgs.separator: "&m-|--&3&m------&f&m--------------------------------&3&m------&f&m--|-" # These messages below show up when you don't have enough money to buy a backpack. # The third message has only colors separated by commas, because it'll tell you all the prices in 6 lines (one for each price). # Default line 01: "&3You don't have enough money to buy this backpack." # Default line 02: "&3Take a look at the sizes and prices below:" # Default line 03: "3,f,7" backpack.msgs.buy.nomoney.1: "&3You don't have enough money to buy this backpack." backpack.msgs.buy.nomoney.2: "&3Take a look at the sizes and prices below:" backpack.msgs.buy.nomoney.colors: "3,f,7" # This message shows up when you successfuly buy or get (admin) a backpack. # Default: "&7You bought a backpack with &3%arg 2% rows&7!" backpacks.msgs.buy.success: "&7You bought a backpack with &3%arg 2% rows&7!" # This message shows up when you use "/backpack get [rows number | 1-6]" wrongly. # Default: "&7Usage: /backpack get [rows number | 1-6]." backpacks.msgs.get.wrongly: "&7Usage: /backpack get [rows number | 1-6]." # This message shows up when you don't have permission to use the command. # Default: "&7You are &4not &3cool enough &7to use this." backpacks.msgs.noperm: "&7You are &4not &3cool enough &7to use this." # This message shows up when you stack 2 or more backpacks and the script blocks it. # Default: "&7How did you manage to stack &32 backpacks&7?" backpack.msgs.abuse.stack: "&7How did you manage to stack &32 backpacks&7?" # # There is the script code. # Do not change it if you don't know what you're doing. # command /backpack [] []: aliases: backpacks, bp permission: backpack.command permission message: You do not have the required permission. trigger: if arg 1 is "buy" or "pucharse": if "%arg 2%" is not "1", "2", "3", "4", "5" or "6": send {@backpack.msgs.buy.wrongly} stop set {_sizeprice} to "{@backpack.buy.eachsize}" set {_sizeeach::*} to {_sizeprice} split at "-" if {_sizeeach::6} is not set: send {@backpack.msgs.buy.misconfig} stop if player's balance is smaller than {_sizeeach::%arg 2%} parsed as number: set {_colors::*} to split uncolored {@backpack.msgs.buy.nomoney.colors} at "," send {@backpack.msgs.separator} send {@backpack.msgs.buy.nomoney.1} send {@backpack.msgs.buy.nomoney.2} loop {_sizeeach::*}: set {_msg} to "&%{_colors::1}%%loop-index%. &%{_colors::2}%Size %loop-index%: &%{_colors::3}%$%loop-value%" send "%colored {_msg}%" send {@backpack.msgs.separator} else: give a {@backpack.item} with nbt "{backpack.rows:""%arg 2 parsed as integer%"",backpack.id:""%a random integer between 1000000000 and 9999999999%""}" named "{@backpack.name}" with lore "{@backpack.lore}" to player send {@backpacks.msgs.buy.success} remove {_sizeeach::%arg 2%} parsed as number from player's balance stop if arg 1 is "get" or "give": if player doesn't have permission "backpack.admin": send {@backpacks.msgs.noperm} stop if "%arg 2%" is not "1", "2", "3", "4", "5" or "6": send {@backpacks.msgs.get.wrongly} stop give a {@backpack.item} with nbt "{backpack.rows:""%arg 2 parsed as integer%"",backpack.id:""%a random integer between 1000000000 and 9999999999%""}" named "{@backpack.name}" with lore "{@backpack.lore}" to player send {@backpacks.msgs.buy.success} stop # Please, do not remove the credits below. They won't affect ANYTHING in your server. # I made this script totally free so people can have a good script to create a really cool server. send "&b&m-|--------------------------------------------------|-" send "&b&lBackpacks &7| &bAn extra help with your items!" send "&fAuthor: &7TrademarkTM" send "&fVersion: &7v3.3" send " " send "&3Buy a backpack by using &b/backpack buy [size]&3." send "&7Need support with this script? Bug reports? Contact me!" send "&7Call me on Discord: EWS##5810." send "&b&m-|--------------------------------------------------|-" on rightclick holding a {@backpack.item}: if tag "backpack.rows" of nbt of player's held item is set: cancel event if player doesn't have permission "backpack.use": send "&7You don't have permission to use backpacks." else: if "%player's tool%" contains "1", "2", "3", "4", "5", "6", "7", "8", "9" or "0": send {@backpack.msgs.abuse.stack} else: if inventory name of current inventory of player doesn't contain "{@backpack.inventoryname} |": open chest with "%tag ""backpack.rows"" of nbt of player's tool%" parsed as number rows named (first 32 characters of "{@backpack.inventoryname} | %name of player's tool%") to player if tag "backpack.items" of nbt of player's tool is not "": set {_nbt.replace} to "%tag ""backpack.nbt"" of nbt of player's tool%" replace all "'" with """" in {_nbt.replace} set {_nbt.list::*} to {_nbt.replace} split at ";" set {_items.list::*} to ("%tag ""backpack.items"" of nbt of player's tool%") split at ";" loop {_items.list::*}: set {_item&data::*} to split "%{_items.list::%loop-index parsed as number%}%" at "?" set {_i} to {_item&data::1} parsed as item with nbt "%{_nbt.list::%loop-index parsed as number%}%" set data value of {_i} to {_item&data::2} parsed as number add {_i} to current inventory of player play {@backpack.sound.open} at player with pitch {@backpack.sound.open.pitch} on inventory close: if inventory name of current inventory of player contains "{@backpack.inventoryname} |": set {_save.items} and {_save.nbt} to "" loop all items in current inventory of player: set {_save.items} to "%{_save.items}%;%item amount of loop-value% of %id of type of loop-value%?%data value of loop-value%" set {_save.nbt} to "%{_save.nbt}%;%nbt of loop-value%" set {_save.items} to the last (length of {_save.items} - 1) characters of {_save.items} set {_save.nbt} to the last (length of {_save.nbt} - 1) characters of {_save.nbt} set {_save.nbt} to the first 65000 characters of {_save.nbt} replace all """" with "'" in {_save.nbt} replace all """" with "'" in {_save.items} add "{backpack.items:""%{_save.items}%""}" to nbt of player's tool add "{backpack.nbt:""%{_save.nbt}%""}" to nbt of player's tool play {@backpack.sound.close} at player with pitch {@backpack.sound.close.pitch} on inventory click: # @Update 3.2.1 # Fixes the bug that allows you to place a backpack inside a backpack using keyboard numbers. # That bug should be definetely fixed now. Thanks to Bensku for creating this 'inventory action' thing. :P if inventory name of current inventory of player contains "{@backpack.inventoryname} |": if "%inventory action%" is "swap with hotbar" or "hotbar move and readd": cancel event if tag "backpack.rows" of nbt of event-item is set: cancel event on tool change: if inventory name of current inventory of player contains "{@backpack.inventoryname} |": cancel event # This was really useful in the creation of the script. # In gratitude (to a command), I upgraded it and kept it here. command /nbt []: permission: backpack.seenbt permission message: &7You cannot use this wonderful command. trigger: send "&f&m-|------------------------------------------------|-" set {_tool} to "%player's tool%" in upper case send "&6|| &3NBT of %{_tool}% &6||" set {_nbt} to uncolored "%nbt of player's tool%" replace all "" with "@no nbt" in {_nbt} send "&6- &3NBT tags:" send "&7%first 2000 characters of {_nbt}%" if arg 1 is set: set {_tag} to tag "%arg 1%" of nbt of player's tool set {_tag} to "%{_tag}%" replace all "" with "@no such tag" in {_tag} send "&6- &3Tag %arg 1%:" send "&7%{_tag}%" send "&f&m-|------------------------------------------------|-"