package mekanism.common.tile;
import mekanism.common.security.ISecurityTile;
import mekanism.common.tile.component.TileComponentSecurity;
import mekanism.common.util.InventoryUtils;
import mekanism.common.util.SecurityUtils;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.SoundCategory;
import net.minecraftforge.fml.relauncher.Side;
public class TileEntityPersonalChest extends TileEntityContainerBlock implements ISecurityTile
{
public static int[] INV;
public float lidAngle;
public float prevLidAngle;
public TileComponentSecurity securityComponent;
public TileEntityPersonalChest()
{
super("PersonalChest");
inventory = new ItemStack[54];
securityComponent = new TileComponentSecurity(this);
}
@Override
public void onUpdate()
{
prevLidAngle = lidAngle;
float increment = 0.1F;
if((playersUsing.size() > 0) && (lidAngle == 0.0F))
{
worldObj.playSound(null, getPos().getX() + 0.5F, getPos().getY() + 0.5D, getPos().getZ() + 0.5F, SoundEvents.BLOCK_CHEST_OPEN, SoundCategory.BLOCKS, 0.5F, (worldObj.rand.nextFloat()*0.1F) + 0.9F);
}
if((playersUsing.size() == 0 && lidAngle > 0.0F) || (playersUsing.size() > 0 && lidAngle < 1.0F))
{
float angle = lidAngle;
if(playersUsing.size() > 0)
{
lidAngle += increment;
}
else {
lidAngle -= increment;
}
if(lidAngle > 1.0F)
{
lidAngle = 1.0F;
}
float split = 0.5F;
if(lidAngle < split && angle >= split)
{
worldObj.playSound(null, getPos().getX() + 0.5D, getPos().getY() + 0.5D, getPos().getZ() + 0.5D, SoundEvents.BLOCK_CHEST_CLOSE, SoundCategory.BLOCKS, 0.5F, (worldObj.rand.nextFloat()*0.1F) + 0.9F);
}
if(lidAngle < 0.0F)
{
lidAngle = 0.0F;
}
}
}
@Override
public boolean isItemValidForSlot(int slotID, ItemStack itemstack)
{
return true;
}
@Override
public int[] getSlotsForFace(EnumFacing side)
{
if(side == EnumFacing.DOWN || SecurityUtils.getSecurity(this, Side.SERVER) != SecurityMode.PUBLIC)
{
return InventoryUtils.EMPTY;
}
else {
if(INV == null)
{
INV = new int[54];
for(int i = 0; i < INV.length; i++)
{
INV[i] = i;
}
}
return INV;
}
}
@Override
public boolean canExtractItem(int slotID, ItemStack itemstack, EnumFacing side)
{
return true;
}
@Override
public boolean canSetFacing(int side)
{
return side != 0 && side != 1;
}
@Override
public TileComponentSecurity getSecurity()
{
return securityComponent;
}
}