diff --git a/tile/networking/TileController.java b/tile/networking/TileController.java index beb5ffdfc..4516513c1 100644 --- a/tile/networking/TileController.java +++ b/tile/networking/TileController.java @@ -39,7 +39,7 @@ public class TileController extends AENetworkPowerTile implements IAEPowerStorag } @Override - protected double getFunnelPowerDemand() + protected double getFunnelPowerDemand(double maxRecived) { try { @@ -48,7 +48,7 @@ public class TileController extends AENetworkPowerTile implements IAEPowerStorag catch (GridAccessException e) { // no grid? use local... - return super.getFunnelPowerDemand(); + return super.getFunnelPowerDemand( maxRecived ); } } diff --git a/tile/networking/TileEnergyAcceptor.java b/tile/networking/TileEnergyAcceptor.java index b44f96f3c..29a262fcb 100644 --- a/tile/networking/TileEnergyAcceptor.java +++ b/tile/networking/TileEnergyAcceptor.java @@ -57,6 +57,20 @@ public class TileEnergyAcceptor extends AENetworkPowerTile } }; + @Override + protected double getFunnelPowerDemand(double maxRequired) + { + try + { + IEnergyGrid grid = gridProxy.getEnergy(); + return grid.getEnergyDemand( maxRequired ); + } + catch (GridAccessException e) + { + return super.getFunnelPowerDemand( maxRequired ); + } + } + @Override protected double funnelPowerIntoStorage(double newPower, Actionable mode) { diff --git a/tile/powersink/AERootPoweredTile.java b/tile/powersink/AERootPoweredTile.java index 283862306..b6c3cadfd 100644 --- a/tile/powersink/AERootPoweredTile.java +++ b/tile/powersink/AERootPoweredTile.java @@ -65,12 +65,12 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe addNewHandler( new AEPoweredRootHandler() ); } - final protected double getExternalPowerDemand(PowerUnits externalUnit) + final protected double getExternalPowerDemand(PowerUnits externalUnit, double maxPowerRequired) { - return PowerUnits.AE.convertTo( externalUnit, Math.max( 0.0, getFunnelPowerDemand() ) ); + return PowerUnits.AE.convertTo( externalUnit, Math.max( 0.0, getFunnelPowerDemand( externalUnit.convertTo( PowerUnits.AE, maxPowerRequired ) ) ) ); } - protected double getFunnelPowerDemand() + protected double getFunnelPowerDemand(double maxRequired) { return internalMaxPower - internalCurrentPower; } diff --git a/tile/powersink/IC2.java b/tile/powersink/IC2.java index 680caab4f..9f92355af 100644 --- a/tile/powersink/IC2.java +++ b/tile/powersink/IC2.java @@ -27,7 +27,7 @@ public abstract class IC2 extends MinecraftJoules6 implements IEnergySink @Override final public double demandedEnergyUnits() { - return getExternalPowerDemand( PowerUnits.EU ); + return getExternalPowerDemand( PowerUnits.EU, Double.MAX_VALUE ); } @Override diff --git a/tile/powersink/MinecraftJoules5.java b/tile/powersink/MinecraftJoules5.java index 001c77aa0..d16c58f30 100644 --- a/tile/powersink/MinecraftJoules5.java +++ b/tile/powersink/MinecraftJoules5.java @@ -55,7 +55,7 @@ public abstract class MinecraftJoules5 extends AERootPoweredTile implements IPow @Method(iname = "MJ5") final public void doWork(PowerHandler workProvider) { - float requred = (float) getExternalPowerDemand( PowerUnits.MJ ); + float requred = (float) getExternalPowerDemand( PowerUnits.MJ, bcPowerWrapper.getPowerReceiver().getEnergyStored() ); double failed = injectExternalPower( PowerUnits.MJ, bcPowerWrapper.useEnergy( 0.0f, requred, true ) ); if ( failed > 0.01 ) bcPowerWrapper.addEnergy( (float) failed ); diff --git a/tile/powersink/MinecraftJoules6.java b/tile/powersink/MinecraftJoules6.java index a4588668c..bab841c35 100644 --- a/tile/powersink/MinecraftJoules6.java +++ b/tile/powersink/MinecraftJoules6.java @@ -23,7 +23,7 @@ public abstract class MinecraftJoules6 extends MinecraftJoules5 implements IBatt @Method(iname = "MJ6") public double getEnergyRequested() { - return getExternalPowerDemand( PowerUnits.MJ ); + return getExternalPowerDemand( PowerUnits.MJ, Double.MAX_VALUE ); } @Override diff --git a/tile/powersink/RedstoneFlux.java b/tile/powersink/RedstoneFlux.java index 765cda86c..962e9ce5e 100644 --- a/tile/powersink/RedstoneFlux.java +++ b/tile/powersink/RedstoneFlux.java @@ -14,14 +14,14 @@ public abstract class RedstoneFlux extends RotaryCraft implements IEnergyHandler { if ( simulate ) { - double demand = getExternalPowerDemand( PowerUnits.RF ); + double demand = getExternalPowerDemand( PowerUnits.RF, maxReceive ); if ( demand > maxReceive ) return maxReceive; return (int) Math.floor( maxReceive - demand ); } else { - int demand = (int) Math.floor( getExternalPowerDemand( PowerUnits.RF ) ); + int demand = (int) Math.floor( getExternalPowerDemand( PowerUnits.RF, maxReceive ) ); int ignored = 0; int insertAmt = maxReceive;