Skip to content

Commit

Permalink
fixed signal issue in backbags
Browse files Browse the repository at this point in the history
BerndiVader committed Sep 28, 2019
1 parent 4770e67 commit b9a56a9
Showing 5 changed files with 36 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -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<Integer> 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);
Original file line number Diff line number Diff line change
@@ -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,19 +317,19 @@ 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) {
List<ItemStack>content=Arrays.asList(bag.inventory.getContents()).stream().filter(p->p!=null&&p.getType()!=Material.AIR).collect(Collectors.toList());
List<ItemStack>content=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);
}
}
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);
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
}

Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@
import org.bukkit.inventory.Inventory;

import com.gmail.berndivader.mythicmobsext.Main;
import com.gmail.berndivader.mythicmobsext.NMS.NMSUtils;

public
class
Original file line number Diff line number Diff line change
@@ -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;
List<Integer>excluded_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<temp.length;i1++) {
try {
if(!temp[i1].isEmpty()) {
int slot=Integer.parseInt(temp[i1]);
excluded_slots.add(slot);
}
} catch (Exception ex) {
Main.logger.warning("Ignoring "+temp[i1]+" in skill "+skill+" its not a valid slot number.");
}
}
}

@Override
public boolean cast(SkillMetadata data) {
return (new BackBag(data.getCaster().getEntity().getBukkitEntity(),size,default_items,bag_name.get(data),temporary,override))!=null;
return (new BackBag(data.getCaster().getEntity().getBukkitEntity(),size,default_items,bag_name.get(data),temporary,override,excluded_slots))!=null;
}

}

0 comments on commit b9a56a9

Please sign in to comment.