diff --git a/src/common/basicpipes/pipes/TileEntityPipe.java b/src/common/basicpipes/pipes/TileEntityPipe.java index 4b12c8b0..4e037ad4 100644 --- a/src/common/basicpipes/pipes/TileEntityPipe.java +++ b/src/common/basicpipes/pipes/TileEntityPipe.java @@ -75,11 +75,10 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke //cause the block to update itself every tick needs to be change to .5 seconds to reduce load BlockPipe.updateConductorTileEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord); count++; - if(count >= 10 || intiUpdate && !this.worldObj.isRemote) + if(count >= 10 && !this.worldObj.isRemote) { PacketManager.sendTileEntityPacket(this, "Pipes", new Object[]{this.type.ordinal()}); count = 0; - intiUpdate = false; int connectedUnits = 0; @@ -100,7 +99,8 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke averagePresure2 += ((ILiquidProducer)connectedBlocks[i]).presureOutput(this.type,ForgeDirection.getOrientation(i)); producers++; } - }else + } + if(connectedBlocks[i] instanceof TileEntityPipe) { pipes ++; @@ -112,13 +112,6 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke { this.hPressure = pPressure; } - }else - if(connectedBlocks[i] instanceof ILiquidConsumer) - { - if(this.presure <= 1) - { - this.hPressure = 0; - } } } } @@ -154,14 +147,26 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke { int transferVolumeAmount = 0; //amount to be moved ILiquidConsumer connectedConsumer = ((ILiquidConsumer)connectedBlocks[i]); - - transferVolumeAmount = this.liquidStored; + if(connectedBlocks[i] instanceof TileEntityPipe) + { + if(((TileEntityPipe)connectedBlocks[i]).presure < this.presure) + { + transferVolumeAmount = this.liquidStored; + } + else + { + transferVolumeAmount = 0; + } + } + else + { + transferVolumeAmount = this.liquidStored; + } int rejectedVolume = connectedConsumer.onReceiveLiquid(this.type,transferVolumeAmount, ForgeDirection.getOrientation(i)); - this.liquidStored = Math.max(Math.min(this.liquidStored - transferVolumeAmount + rejectedVolume, 5), 0); + this.liquidStored = Math.max(Math.min(this.liquidStored - transferVolumeAmount + rejectedVolume, this.capacity), 0); } - } - + }else if(connectedBlocks[i] instanceof ILiquidProducer && this.liquidStored < this.getLiquidCapacity(type)) { if(((ILiquidProducer)connectedBlocks[i]).canProduceLiquid(this.type,ForgeDirection.getOrientation(i))) @@ -196,7 +201,7 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke { if(type == this.type) { - return 5; + return this.capacity; } return 0; } diff --git a/src/common/steampower/api/IHeatConsumer.java b/src/common/basicpipes/pipes/api/IHeatConsumer.java similarity index 96% rename from src/common/steampower/api/IHeatConsumer.java rename to src/common/basicpipes/pipes/api/IHeatConsumer.java index 31accc56..1c5a29e3 100644 --- a/src/common/steampower/api/IHeatConsumer.java +++ b/src/common/basicpipes/pipes/api/IHeatConsumer.java @@ -1,4 +1,4 @@ -package steampower.api; +package basicpipes.pipes.api; /** * The IHeatConsumer interface is an interface that must be applied to all tile entities that can receive heat joules. diff --git a/src/common/steampower/api/IHeatProducer.java b/src/common/basicpipes/pipes/api/IHeatProducer.java similarity index 93% rename from src/common/steampower/api/IHeatProducer.java rename to src/common/basicpipes/pipes/api/IHeatProducer.java index 879b36b1..d9271ce7 100644 --- a/src/common/steampower/api/IHeatProducer.java +++ b/src/common/basicpipes/pipes/api/IHeatProducer.java @@ -1,4 +1,4 @@ -package steampower.api; +package basicpipes.pipes.api; public interface IHeatProducer diff --git a/src/common/steampower/boiler/TileEntityBoiler.java b/src/common/steampower/boiler/TileEntityBoiler.java index c2f3b6d4..c55cda38 100644 --- a/src/common/steampower/boiler/TileEntityBoiler.java +++ b/src/common/steampower/boiler/TileEntityBoiler.java @@ -1,4 +1,6 @@ package steampower.boiler; +import java.util.Random; + import net.minecraft.src.Block; import net.minecraft.src.EntityPlayer; import net.minecraft.src.Item; @@ -13,6 +15,7 @@ import steampower.TileEntityMachine; import steampower.TradeHelper; import steampower.burner.TileEntityFireBox; import universalelectricity.network.IPacketReceiver; +import basicpipes.pipes.api.IHeatProducer; import basicpipes.pipes.api.ILiquidConsumer; import basicpipes.pipes.api.ILiquidProducer; import basicpipes.pipes.api.Liquid; @@ -49,13 +52,14 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv public TileEntity[] connectedBlocks = {null, null, null, null, null, null}; int steamMax = 140; public boolean isBeingHeated = false; + private Random random = new Random(); public String getInvName() { return "container.boiler"; } public Object[] getSendData() { - return new Object[]{(int)facing,(int)RunTime,(int)energyStore,(int)waterStored, + return new Object[]{(int)RunTime,(int)energyStore,(int)waterStored, (int)steamStored,(int)heatStored,(int)hullHeat,(int)heatTick}; } @@ -65,7 +69,7 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv ByteArrayDataInput dataStream) { try { - facing = dataStream.readInt(); + RunTime = dataStream.readInt(); energyStore = dataStream.readInt(); waterStored = dataStream.readInt(); @@ -170,10 +174,14 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv TileEntity blockE = worldObj.getBlockTileEntity(xCoord, yCoord -1, zCoord); this.isBeingHeated = false; - if(blockE instanceof TileEntityFireBox) + if(blockE instanceof IHeatProducer) { this.isBeingHeated = true; - heatStored = (int) Math.min((heatStored + ((TileEntityFireBox)blockE).onProduceHeat(SteamPowerMain.fireOutput*getTickInterval(), 1)), heatMax); + heatStored = (int) Math.min((heatStored + ((IHeatProducer)blockE).onProduceHeat(SteamPowerMain.fireOutput*getTickInterval(), 1)), heatMax); + } + else if(worldObj.getBlockId(xCoord, yCoord-1, zCoord) == Block.lavaStill.blockID) + { + heatStored += (int) Math.min((int)(random.nextDouble()*10)*getTickInterval(), heatMax); } } super.onUpdate(watts, voltage, side); diff --git a/src/common/steampower/burner/TileEntityFireBox.java b/src/common/steampower/burner/TileEntityFireBox.java index 9c659146..6a98435f 100644 --- a/src/common/steampower/burner/TileEntityFireBox.java +++ b/src/common/steampower/burner/TileEntityFireBox.java @@ -13,10 +13,11 @@ import net.minecraftforge.common.ISidedInventory; import steampower.SteamPowerMain; import steampower.TileEntityMachine; import steampower.TradeHelper; -import steampower.api.IHeatProducer; import steampower.boiler.TileEntityBoiler; import universalelectricity.network.IPacketReceiver; +import basicpipes.pipes.api.IHeatProducer; + import com.google.common.io.ByteArrayDataInput; public class TileEntityFireBox extends TileEntityMachine implements IPacketReceiver,IInventory, ISidedInventory, IHeatProducer