package com.bergerkiller.bukkit.common.inventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import com.bergerkiller.bukkit.common.utils.LogicUtil;
public class MergedInventory extends InventoryBase {
private final Inventory[] inventories;
private final int size;
public MergedInventory(Inventory... inventories) {
this.inventories = inventories;
int size = 0;
for (Inventory inventory : inventories) {
size += inventory.getSize();
}
this.size = size;
}
@Override
public ItemStack[] getContents() {
if (LogicUtil.nullOrEmpty(this.inventories)) {
return new ItemStack[0];
} else if (this.inventories.length == 1) {
return this.inventories[0].getContents();
} else {
ItemStack[] rval = new ItemStack[this.getSize()];
int i = 0;
for (Inventory inv : this.inventories) {
for (ItemStack stack : inv.getContents()) {
rval[i] = stack;
i++;
}
}
return rval;
}
}
@Override
public int getSize() {
return this.size;
}
@Override
public ItemStack getItem(int index) {
int size;
for (Inventory inventory : this.inventories) {
size = inventory.getSize();
if (index < size) {
return inventory.getItem(index);
} else {
index -= size;
}
}
return null;
}
@Override
public void setItem(int index, ItemStack arg1) {
int size;
for (Inventory inventory : this.inventories) {
size = inventory.getSize();
if (index < size) {
inventory.setItem(index, arg1);
return;
} else {
index -= size;
}
}
}
}