package buildcraftAdditions.tileEntities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntityFurnace; import buildcraftAdditions.config.ConfigurationHandler; import buildcraftAdditions.inventories.CustomInventory; import buildcraftAdditions.reference.Variables; import buildcraftAdditions.tileEntities.Bases.TileCoilBase; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ public class TileBasicCoil extends TileCoilBase implements IInventory { private final CustomInventory inventory = new CustomInventory("BasicCoil", 1, 64, this); public TileBasicCoil() { super(Variables.SyncIDs.BASIC_COIL.ordinal()); burnTime = 0; fullBurnTime = 0; shouldHeat = false; burning = false; } @Override public void updateEntity() { super.updateEntity(); if (burnTime == 0) { burning = false; if (shouldHeat) burn(); } if (burning) burnTime--; if (burning && increment < ConfigurationHandler.basicCoilHeat) increment++; if (!burning && increment > 0) increment--; } public void burn() { ItemStack stack = getStackInSlot(0); if (stack != null && stack.getItem() != null && stack.stackSize > 0) { burnTime = getBurnTime(stack); fullBurnTime = burnTime; stack.stackSize--; if (stack.stackSize <= 0) setInventorySlotContents(0, stack.getItem().getContainerItem(stack)); burning = true; } } @Override public void writeToNBT(NBTTagCompound tag) { super.writeToNBT(tag); inventory.writeToNBT(tag); } @Override public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); inventory.readFromNBT(tag); } @Override public int getSizeInventory() { return inventory.getSizeInventory(); } @Override public ItemStack getStackInSlot(int slot) { return inventory.getStackInSlot(slot); } @Override public ItemStack decrStackSize(int slot, int amount) { return inventory.decrStackSize(slot, amount); } @Override public ItemStack getStackInSlotOnClosing(int slot) { return inventory.getStackInSlotOnClosing(slot); } @Override public void setInventorySlotContents(int slot, ItemStack stack) { inventory.setInventorySlotContents(slot, stack); } @Override public String getInventoryName() { return inventory.getInventoryName(); } @Override public boolean hasCustomInventoryName() { return inventory.hasCustomInventoryName(); } @Override public int getInventoryStackLimit() { return inventory.getInventoryStackLimit(); } @Override public boolean isUseableByPlayer(EntityPlayer player) { return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64.0D; } @Override public void openInventory() { } @Override public void closeInventory() { } @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return getBurnTime(stack) != 0; } public int getBurnTime(ItemStack stack) { return TileEntityFurnace.getItemBurnTime(stack) * 5; } public int getBurnIconHeight() { if (fullBurnTime == 0) return 0; return (burnTime * ConfigurationHandler.basicCoilHeat) / fullBurnTime; } }