package net.CyanWool.inventory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import net.CyanWool.api.entity.player.Human;
import net.CyanWool.api.inventory.Inventory;
import net.CyanWool.api.inventory.InventoryType;
import net.CyanWool.api.inventory.ItemStack;
public class CyanInventory implements Inventory {
private int size;
private String name;
private InventoryType type;
private Map<Integer, ItemStack> items;
private List<Human> viewers;
public CyanInventory(int size, String name, InventoryType type) {
this.size = size;
this.name = name;
this.type = type;
this.items = new HashMap<Integer, ItemStack>();
this.viewers = new CopyOnWriteArrayList<Human>();
}
@Override
public int getSize() {
return size;
}
@Override
public ItemStack getItemStack(int slot) {
if (items.containsKey(slot)) {
return items.get(slot);
}
return null;
}
@Override
public void setItemStack(int slot, ItemStack item) {
items.put(slot, item);
}
@Override
public String getName() {
return name;
}
@Override
public boolean hasCustomName() {
return getName() != null;
}
@Override
public boolean isUseableByPlayer(Human player) {
for (Human human : getViewers()) {
if (human.getEntityID() == player.getEntityID()) {
return true;
}
}
return false;
}
@Override
public void addItems(ItemStack... items) {
// todo
}
@Override
public ItemStack[] getContents() {
return (ItemStack[]) items.values().toArray();
}
@Override
public void setContents(ItemStack[] items) {
// this.items.values().add(items);
// TODO
}
@Override
public boolean contains(int materialId) {
for (ItemStack item : items.values()) {
if (item.getId() == materialId) {
return true;
}
}
return false;
}
@Override
public boolean contains(ItemStack item) {
for (ItemStack items : this.items.values()) {
if (items.equals(item)) {
return true;
}
}
return false;
}
@Override
public void clear() {
items.clear();
}
@Override
public List<Human> getViewers() {
return viewers;
}
@Override
public InventoryType getType() {
return type;
}
@Override
public void closeInventory(Human cyanHuman) {
// TODO Auto-generated method stub
}
@Override
public void openInventory(Human cyanHuman) {
// TODO Auto-generated method stub
}
}