From 0a020c24dfb52f361d07587580803990edf49f85 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Tue, 26 Mar 2013 13:49:00 -0400 Subject: [PATCH] Change out the canConnect methods removed the old canConnect methods from every class that used it and replaced it with the new one still matching how the class used the old one. Though i'm concerned that the new method might increase processor use a bit since it sifts threw all stacks that the pipe can handle instead of the first valid one. --- .../common/machines/TileEntityMinorPump.java | 31 ++++++++++++------- .../machines/TileEntityReleaseValve.java | 11 +++++-- .../common/machines/TileEntityTank.java | 12 +++---- .../common/machines/pipes/TileEntityPipe.java | 10 ++++-- src/minecraft/hydraulic/api/ColorCode.java | 17 +++++++++- .../core/liquidNetwork/HydraulicNetwork.java | 2 +- 6 files changed, 59 insertions(+), 24 deletions(-) diff --git a/src/minecraft/fluidmech/common/machines/TileEntityMinorPump.java b/src/minecraft/fluidmech/common/machines/TileEntityMinorPump.java index be8e07004..82a0c8c83 100644 --- a/src/minecraft/fluidmech/common/machines/TileEntityMinorPump.java +++ b/src/minecraft/fluidmech/common/machines/TileEntityMinorPump.java @@ -105,6 +105,10 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement } + /** + * gets the fluidConductor or storageTank to ouput its pumped liquids too if there is not one it + * will not function + */ public ITankContainer getFillTarget() { TileEntity ent = worldObj.getBlockTileEntity(xCoord + pipeConnection.offsetX, yCoord + pipeConnection.offsetY, zCoord + pipeConnection.offsetZ); @@ -138,7 +142,11 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement double amps = (this.WATTS_PER_TICK / this.getVoltage()); return new ElectricityPack(amps, this.getVoltage()); } - + /** + * checks to see if this pump can pump the selected target block + * @param x y z - location of the block, use the tileEntities world + * @return true if it can pump + */ boolean canPump(int x, int y, int z) { int blockID = worldObj.getBlockId(x, y, z); @@ -168,9 +176,9 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement } /** - * drains the block or in other words removes it + * drains the block(removes) at the location given * - * @param loc + * @param loc - vector 3 location * @return true if the block was drained */ boolean drainBlock(Vector3 loc) @@ -180,13 +188,14 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement LiquidData resource = LiquidHandler.getFromBlockID(blockID); - if (color.isValidLiquid(resource.getStack()) && meta == 0 && getFillTarget().fill(wireConnection, resource.getStack(), false) != 0) + if (color.isValidLiquid(resource.getStack()) && meta == 0 && getFillTarget().fill(pipeConnection, resource.getStack(), false) != 0) { LiquidStack stack = resource.getStack(); stack.amount = LiquidContainerRegistry.BUCKET_VOLUME; - int f = getFillTarget().fill(wireConnection, this.color.getLiquidData().getStack(), true); - if (f > 0) + int fillAmmount = getFillTarget().fill(pipeConnection, this.color.getLiquidData().getStack(), true); + + if (fillAmmount > 0) { worldObj.setBlockAndMetadataWithNotify(xCoord, yCoord - 1, zCoord, 0, 0, 3); return true; @@ -199,7 +208,7 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement @Override public String getMeterReading(EntityPlayer user, ForgeDirection side) { - return this.wattsReceived + "/" + this.WATTS_PER_TICK + "W " + this.percentPumped+"% DONE"; + return this.wattsReceived + "/" + this.WATTS_PER_TICK + "W " + this.percentPumped + "% DONE"; } @Override @@ -221,15 +230,15 @@ public class TileEntityMinorPump extends TileEntityElectricityRunnable implement @Override public boolean canConnect(ForgeDirection dir, LiquidStack... stacks) { - if(dir == this.pipeConnection.getOpposite()) + if (dir == this.pipeConnection.getOpposite()) { - if(stacks == null || stacks.length == 0) + if (stacks == null || stacks.length == 0) { return true; } - for(int i =0; i< stacks.length; i++) + for (int i = 0; i < stacks.length; i++) { - if(this.color.isValidLiquid(stacks[i])) + if (this.color.isValidLiquid(stacks[i])) { return true; } diff --git a/src/minecraft/fluidmech/common/machines/TileEntityReleaseValve.java b/src/minecraft/fluidmech/common/machines/TileEntityReleaseValve.java index 5c421b9f9..d02ba4f25 100644 --- a/src/minecraft/fluidmech/common/machines/TileEntityReleaseValve.java +++ b/src/minecraft/fluidmech/common/machines/TileEntityReleaseValve.java @@ -213,9 +213,16 @@ public class TileEntityReleaseValve extends TileEntityAdvanced implements IPsiCr } @Override - public boolean getCanPressureTo(LiquidStack type, ForgeDirection dir) + public boolean canConnect(ForgeDirection dir, LiquidStack... stacks) { - return type != null && this.canConnect(ColorCode.get(type)); + for (int i = 0; i < stacks.length; i++) + { + if (this.canConnect(ColorCode.get(stacks[i]))) + { + return true; + } + } + return false; } @Override diff --git a/src/minecraft/fluidmech/common/machines/TileEntityTank.java b/src/minecraft/fluidmech/common/machines/TileEntityTank.java index 7f9d53df1..27baa0d71 100644 --- a/src/minecraft/fluidmech/common/machines/TileEntityTank.java +++ b/src/minecraft/fluidmech/common/machines/TileEntityTank.java @@ -220,15 +220,15 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead } @Override - public boolean getCanPressureTo(LiquidStack type, ForgeDirection dir) + public boolean canConnect(ForgeDirection dir, LiquidStack... stacks) { - if (color.isValidLiquid(type) || type.isLiquidEqual(LiquidHandler.unkown.getStack())) + for (int i = 0; i < stacks.length; i++) { - LiquidData data = LiquidHandler.get(type); - if (data.getCanFloat() && dir == ForgeDirection.DOWN) - return true; - if (!data.getCanFloat() && dir == ForgeDirection.UP) + LiquidData data = LiquidHandler.get(stacks[i]); + if (color.isValidLiquid(stacks[i]) && ((data.getCanFloat() && dir == ForgeDirection.DOWN) || (!data.getCanFloat() && dir == ForgeDirection.UP))) + { return true; + } } return false; } diff --git a/src/minecraft/fluidmech/common/machines/pipes/TileEntityPipe.java b/src/minecraft/fluidmech/common/machines/pipes/TileEntityPipe.java index c1e369230..c7a5284ce 100644 --- a/src/minecraft/fluidmech/common/machines/pipes/TileEntityPipe.java +++ b/src/minecraft/fluidmech/common/machines/pipes/TileEntityPipe.java @@ -3,6 +3,7 @@ package fluidmech.common.machines.pipes; import fluidmech.common.machines.TileEntityTank; import hydraulic.api.ColorCode; import hydraulic.api.IColorCoded; +import hydraulic.api.IPipeConnector; import hydraulic.api.IPsiCreator; import hydraulic.api.IReadOut; import hydraulic.core.liquidNetwork.LiquidHandler; @@ -274,9 +275,9 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer connectedBlocks[side] = null; } } - else if (tileEntity instanceof IPsiCreator) + else if (tileEntity instanceof IPipeConnector) { - if (!((IPsiCreator) tileEntity).getCanPressureTo(color.getLiquidData().getStack(), direction)) + if (!((IPipeConnector) tileEntity).canConnect(direction, color.getLiquidData().getStack())) { connectedBlocks[side] = null; } @@ -307,12 +308,15 @@ public class TileEntityPipe extends TileEntityAdvanced implements ITankContainer highestPressure = ((TileEntityPipe) connectedBlocks[i]).getPressure(); } } - if (connectedBlocks[i] instanceof IPsiCreator && ((IPsiCreator) connectedBlocks[i]).getCanPressureTo(color.getLiquidData().getStack(), dir)) + if (connectedBlocks[i] instanceof IPsiCreator && ((IPipeConnector) connectedBlocks[i]).canConnect(dir, color.getArrayLiquidStacks())) { int p = ((IPsiCreator) connectedBlocks[i]).getPressureOut(color.getLiquidData().getStack(), dir); + if (p > highestPressure) + { highestPressure = p; + } } } this.presure = highestPressure - 1; diff --git a/src/minecraft/hydraulic/api/ColorCode.java b/src/minecraft/hydraulic/api/ColorCode.java index 3f70f66cb..6078ba01d 100644 --- a/src/minecraft/hydraulic/api/ColorCode.java +++ b/src/minecraft/hydraulic/api/ColorCode.java @@ -92,7 +92,7 @@ public enum ColorCode return validLiquids; } - public List getAllLiquidStacks() + public List getAllLiquidStack() { List validStacks = new ArrayList(); for (LiquidData data : getAllLiquidData()) @@ -101,6 +101,21 @@ public enum ColorCode } return validStacks; } + + public LiquidStack[] getArrayLiquidStacks() + { + List validStacks = new ArrayList(); + for (LiquidData data : getAllLiquidData()) + { + validStacks.add(data.getStack()); + } + LiquidStack[] stacks = new LiquidStack[validStacks.size()]; + for(int i =0; i < validStacks.size();i++) + { + stacks[i] = validStacks.get(i); + } + return stacks; + } /** * checks to see if the liquidStack is valid for the given color diff --git a/src/minecraft/hydraulic/core/liquidNetwork/HydraulicNetwork.java b/src/minecraft/hydraulic/core/liquidNetwork/HydraulicNetwork.java index 3e8b713fd..522e92d4f 100644 --- a/src/minecraft/hydraulic/core/liquidNetwork/HydraulicNetwork.java +++ b/src/minecraft/hydraulic/core/liquidNetwork/HydraulicNetwork.java @@ -57,7 +57,7 @@ public class HydraulicNetwork this.pressureProduced = 0; for (TileEntity ent : receivers) { - if (ent instanceof IPipeConnector && ((IPipeConnector) ent).canConnect(ForgeDirection.UNKNOWN, (LiquidStack[]) this.color.getAllLiquidStacks().toArray())) + if (ent instanceof IPipeConnector && ((IPipeConnector) ent).canConnect(ForgeDirection.UNKNOWN, this.color.getArrayLiquidStacks())) { if (ent instanceof IPsiReciever) {