package mcjty.rftools.blocks.dimlets; import cofh.api.energy.IEnergyConnection; import mcjty.lib.entity.GenericEnergyProviderTileEntity; import mcjty.rftools.dimension.DimensionStorage; import mcjty.rftools.varia.EnergyTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; public class EnergyExtractorTileEntity extends GenericEnergyProviderTileEntity { public EnergyExtractorTileEntity() { super(DimletConfiguration.EXTRACTOR_MAXENERGY, DimletConfiguration.EXTRACTOR_SENDPERTICK); } @Override protected void checkStateServer() { super.checkStateServer(); int energyStored = getEnergyStored(ForgeDirection.DOWN); if (energyStored < DimletConfiguration.EXTRACTOR_MAXENERGY) { // Get energy out of the dimension. DimensionStorage storage = DimensionStorage.getDimensionStorage(worldObj); int dimensionEnergy = storage.getEnergyLevel(worldObj.provider.dimensionId); int needed = DimletConfiguration.EXTRACTOR_MAXENERGY - energyStored; if (needed > dimensionEnergy) { needed = dimensionEnergy; } if (needed > 0) { energyStored += needed; dimensionEnergy -= needed; modifyEnergyStored(needed); storage.setEnergyLevel(worldObj.provider.dimensionId, dimensionEnergy); storage.save(worldObj); } } if (energyStored <= 0) { return; } int rf = DimletConfiguration.EXTRACTOR_SENDPERTICK; for (int i = 0 ; i < 6 ; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); TileEntity te = worldObj.getTileEntity(xCoord+dir.offsetX, yCoord+dir.offsetY, zCoord+dir.offsetZ); if (EnergyTools.isEnergyTE(te)) { IEnergyConnection connection = (IEnergyConnection) te; ForgeDirection opposite = dir.getOpposite(); if (connection.canConnectEnergy(opposite)) { int rfToGive; if (rf <= energyStored) { rfToGive = rf; } else { rfToGive = energyStored; } int received = EnergyTools.receiveEnergy(te, opposite, rfToGive); energyStored -= extractEnergy(ForgeDirection.DOWN, received, false); if (energyStored <= 0) { return; } } } } } @Override public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); } @Override public void readRestorableFromNBT(NBTTagCompound tagCompound) { super.readRestorableFromNBT(tagCompound); } @Override public void writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); } @Override public void writeRestorableToNBT(NBTTagCompound tagCompound) { super.writeRestorableToNBT(tagCompound); } }