import: java.lang.Long org.bukkit.inventory.EquipmentSlot org.bukkit.event.inventory.ClickType org.bukkit.event.inventory.InventoryDragEvent org.bukkit.event.block.BlockPlaceEvent options: BpSize: 3 prefix: &9[SkBackpack] MainColor: &3 SecondaryColor: &b on BlockPlaceEvent: if event.getItemInHand() is not set: stop set {_i} to nbt compound of event.getItemInHand() if tag "tag;isBackpack" of {_i} is 1: cancel event on rightclick: if event.getItem() is not set: stop set {_i} to nbt compound of event.getItem() if tag "tag;isBackpack" of {_i} is 1: if event.getHand() is EquipmentSlot.OFF_HAND: send "{@prefix} {@SecondaryColor}By otworzyć plecak musisz trzymać go w głównej ręce" to player stop if event.getItem().getAmount() is not 1: send "{@prefix} {@SecondaryColor}Możesz trzymać maksymalnie 1 plecak" to player stop set {_inv} to chest inventory with {@BpSize} rows named "&9Plecak" set {_c::*} to compound list tag "tag;Backpack;Items" of {_i} loop {_c::*}: set {_sl} to tag "Slot" of loop-value set {_item} to item from nbt loop-value set slot {_sl} of {_inv} to {_item} open {_inv} to player on InventoryDragEvent: if name of event.getInventory() is "&9Plecak": set {_i} to nbt compound of event.getViewers().get(0.intValue()).getInventory().getItemInMainHand() if tag "tag;isBackpack" of {_i} is 1: wait 1 tick loop 9*{@BpSize} times: if slot loop-number -1 of event.getViewers().get(0.intValue())'s current inventory is not air: set {_it} to nbt compound of (slot loop-number -1 of event.getViewers().get(0.intValue())'s current inventory) set tag "Slot" of {_it} to loop-number -1 if {_co} is not set: set {_co} to "%{_it}%" else: set {_co} to "%{_co}%,%{_it}%" if {_co} is set: set {_t} to "{Items:[%{_co}%]}" else: set {_t} to "{Items:[]}" delete tag "tag;Backpack" of {_i} set tag "tag;Backpack" of {_i} to nbt compound of {_t} set event.getViewers().get(0.intValue())'s tool to 1 of item from nbt {_i} on inventory close: if name of event.getInventory() is "&9Plecak": set {_i} to nbt compound of event.getViewers().get(0.intValue()).getInventory().getItemInMainHand() if tag "tag;isBackpack" of {_i} is 1: loop 9*{@BpSize} times: if slot loop-number -1 of event.getViewers().get(0.intValue())'s current inventory is not air: set {_it} to nbt compound of (slot loop-number -1 of event.getViewers().get(0.intValue())'s current inventory) set tag "Slot" of {_it} to loop-number -1 if {_co} is not set: set {_co} to "%{_it}%" else: set {_co} to "%{_co}%,%{_it}%" if {_co} is set: set {_t} to "{Items:[%{_co}%]}" else: set {_t} to "{Items:[]}" delete tag "tag;Backpack" of {_i} set tag "tag;Backpack" of {_i} to nbt compound of {_t} set event.getViewers().get(0.intValue())'s tool to 1 of item from nbt {_i} on inventory click: if name of event-inventory is "&9Plecak": set {_i} to nbt compound of player.getInventory().getItemInMainHand() if tag "tag;isBackpack" of {_i} is 1: if event.getCurrentItem() is set: set {_itest} to nbt compound of event.getCurrentItem() if tag "tag;isBackpack" of {_itest} is 1: cancel event stop if event.getClick() is ClickType.NUMBER_KEY: if player.getInventory().getItem(event.getHotbarButton()) is set: set {_itest} to nbt compound of player.getInventory().getItem(event.getHotbarButton()) if tag "tag;isBackpack" of {_itest} is 1: cancel event stop loop {@BpSize}*9 times: set {_in::%loop-number%} to (player's current inventory).getItem((loop-number -1).intValue()) wait 1 tick set {_i2} to nbt compound of player.getInventory().getItemInMainHand() set {_c2::*} to compound list tag "tag;Backpack;Items" of {_i2} set {_c::*} to compound list tag "tag;Backpack;Items" of {_i} loop {_c::*}: set {_item} to item from nbt loop-value if {_in::%(tag "Slot" of loop-value).intValue() +1%} is not item from nbt {_c2::%loop-index%}: event.setResult(Event.Result.DENY) close player's inventory stop if name of player's current inventory is not "&9Plecak": stop loop 9*{@BpSize} times: if slot loop-number -1 of player's current inventory is not air: set {_it} to nbt compound of (slot loop-number -1 of player's current inventory) set tag "Slot" of {_it} to loop-number -1 if {_co} is not set: set {_co} to "%{_it}%" else: set {_co} to "%{_co}%,%{_it}%" if {_co} is set: set {_t} to "{Items:[%{_co}%]}" else: set {_t} to "{Items:[]}" delete tag "tag;Backpack" of {_i} set tag "tag;Backpack" of {_i} to nbt compound of {_t} set player's tool to 1 of item from nbt {_i} command /plecak [] []: aliases: bp, backpack permission: backpacks.command permission message: {@prefix} {@SecondaryColor}Nie masz pozwolenia na korzystanie z tej komendy! trigger: if arg-1 is not set: send "{@prefix} {@SecondaryColor}Komendy:" to sender send "{@MainColor}/plecak give [gracz] {@SecondaryColor}- Daje pusty plecak danemu graczowi (lub tobie, gdy gracz nie jest podany)" to sender stop if arg-1 is "give" or "daj": if arg-2 is not set: if sender is a player: if player.getInventory().firstEmpty() is not -1.intValue(): player.getInventory().addItem(getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak!" to player else: loop 36 times: if player.getInventory().getItem((loop-number -1).intValue()).equals((player.getInventory().getItem((loop-number -1).intValue()).getAmount()) of getBackpack()): if player.getInventory().getItem((loop-number -1).intValue()).getAmount() is 64: continue player.getInventory().addItem(getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak!" to player stop else: continue player.getWorld().dropItemNaturally(player.getLocation(), getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak! &cO nie, wypadł na ziemię! Podnieś go jak najszybciej!" to player else: send "{@prefix} {@SecondaryColor}Nie podałeś nazwy gracza któremu chcesz dać plecak!" to sender else: if arg-2 parsed as player is online: set {_target} to arg-2 parsed as player if {_target}.getInventory().firstEmpty() is not -1.intValue(): {_target}.getInventory().addItem(getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak!" to {_target} if arg-2 parsed as player is not player: send "{@prefix} {@SecondaryColor}Gracz {@MainColor}%arg-2 parsed as player% {@SecondaryColor}otrzymał plecak!" to sender else: loop 36 times: if {_target}.getInventory().getItem((loop-number -1).intValue()).equals(({_target}.getInventory().getItem((loop-number -1).intValue()).getAmount()) of getBackpack()): if {_target}.getInventory().getItem((loop-number -1).intValue()).getAmount() is 64: continue {_target}.getInventory().addItem(getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak!" to {_target} if arg-2 parsed as player is not player: send "{@prefix} {@SecondaryColor}Gracz {@MainColor}%arg-2 parsed as player% {@SecondaryColor}otrzymał plecak!" to sender stop else: continue {_target}.getWorld().dropItemNaturally({_target}.getLocation(), getBackpack()) send "{@prefix} {@SecondaryColor}Otrzymałeś plecak! &cO nie, wypadł na ziemię! Podnieś go jak najszybciej!" to {_target} if arg-2 parsed as player is not player: send "{@prefix} {@SecondaryColor}Gracz {@MainColor}%arg-2 parsed as player% {@SecondaryColor}otrzymał plecak!" to sender else: send "{@prefix} {@SecondaryColor}Ten gracz nie jest online!" to sender function getBackpack() :: item: set {_i} to nbt compound of player head named "&9Plecak" with lore "&7&oKliknij prawym aby otworzyć!" set {_ver::*} to minecraft version split at "." if {_ver::2} parsed as integer is not less than 16: set tag "tag" of {_i} to nbt compound of "{Backpack:{Items:[]},SkullOwner:{Id:[I;-1094010160,1381977451,-2091589409,-2138830266],Properties:{textures:[{Value:""eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGRjYzZlYjQwZjNiYWRhNDFlNDMzOTg4OGQ2ZDIwNzQzNzU5OGJkYmQxNzVjMmU3MzExOTFkNWE5YTQyZDNjOCJ9fX0=""}]}},display:{Lore:['{""extra"":[{""bold"":false,""italic"":true,""underlined"":false,""strikethrough"":false,""obfuscated"":false,""color"":""gray"",""text"":""Kliknij prawym aby otworzyć!""}],""text"":""""}'],Name:'{""extra"":[{""bold"":false,""italic"":false,""underlined"":false,""strikethrough"":false,""obfuscated"":false,""color"":""blue"",""text"":""Plecak""}],""text"":""""}'},isBackpack:1b}" else: set tag "tag" of {_i} to nbt compound of "{Backpack:{Items:[]},SkullOwner:{Id:""becabad0-525f-4d6b-8354-e0df80840a46"",Properties:{textures:[{Value:""eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGRjYzZlYjQwZjNiYWRhNDFlNDMzOTg4OGQ2ZDIwNzQzNzU5OGJkYmQxNzVjMmU3MzExOTFkNWE5YTQyZDNjOCJ9fX0=""}]}},display:{Lore:['{""extra"":[{""bold"":false,""italic"":true,""underlined"":false,""strikethrough"":false,""obfuscated"":false,""color"":""gray"",""text"":""Kliknij prawym aby otworzyć!""}],""text"":""""}'],Name:'{""extra"":[{""bold"":false,""italic"":false,""underlined"":false,""strikethrough"":false,""obfuscated"":false,""color"":""blue"",""text"":""Plecak""}],""text"":""""}'},isBackpack:1b}" set {_i} to item from nbt "%{_i}%" return {_i}