diff --git a/common/universalelectricity/compatibility/TileEntityUniversalConductor.java b/common/universalelectricity/compatibility/TileEntityUniversalConductor.java index 59b5b7e28..6ebab62e7 100644 --- a/common/universalelectricity/compatibility/TileEntityUniversalConductor.java +++ b/common/universalelectricity/compatibility/TileEntityUniversalConductor.java @@ -23,6 +23,7 @@ import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; import buildcraft.api.power.PowerHandler.Type; +import cofh.api.energy.IEnergyHandler; /** * A universal conductor class. @@ -33,7 +34,7 @@ import buildcraft.api.power.PowerHandler.Type; * @author Calclavia, micdoodle8 * */ -public abstract class TileEntityUniversalConductor extends TileEntityConductor implements IEnergySink, IPowerReceptor +public abstract class TileEntityUniversalConductor extends TileEntityConductor implements IEnergySink, IPowerReceptor, IEnergyHandler { protected boolean isAddedToEnergyNet; public PowerHandler powerHandler; @@ -65,7 +66,7 @@ public abstract class TileEntityUniversalConductor extends TileEntityConductor i this.adjacentConnections[i] = tileEntity; } } - else if (Compatibility.isIndustrialCraft2Loaded() && tileEntity instanceof IEnergyTile) + else if (tileEntity instanceof IEnergyTile) { if (tileEntity instanceof IEnergyAcceptor) { @@ -87,23 +88,26 @@ public abstract class TileEntityUniversalConductor extends TileEntityConductor i this.adjacentConnections[i] = tileEntity; } - else if (Compatibility.isBuildcraftLoaded() && tileEntity instanceof IPowerReceptor) + else if (tileEntity instanceof IPowerReceptor) { if (((IPowerReceptor) tileEntity).getPowerReceiver(side.getOpposite()) != null) { this.adjacentConnections[i] = tileEntity; } } + else if (tileEntity instanceof IEnergyHandler) + { + if (((IEnergyHandler) tileEntity).canInterface(side.getOpposite())) + { + this.adjacentConnections[i] = tileEntity; + } + } } } return this.adjacentConnections; } - /* - * @Override public boolean canUpdate() { return !this.isAddedToEnergyNet; } - */ - @Override public void updateEntity() { @@ -185,7 +189,7 @@ public abstract class TileEntityUniversalConductor extends TileEntityConductor i } /** - * BuildCraft functions + * BuildCraft Functions */ @Override public PowerReceiver getPowerReceiver(ForgeDirection side) @@ -214,4 +218,51 @@ public abstract class TileEntityUniversalConductor extends TileEntityConductor i { return this.getWorldObj(); } + + /** + * Thermal Expansion Functions + */ + + @Override + public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) + { + ElectricityPack pack = ElectricityPack.getFromWatts(maxReceive * Compatibility.TE_RATIO, 1); + float request = this.getMaxEnergyStored(from); + + if (!simulate) + { + if (request > 0) + { + return (int) (maxReceive - (this.getNetwork().produce(pack, new Vector3(this).modifyPositionFromSide(from).getTileEntity(this.worldObj)) * Compatibility.TO_TE_RATIO)); + } + + return 0; + } + + return (int) Math.min(maxReceive, request * Compatibility.TO_TE_RATIO); + } + + @Override + public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) + { + return 0; + } + + @Override + public boolean canInterface(ForgeDirection from) + { + return true; + } + + @Override + public int getEnergyStored(ForgeDirection from) + { + return 0; + } + + @Override + public int getMaxEnergyStored(ForgeDirection from) + { + return (int) (this.getNetwork().getRequest(new Vector3(this).modifyPositionFromSide(from).getTileEntity(this.worldObj)).getWatts() * Compatibility.TO_TE_RATIO); + } }