package com.bergerkiller.bukkit.common.inventory;
import java.util.Collection;
import org.bukkit.inventory.ItemStack;
import com.bergerkiller.bukkit.common.utils.ItemUtil;
/**
* A basic inventory implementation that uses a backing array of ItemStacks
*/
public class InventoryBaseImpl extends InventoryBase {
private final ItemStack[] items;
public InventoryBaseImpl(int size) {
this(new ItemStack[size], false);
}
public InventoryBaseImpl(Collection<ItemStack> contents) {
this(contents, true);
}
public InventoryBaseImpl(Collection<ItemStack> contents, boolean clone) {
this(contents.toArray(new ItemStack[0]), false);
if (clone) {
for (int i = 0; i < this.items.length; i++) {
this.items[i] = ItemUtil.cloneItem(this.items[i]);
}
}
}
public InventoryBaseImpl(ItemStack[] contents) {
this(contents, true);
}
public InventoryBaseImpl(ItemStack[] contents, boolean clone) {
if (clone) {
this.items = ItemUtil.cloneItems(contents);
} else {
this.items = contents;
}
}
@Override
public int getSize() {
return this.items.length;
}
@Override
public void setItem(int index, ItemStack item) {
this.items[index] = ItemUtil.cloneItem(item);
}
@Override
public ItemStack getItem(int index) {
return ItemUtil.cloneItem(this.items[index]);
}
@Override
public ItemStack[] getContents() {
return ItemUtil.cloneItems(this.items);
}
}