More intelligent funneling demand.
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user