package buildcraftAdditions.tileEntities; /** * 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/ */ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.common.FMLCommonHandler; import cofh.api.energy.IEnergyContainerItem; import buildcraftAdditions.config.ConfigurationHandler; import buildcraftAdditions.inventories.CustomInventory; import buildcraftAdditions.reference.Variables; import buildcraftAdditions.tileEntities.Bases.TileMachineBase; public class TileChargingStation extends TileMachineBase implements IInventory { private final CustomInventory inventory = new CustomInventory("ChargingStation", 1, 1, this); public TileChargingStation() { super(ConfigurationHandler.capacityChargingStation, ConfigurationHandler.maxTransferChargingStation, Variables.SyncIDs.CHARGING_STATION.ordinal()); } @Override public void updateEntity() { super.updateEntity(); if (energy > 0 && getRequiredEnergy() > 0) { ItemStack stack = getStackInSlot(0); IEnergyContainerItem containerItem = (IEnergyContainerItem) stack.getItem(); energy -= containerItem.receiveEnergy(stack, Math.min(energy, maxTransfer), false); } } public int getRequiredEnergy() { ItemStack stack = getStackInSlot(0); if (stack != null && stack.getItem() != null && stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem containerItem = (IEnergyContainerItem) stack.getItem(); return containerItem.getMaxEnergyStored(stack) - containerItem.getEnergyStored(stack); } return 0; } @Override public boolean canUpdate() { return !FMLCommonHandler.instance().getEffectiveSide().isClient(); } @Override public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); inventory.readFromNBT(nbtTagCompound); } @Override public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); inventory.writeToNBT(nbtTagCompound); } @Override public int getSizeInventory() { return inventory.getSizeInventory(); } @Override public ItemStack getStackInSlot(int var1) { return inventory.getStackInSlot(var1); } @Override public ItemStack decrStackSize(int var1, int var2) { return inventory.decrStackSize(var1, var2); } @Override public ItemStack getStackInSlotOnClosing(int var1) { return inventory.getStackInSlotOnClosing(var1); } @Override public void setInventorySlotContents(int var1, ItemStack var2) { inventory.setInventorySlotContents(var1, var2); } @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 stack != null && stack.getItem() instanceof IEnergyContainerItem; } public double getProgress() { ItemStack stack = inventory.getStackInSlot(0); if (stack != null) if (stack.getItem() instanceof IEnergyContainerItem) { IEnergyContainerItem battery = (IEnergyContainerItem) stack.getItem(); return battery.getEnergyStored(stack) / battery.getMaxEnergyStored(stack); } return 0; } }