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

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
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.