diff --git a/common/buildcraft/transport/PipeTransportItems.java b/common/buildcraft/transport/PipeTransportItems.java index f54e6b00..2f53968d 100644 --- a/common/buildcraft/transport/PipeTransportItems.java +++ b/common/buildcraft/transport/PipeTransportItems.java @@ -9,18 +9,7 @@ package buildcraft.transport; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.TreeMap; -import java.util.TreeSet; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import cpw.mods.fml.common.network.PacketDispatcher; - import buildcraft.BuildCraftTransport; -import net.minecraftforge.common.ForgeDirection; import buildcraft.api.core.Position; import buildcraft.api.gates.ITrigger; import buildcraft.api.inventory.ISpecialInventory; @@ -34,7 +23,14 @@ import buildcraft.core.network.PacketIds; import buildcraft.core.proxy.CoreProxy; import buildcraft.core.utils.Utils; import buildcraft.transport.network.PacketPipeTransportContent; - +import cpw.mods.fml.common.network.PacketDispatcher; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.TreeSet; import net.minecraft.src.EntityItem; import net.minecraft.src.IInventory; import net.minecraft.src.ItemStack; @@ -42,6 +38,7 @@ import net.minecraft.src.NBTTagCompound; import net.minecraft.src.NBTTagList; import net.minecraft.src.Packet; import net.minecraft.src.TileEntity; +import net.minecraftforge.common.ForgeDirection; public class PipeTransportItems extends PipeTransport { @@ -165,10 +162,11 @@ public class PipeTransportItems extends PipeTransport { data.blacklist.add(data.input.getOpposite()); - for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) + for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { if (!data.blacklist.contains(o) && container.pipe.outputOpen(o)) if (canReceivePipeObjects(o, data.item)) result.add(o); + } if (result.size() == 0 && allowBouncing) { if (canReceivePipeObjects(data.input.getOpposite(), data.item)) @@ -345,7 +343,7 @@ public class PipeTransportItems extends PipeTransport { NBTTagList nbttaglist = nbt.getTagList("travelingEntities"); - for (int j = 0; j < nbttaglist.tagCount(); ++j) + for (int j = 0; j < nbttaglist.tagCount(); ++j) { try { NBTTagCompound dataTag = (NBTTagCompound) nbttaglist.tagAt(j); @@ -369,6 +367,7 @@ public class PipeTransportItems extends PipeTransport { // It may be the case that entities cannot be reloaded between // two versions - ignore these errors. } + } } @Override @@ -403,7 +402,7 @@ public class PipeTransportItems extends PipeTransport { EntityData data = travelingEntities.remove(packet.getEntityId()); - IPipedItem item = null; + IPipedItem item; if(data == null) { item = EntityPassiveItem.getOrCreate(worldObj, packet.getEntityId()); } else { diff --git a/common/buildcraft/transport/PipeTransportLiquids.java b/common/buildcraft/transport/PipeTransportLiquids.java index 085c1fd1..52252ce6 100644 --- a/common/buildcraft/transport/PipeTransportLiquids.java +++ b/common/buildcraft/transport/PipeTransportLiquids.java @@ -137,12 +137,14 @@ public class PipeTransportLiquids extends PipeTransport implements ITankContaine public byte initClient = 0; public short travelDelay = 12; - public short flowRate = 20; + public short flowRate = 10; public LiquidStack[] renderCache = new LiquidStack[orientations.length]; private final PipeSection[] internalTanks = new PipeSection[orientations.length]; private final TransferState[] transferState = new TransferState[directions.length]; + + private final int[] inputPerTick = new int[directions.length]; private final short[] inputTTL = new short[] { 0, 0, 0, 0, 0, 0 }; private final short[] outputTTL = new short[] { OUTPUT_TTL, OUTPUT_TTL, OUTPUT_TTL, OUTPUT_TTL, OUTPUT_TTL, OUTPUT_TTL }; @@ -358,7 +360,6 @@ public class PipeTransportLiquids extends PipeTransport implements ITankContaine } private void moveToCenter() { - int [] maxInput = new int[] {0,0,0,0,0,0}; int transferInCount = 0; LiquidStack stackInCenter = internalTanks[ForgeDirection.UNKNOWN.ordinal()].drain(flowRate, false); int spaceAvailable = internalTanks[ForgeDirection.UNKNOWN.ordinal()].getCapacity(); @@ -367,27 +368,35 @@ public class PipeTransportLiquids extends PipeTransport implements ITankContaine } - for (ForgeDirection direction : directions){ - LiquidStack testStack = internalTanks[direction.ordinal()].drain(flowRate, false); - if (testStack == null) continue; - if (stackInCenter != null && !stackInCenter.isLiquidEqual(testStack)) continue; - maxInput[direction.ordinal()] = testStack.amount; + for (ForgeDirection dir : directions) { + inputPerTick[dir.ordinal()] = 0; + if (transferState[dir.ordinal()] == TransferState.Output) { + continue; + } + LiquidStack testStack = internalTanks[dir.ordinal()].drain(flowRate, false); + if (testStack == null) { + continue; + } + if (stackInCenter != null && !stackInCenter.isLiquidEqual(testStack)) { + continue; + } + inputPerTick[dir.ordinal()] = testStack.amount; transferInCount++; } - for (ForgeDirection direction : directions){ + for (ForgeDirection dir : directions) { //Move liquid from input sides to the center - if (transferState[direction.ordinal()] != TransferState.Output && maxInput[direction.ordinal()] > 0){ + if (transferState[dir.ordinal()] != TransferState.Output && inputPerTick[dir.ordinal()] > 0) { - int ammountToDrain = (int) ((double) maxInput[direction.ordinal()] / (double) flowRate / (double) transferInCount * (double) Math.min(flowRate, spaceAvailable)); - if (ammountToDrain < 1){ + int ammountToDrain = (int) ((double) inputPerTick[dir.ordinal()] / (double) flowRate / (double) transferInCount * (double) Math.min(flowRate, spaceAvailable)); + if (ammountToDrain < 1) { ammountToDrain++; } - LiquidStack liquidToPush = internalTanks[direction.ordinal()].drain(ammountToDrain, false); + LiquidStack liquidToPush = internalTanks[dir.ordinal()].drain(ammountToDrain, false); if (liquidToPush != null) { int filled = internalTanks[ForgeDirection.UNKNOWN.ordinal()].fill(liquidToPush, true); - internalTanks[direction.ordinal()].drain(filled, true); + internalTanks[dir.ordinal()].drain(filled, true); } } } diff --git a/common/buildcraft/transport/pipes/PipeLiquidsGold.java b/common/buildcraft/transport/pipes/PipeLiquidsGold.java index 63777391..1bff0b62 100644 --- a/common/buildcraft/transport/pipes/PipeLiquidsGold.java +++ b/common/buildcraft/transport/pipes/PipeLiquidsGold.java @@ -8,17 +8,17 @@ package buildcraft.transport.pipes; -import net.minecraftforge.common.ForgeDirection; import buildcraft.core.DefaultProps; import buildcraft.transport.Pipe; import buildcraft.transport.PipeTransportLiquids; +import net.minecraftforge.common.ForgeDirection; public class PipeLiquidsGold extends Pipe { public PipeLiquidsGold(int itemID) { super(new PipeTransportLiquids(), new PipeLogicGold(), itemID); - ((PipeTransportLiquids) transport).flowRate = 80; + ((PipeTransportLiquids) transport).flowRate = 40; ((PipeTransportLiquids) transport).travelDelay = 4; }