This commit is contained in:
AlgorithmX2 2014-06-03 20:49:40 -05:00
commit 883292a7b1
9 changed files with 36 additions and 16 deletions

View file

@ -319,6 +319,7 @@ public class BC extends BaseModule implements IBC
if ( blk == null || blk.length < 1 ) if ( blk == null || blk.length < 1 )
return null; return null;
if ( blk[0] != null )
return new ItemStack( blk[0], 1, meta[0] ); return new ItemStack( blk[0], 1, meta[0] );
} }
catch (Throwable t) catch (Throwable t)
@ -329,6 +330,7 @@ public class BC extends BaseModule implements IBC
try try
{ {
Block blk = ItemFacade.getBlock( facade ); Block blk = ItemFacade.getBlock( facade );
if ( blk != null )
return new ItemStack( blk, 1, ItemFacade.getMetaData( facade ) ); return new ItemStack( blk, 1, ItemFacade.getMetaData( facade ) );
} }
catch (Throwable t) catch (Throwable t)

View file

@ -9,6 +9,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemSkull;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -33,6 +34,7 @@ import appeng.api.networking.security.BaseActionSource;
import appeng.api.parts.IPart; import appeng.api.parts.IPart;
import appeng.api.parts.IPartCollsionHelper; import appeng.api.parts.IPartCollsionHelper;
import appeng.api.parts.IPartHost; import appeng.api.parts.IPartHost;
import appeng.api.parts.IPartItem;
import appeng.api.parts.IPartRenderHelper; import appeng.api.parts.IPartRenderHelper;
import appeng.api.storage.ICellContainer; import appeng.api.storage.ICellContainer;
import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEInventory;
@ -379,7 +381,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
if ( w.getBlock( x, y, z ).isReplaceable( w, x, y, z ) ) if ( w.getBlock( x, y, z ).isReplaceable( w, x, y, z ) )
{ {
if ( i instanceof ItemBlock || i instanceof IPlantable ) if ( i instanceof ItemBlock || i instanceof IPlantable || i instanceof ItemSkull || i instanceof IPartItem )
{ {
EntityPlayer player = Platform.getPlayer( (WorldServer) w ); EntityPlayer player = Platform.getPlayer( (WorldServer) w );
Platform.configurePlayer( player, side, tile ); Platform.configurePlayer( player, side, tile );
@ -388,7 +390,7 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
worked = true; worked = true;
if ( type == Actionable.MODULATE ) if ( type == Actionable.MODULATE )
{ {
if ( i instanceof IPlantable ) if ( i instanceof IPlantable || i instanceof ItemSkull )
{ {
boolean Worked = false; boolean Worked = false;
@ -396,13 +398,15 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
Worked = i.onItemUse( is, player, w, x + side.offsetX, y + side.offsetY, z + side.offsetZ, side.getOpposite().ordinal(), Worked = i.onItemUse( is, player, w, x + side.offsetX, y + side.offsetY, z + side.offsetZ, side.getOpposite().ordinal(),
side.offsetX, side.offsetY, side.offsetZ ); side.offsetX, side.offsetY, side.offsetZ );
if ( Worked == false && side.offsetX == 0 && side.offsetZ == 0 )
Worked = i.onItemUse( is, player, w, x-side.offsetX, y-side.offsetY, z-side.offsetZ, side.ordinal(), side.offsetX, side.offsetY, side.offsetZ );
if ( Worked == false && side.offsetY == 0 ) if ( Worked == false && side.offsetY == 0 )
Worked = i.onItemUse( is, player, w, x, y - 1, z, ForgeDirection.UP.ordinal(), side.offsetX, side.offsetY, side.offsetZ ); Worked = i.onItemUse( is, player, w, x, y - 1, z, ForgeDirection.UP.ordinal(), side.offsetX, side.offsetY, side.offsetZ );
if ( Worked == false ) if ( Worked == false )
Worked = i.onItemUse( is, player, w, x, y, z, side.getOpposite().ordinal(), side.offsetX, side.offsetY, side.offsetZ ); Worked = i.onItemUse( is, player, w, x, y, z, side.getOpposite().ordinal(), side.offsetX, side.offsetY, side.offsetZ );
if ( Worked )
maxStorage = maxStorage - is.stackSize; maxStorage = maxStorage - is.stackSize;
} }
else else

View file

@ -39,7 +39,7 @@ public class TileController extends AENetworkPowerTile implements IAEPowerStorag
} }
@Override @Override
protected double getFunnelPowerDemand() protected double getFunnelPowerDemand(double maxRecived)
{ {
try try
{ {
@ -48,7 +48,7 @@ public class TileController extends AENetworkPowerTile implements IAEPowerStorag
catch (GridAccessException e) catch (GridAccessException e)
{ {
// no grid? use local... // no grid? use local...
return super.getFunnelPowerDemand(); return super.getFunnelPowerDemand( maxRecived );
} }
} }

View file

@ -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 @Override
protected double funnelPowerIntoStorage(double newPower, Actionable mode) protected double funnelPowerIntoStorage(double newPower, Actionable mode)
{ {

View file

@ -65,12 +65,12 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe
addNewHandler( new AEPoweredRootHandler() ); 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; return internalMaxPower - internalCurrentPower;
} }

View file

@ -27,7 +27,7 @@ public abstract class IC2 extends MinecraftJoules6 implements IEnergySink
@Override @Override
final public double demandedEnergyUnits() final public double demandedEnergyUnits()
{ {
return getExternalPowerDemand( PowerUnits.EU ); return getExternalPowerDemand( PowerUnits.EU, Double.MAX_VALUE );
} }
@Override @Override

View file

@ -55,7 +55,7 @@ public abstract class MinecraftJoules5 extends AERootPoweredTile implements IPow
@Method(iname = "MJ5") @Method(iname = "MJ5")
final public void doWork(PowerHandler workProvider) 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 ) ); double failed = injectExternalPower( PowerUnits.MJ, bcPowerWrapper.useEnergy( 0.0f, requred, true ) );
if ( failed > 0.01 ) if ( failed > 0.01 )
bcPowerWrapper.addEnergy( (float) failed ); bcPowerWrapper.addEnergy( (float) failed );

View file

@ -23,7 +23,7 @@ public abstract class MinecraftJoules6 extends MinecraftJoules5 implements IBatt
@Method(iname = "MJ6") @Method(iname = "MJ6")
public double getEnergyRequested() public double getEnergyRequested()
{ {
return getExternalPowerDemand( PowerUnits.MJ ); return getExternalPowerDemand( PowerUnits.MJ, Double.MAX_VALUE );
} }
@Override @Override

View file

@ -14,14 +14,14 @@ public abstract class RedstoneFlux extends RotaryCraft implements IEnergyHandler
{ {
if ( simulate ) if ( simulate )
{ {
double demand = getExternalPowerDemand( PowerUnits.RF ); double demand = getExternalPowerDemand( PowerUnits.RF, maxReceive );
if ( demand > maxReceive ) if ( demand > maxReceive )
return maxReceive; return maxReceive;
return (int) Math.floor( maxReceive - demand ); return (int) Math.floor( maxReceive - demand );
} }
else else
{ {
int demand = (int) Math.floor( getExternalPowerDemand( PowerUnits.RF ) ); int demand = (int) Math.floor( getExternalPowerDemand( PowerUnits.RF, maxReceive ) );
int ignored = 0; int ignored = 0;
int insertAmt = maxReceive; int insertAmt = maxReceive;