/*******************************************************************************
* AbyssalCraft
* Copyright (c) 2012 - 2017 Shinoow.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Contributors:
* Shinoow - implementation
******************************************************************************/
package com.shinoow.abyssalcraft.common.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.text.ITextComponent;
public class InventorySpellbook implements IInventory
{
private String name;
public static int INV_SIZE = 7;
private NonNullList<ItemStack> inventory;
private final ItemStack invItem;
/**
* @param itemstack - the ItemStack to which this inventory belongs
*/
public InventorySpellbook(ItemStack stack)
{
invItem = stack;
if (!stack.hasTagCompound())
stack.setTagCompound(new NBTTagCompound());
inventory = NonNullList.withSize(INV_SIZE, ItemStack.EMPTY);
name = stack.getDisplayName();
}
@Override
public int getSizeInventory()
{
return inventory.size();
}
@Override
public ItemStack getStackInSlot(int slot)
{
return inventory.get(slot);
}
@Override
public ItemStack decrStackSize(int slot, int amount)
{
return ItemStackHelper.getAndSplit(inventory, slot, amount);
}
@Override
public ItemStack removeStackFromSlot(int slot)
{
return ItemStackHelper.getAndRemove(inventory, slot);
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemstack)
{
inventory.set(slot, itemstack);
if (!itemstack.isEmpty() && itemstack.getCount() > getInventoryStackLimit())
itemstack.setCount(getInventoryStackLimit());
}
@Override
public String getName()
{
return name;
}
@Override
public boolean hasCustomName()
{
return name.length() > 0;
}
@Override
public ITextComponent getDisplayName() {
return null;
}
@Override
public int getInventoryStackLimit()
{
return 64;
}
@Override
public void markDirty(){}
@Override
public boolean isUsableByPlayer(EntityPlayer player)
{
return player.getHeldItem(EnumHand.MAIN_HAND) == invItem;
}
@Override
public void openInventory(EntityPlayer player) {}
@Override
public void closeInventory(EntityPlayer player) {}
@Override
public boolean isItemValidForSlot(int slot, ItemStack itemstack)
{
return slot > 6;
}
@Override
public int getField(int id) {
return 0;
}
@Override
public void setField(int id, int value) {
}
@Override
public int getFieldCount() {
return 0;
}
@Override
public void clear() {
inventory.clear();
}
@Override
public boolean isEmpty()
{
for (ItemStack itemstack : inventory)
if (!itemstack.isEmpty())
return false;
return true;
}
}