diff --git a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBag.java b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBag.java index 7eb07b26..b95077e4 100644 --- a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBag.java +++ b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBag.java @@ -41,7 +41,7 @@ { Entity owner; Player viewer; - Inventory inventory; + BackBagInventory inventory; private int size; String name; boolean only_view; @@ -76,12 +76,13 @@ public BackBag(Entity owner,int size,ItemStack[]default_content,String name,bool if(name==null) name=BackBagHelper.str_name; size=size%9>0?size+(9-size%9):size; this.owner=owner; - if((inventory=BackBagHelper.getInventory(owner.getUniqueId(),name))==null||override) { - inventory=Bukkit.createInventory(null,size,name); - BackBagHelper.addInventory(owner.getUniqueId(),new BackBagInventory(name,size,inventory,temporary)); + if((inventory=BackBagHelper.getBagInventory(owner.getUniqueId(),name))==null||override) { + inventory=new BackBagInventory(name,size,Bukkit.createInventory(null,size,name),temporary); + BackBagHelper.addInventory(owner.getUniqueId(),inventory); } - this.size=inventory.getSize(); - if(default_content!=null&&default_content.length<=this.size) inventory.setContents(default_content); + this.size=inventory.getInventory().getSize(); + this.name=inventory.getName(); + if(default_content!=null&&default_content.length<=this.size) inventory.getInventory().setContents(default_content); this.excludes_slots=excluded_slots; } @@ -99,7 +100,7 @@ public void viewBackBag(Player player,boolean bool,List excludes_slots) this.excludes_slots=excludes_slots; Main.pluginmanager.registerEvents(this,Main.getPlugin()); this.viewer=player; - player.openInventory(inventory); + player.openInventory(inventory.getInventory()); } @@ -112,13 +113,13 @@ public int getSize() { } public Inventory getInventory() { - return this.inventory; + return this.inventory.getInventory(); } - public void setInventory(Inventory new_inv) { - this.inventory=new_inv; + public void setInventory(String name,Inventory new_inv) { + this.inventory.setInventory(name,new_inv); this.size=new_inv.getSize(); - BackBagHelper.replace(owner.getUniqueId(),new BackBagInventory(this.name,this.size,this.inventory)); + BackBagHelper.replace(owner.getUniqueId(),new BackBagInventory(this.name,this.size,this.inventory.getInventory())); } void executeSkill(String skill_name,Entity owner,Player viewer) { @@ -153,9 +154,9 @@ public void interact(InventoryClickEvent e) { if(e.getWhoClicked()==viewer) { if(only_view&&!excludes_slots.contains(e.getRawSlot())) e.setCancelled(true); if(e.getClickedInventory()!=null&&e.getView().getTitle().equals(this.name)) { - owner.setMetadata(Utils.meta_LASTCLICKEDSLOT,new FixedMetadataValue(Main.getPlugin(),e.getSlot())); + owner.setMetadata(Utils.meta_LASTCLICKEDSLOT,new FixedMetadataValue(Main.getPlugin(),e.getRawSlot())); owner.setMetadata(Utils.meta_LASTCLICKEDBAG,new FixedMetadataValue(Main.getPlugin(),this.name)); - e.getWhoClicked().setMetadata(Utils.meta_LASTCLICKEDSLOT,new FixedMetadataValue(Main.getPlugin(),e.getSlot())); + e.getWhoClicked().setMetadata(Utils.meta_LASTCLICKEDSLOT,new FixedMetadataValue(Main.getPlugin(),e.getRawSlot())); if(Utils.mobmanager.isActiveMob(owner.getUniqueId())) { ActiveMob am=Utils.mobmanager.getMythicMobInstance(owner); am.signalMob(BukkitAdapter.adapt(e.getWhoClicked()),Utils.signal_BACKBAGCLICK); diff --git a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagHelper.java b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagHelper.java index 4a32de4a..c8a97f98 100644 --- a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagHelper.java +++ b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagHelper.java @@ -211,7 +211,7 @@ public static void loadBags(File file) { BackBagInventory bag_inventory=bag_inventories[i2]; Inventory inventory=Bukkit.createInventory(null,bag_inventory.getSize(),bag_inventory.getName()); inventory.setContents(bag_inventory.getContentBase64()); - bag_inventory.setInventory(inventory); + bag_inventory.setInventory(bag_inventory.getName(),inventory); bag_inventory.setTemporary(false); BackBagHelper.addInventory(uuid,bag_inventory); } @@ -317,7 +317,7 @@ public static void expandBackBag(Entity owner,String bag_name,int size) { if(BackBagHelper.hasBackBag(owner.getUniqueId())) { BackBag bag=new BackBag(owner,bag_name); if(bag.getSize()>size) { - Listcontent=Arrays.asList(bag.inventory.getContents()).stream().filter(p->p!=null&&p.getType()!=Material.AIR).collect(Collectors.toList()); + Listcontent=Arrays.asList(bag.inventory.getInventory().getContents()).stream().filter(p->p!=null&&p.getType()!=Material.AIR).collect(Collectors.toList()); if(content.size()>size) { for(int i1=content.size()-1;i1>=size;i1--) { content.remove(i1); @@ -325,11 +325,11 @@ public static void expandBackBag(Entity owner,String bag_name,int size) { } Inventory new_inv=Bukkit.createInventory(null,size); new_inv.setContents(content.toArray(new ItemStack[content.size()])); - bag.setInventory(new_inv); + bag.setInventory(bag_name,new_inv); } else { Inventory new_inv=Bukkit.createInventory(null,size); - new_inv.setContents(bag.inventory.getContents()); - bag.setInventory(new_inv); + new_inv.setContents(bag.inventory.getInventory().getContents()); + bag.setInventory(bag_name,new_inv); } } } diff --git a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagInventory.java b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagInventory.java index 35a637a9..7574ff71 100644 --- a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagInventory.java +++ b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/BackBagInventory.java @@ -63,7 +63,8 @@ public int getSize() { return this.size; } - public void setInventory(Inventory inventory) { + public void setInventory(String name,Inventory inventory) { + this.name=name; this.inventory=inventory; } diff --git a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/InventoryViewer.java b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/InventoryViewer.java index babfd144..128035de 100644 --- a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/InventoryViewer.java +++ b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/InventoryViewer.java @@ -13,7 +13,6 @@ import org.bukkit.inventory.Inventory; import com.gmail.berndivader.mythicmobsext.Main; -import com.gmail.berndivader.mythicmobsext.NMS.NMSUtils; public class diff --git a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/mechanics/CreateBackBag.java b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/mechanics/CreateBackBag.java index d4784f93..aa805f24 100644 --- a/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/mechanics/CreateBackBag.java +++ b/src/main/java/com/gmail/berndivader/mythicmobsext/backbags/mechanics/CreateBackBag.java @@ -5,6 +5,7 @@ import org.bukkit.inventory.ItemStack; +import com.gmail.berndivader.mythicmobsext.Main; import com.gmail.berndivader.mythicmobsext.backbags.BackBag; import com.gmail.berndivader.mythicmobsext.backbags.BackBagHelper; @@ -26,6 +27,7 @@ ItemStack[] default_items=null; PlaceholderString bag_name; boolean temporary,override,flood; + Listexcluded_slots; public CreateBackBag(String skill, MythicLineConfig mlc) { super(skill, mlc); @@ -43,11 +45,23 @@ public CreateBackBag(String skill, MythicLineConfig mlc) { bag_name=mlc.getPlaceholderString(new String[] {"title","name"},BackBagHelper.str_name); temporary=mlc.getBoolean("temporary",false); override=mlc.getBoolean("override",true); + String[]temp=mlc.getString("excludedslots","").split(","); + excluded_slots=new ArrayList<>(); + for(int i1=0;i1