Fixed a pipe error plus changed some functions
This is were bug testers are so nice. Turns out that machine from other mods could directly put the wrong liquid into the pipe the way i had it coded. Also i'm going to work threw my api and clean it up the best i can. A few of the functions i have are unneed as well as not very well made.
This commit is contained in:
parent
f86ec909b7
commit
87308ec86b
10 changed files with 119 additions and 110 deletions
|
@ -1 +1 @@
|
||||||
22
|
23
|
||||||
|
|
1
info.txt
1
info.txt
|
@ -20,3 +20,4 @@ x Fluid-Mechanics_v0.2.7.19.jar Fluid-Mechanics_v0.2.7.19_api.zip
|
||||||
x Fluid-Mechanics_v0.2.7.20.jar Fluid-Mechanics_v0.2.7.20_api.zip
|
x Fluid-Mechanics_v0.2.7.20.jar Fluid-Mechanics_v0.2.7.20_api.zip
|
||||||
x Fluid-Mechanics_v0.2.7.21.jar hydraulic_v0.2.7.21_api.zip
|
x Fluid-Mechanics_v0.2.7.21.jar hydraulic_v0.2.7.21_api.zip
|
||||||
@ Fluid-Mechanics_v0.2.7.22.jar hydraulic_v0.2.7.22_api.zip
|
@ Fluid-Mechanics_v0.2.7.22.jar hydraulic_v0.2.7.22_api.zip
|
||||||
|
@ Fluid-Mechanics_v0.2.8.23.jar hydraulic_v0.2.8.23_api.zip
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0.2.7
|
0.2.8
|
|
@ -78,7 +78,6 @@ public class TileEntityReleaseValve extends TileEntityAdvanced implements IPsiCr
|
||||||
{
|
{
|
||||||
ILiquidTank pipeVolume = inputPipe.getTanks(ForgeDirection.UNKNOWN)[0];
|
ILiquidTank pipeVolume = inputPipe.getTanks(ForgeDirection.UNKNOWN)[0];
|
||||||
int ammountFilled = inputPipe.fill(ForgeDirection.UNKNOWN, stack, true);
|
int ammountFilled = inputPipe.fill(ForgeDirection.UNKNOWN, stack, true);
|
||||||
System.out.print("/n Amount Drained: "+ammountFilled);
|
|
||||||
drainedTank.drain(ForgeDirection.UNKNOWN, ammountFilled, true);
|
drainedTank.drain(ForgeDirection.UNKNOWN, ammountFilled, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +94,7 @@ public class TileEntityReleaseValve extends TileEntityAdvanced implements IPsiCr
|
||||||
for (TileEntityPipe pipe : output)
|
for (TileEntityPipe pipe : output)
|
||||||
{
|
{
|
||||||
ILiquidTank tank = pipe.getTanks(ForgeDirection.UNKNOWN)[0];
|
ILiquidTank tank = pipe.getTanks(ForgeDirection.UNKNOWN)[0];
|
||||||
if (LiquidHandler.isEqual(pipe.getColor().getLiquidData().getStack(), stack) && (tank.getLiquid() == null || tank.getLiquid().amount < tank.getCapacity()))
|
if (pipe.getColor().getLiquidData().getStack().isLiquidEqual(stack) && (tank.getLiquid() == null || tank.getLiquid().amount < tank.getCapacity()))
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
return pipe;
|
return pipe;
|
||||||
|
|
|
@ -102,7 +102,7 @@ public class TileEntitySink extends TileEntity implements IPacketReceiver, ITank
|
||||||
@Override
|
@Override
|
||||||
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
|
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
|
||||||
{
|
{
|
||||||
if (resource == null || (!LiquidHandler.isEqual(resource, color.getLiquidData().getStack()))) { return 0; }
|
if (resource == null || (!color.getLiquidData().getStack().isLiquidEqual(resource))) { return 0; }
|
||||||
return this.fill(0, resource, doFill);
|
return this.fill(0, resource, doFill);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead
|
||||||
@Override
|
@Override
|
||||||
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
|
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
|
||||||
{
|
{
|
||||||
if (resource == null || (!LiquidHandler.isEqual(resource, color.getLiquidData().getStack()) && this.color != ColorCode.NONE)) { return 0; }
|
if (resource == null || (!color.getLiquidData().getStack().isLiquidEqual(resource) && this.color != ColorCode.NONE)) { return 0; }
|
||||||
return this.fill(0, resource, doFill);
|
return this.fill(0, resource, doFill);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -202,10 +202,9 @@ public class TileEntityPipe extends TileEntity implements ITankContainer, IReadO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
LiquidStack stack = tank.getLiquid();
|
LiquidStack stack = tank.getLiquid();
|
||||||
if (color != ColorCode.NONE)
|
if (this.color.isValidLiquid(resource))
|
||||||
{
|
{
|
||||||
|
if (stack == null || (stack != null && stack.isLiquidEqual(resource)))
|
||||||
if (stack == null || LiquidHandler.isEqual(resource, this.color.getLiquidData()))
|
|
||||||
{
|
{
|
||||||
return this.fill(0, resource, doFill);
|
return this.fill(0, resource, doFill);
|
||||||
}
|
}
|
||||||
|
@ -215,17 +214,7 @@ public class TileEntityPipe extends TileEntity implements ITankContainer, IReadO
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
return 0;
|
||||||
{
|
|
||||||
if (stack == null || LiquidHandler.isEqual(stack, resource))
|
|
||||||
{
|
|
||||||
return this.fill(0, resource, doFill);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return this.causeMix(stack, resource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -245,12 +234,12 @@ public class TileEntityPipe extends TileEntity implements ITankContainer, IReadO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// water flowing into lava creates obby
|
// water flowing into lava creates obby
|
||||||
if (LiquidHandler.isEqual(stored, LiquidHandler.lava) && LiquidHandler.isEqual(fill, LiquidHandler.water))
|
if (fill.isLiquidEqual(LiquidHandler.lava.getStack()) && fill.isLiquidEqual(LiquidHandler.water.getStack()))
|
||||||
{
|
{
|
||||||
worldObj.setBlockWithNotify(xCoord, yCoord, zCoord, Block.obsidian.blockID);
|
worldObj.setBlockWithNotify(xCoord, yCoord, zCoord, Block.obsidian.blockID);
|
||||||
return fill.amount;
|
return fill.amount;
|
||||||
}// lava flowing into water creates cobble
|
}// lava flowing into water creates cobble
|
||||||
else if (LiquidHandler.isEqual(stored, LiquidHandler.water) && LiquidHandler.isEqual(fill, LiquidHandler.lava))
|
else if (fill.isLiquidEqual(LiquidHandler.water.getStack()) && fill.isLiquidEqual(LiquidHandler.lava.getStack()))
|
||||||
{
|
{
|
||||||
worldObj.setBlockWithNotify(xCoord, yCoord, zCoord, Block.cobblestone.blockID);
|
worldObj.setBlockWithNotify(xCoord, yCoord, zCoord, Block.cobblestone.blockID);
|
||||||
return fill.amount;
|
return fill.amount;
|
||||||
|
@ -287,6 +276,10 @@ public class TileEntityPipe extends TileEntity implements ITankContainer, IReadO
|
||||||
@Override
|
@Override
|
||||||
public ILiquidTank getTank(ForgeDirection direction, LiquidStack type)
|
public ILiquidTank getTank(ForgeDirection direction, LiquidStack type)
|
||||||
{
|
{
|
||||||
|
if(this.color.isValidLiquid(type))
|
||||||
|
{
|
||||||
|
return this.tank;
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,15 @@
|
||||||
package hydraulic.core.implement;
|
package hydraulic.core.implement;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraftforge.liquids.LiquidStack;
|
||||||
import hydraulic.core.liquids.LiquidData;
|
import hydraulic.core.liquids.LiquidData;
|
||||||
import hydraulic.core.liquids.LiquidHandler;
|
import hydraulic.core.liquids.LiquidHandler;
|
||||||
|
|
||||||
|
|
||||||
public enum ColorCode
|
public enum ColorCode
|
||||||
{
|
{
|
||||||
BLACK("Black"),
|
BLACK("Black"), RED("Red"), GREEN("Green"), BROWN("Brown"), BLUE("Blue"), PURPLE("Purple"), CYAN("Cyan"), SILVER("Silver"), GREY("Grey"), PINK("Pink"), LIME("Lime"), YELLOW("Yellow"), LIGHTBLUE("LightBlue"), WHITE("White"), ORANGE("Orange"), NONE("");
|
||||||
RED("Red"),
|
|
||||||
GREEN("Green"),
|
|
||||||
BROWN("Brown"),
|
|
||||||
BLUE("Blue"),
|
|
||||||
PURPLE("Purple"),
|
|
||||||
CYAN("Cyan"),
|
|
||||||
SILVER("Silver"),
|
|
||||||
GREY("Grey"),
|
|
||||||
PINK("Pink"),
|
|
||||||
LIME("Lime"),
|
|
||||||
YELLOW("Yellow"),
|
|
||||||
LIGHTBLUE("LightBlue"),
|
|
||||||
WHITE("White"),
|
|
||||||
ORANGE("Orange"),
|
|
||||||
NONE("");
|
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
|
|
||||||
|
@ -35,40 +23,89 @@ public enum ColorCode
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** gets a ColorCode from any of the following
|
/**
|
||||||
|
* gets a ColorCode from any of the following
|
||||||
*
|
*
|
||||||
* @param obj
|
* @param obj - Integer,String,LiquidData,ColorCode
|
||||||
* - Integer,String,LiquidData,ColorCode
|
* @return Color NONE if it can't find it
|
||||||
* @return Color NONE if it can't find it */
|
*/
|
||||||
public static ColorCode get(Object obj)
|
public static ColorCode get(Object obj)
|
||||||
{
|
{
|
||||||
if (obj instanceof Integer && ((Integer) obj) < ColorCode.values().length)
|
if (obj instanceof Integer && ((Integer) obj) < ColorCode.values().length)
|
||||||
{
|
{
|
||||||
return ColorCode.values()[((Integer) obj)];
|
return ColorCode.values()[((Integer) obj)];
|
||||||
} else if (obj instanceof LiquidData)
|
}
|
||||||
|
else if (obj instanceof LiquidData)
|
||||||
{
|
{
|
||||||
return ((LiquidData) obj).getColor();
|
return ((LiquidData) obj).getColor();
|
||||||
} else if (obj instanceof ColorCode)
|
}
|
||||||
|
else if (obj instanceof ColorCode)
|
||||||
{
|
{
|
||||||
return (ColorCode) obj;
|
return (ColorCode) obj;
|
||||||
} else if (obj instanceof String)
|
}
|
||||||
|
else if (obj instanceof String)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < ColorCode.values().length; i++)
|
for (int i = 0; i < ColorCode.values().length; i++)
|
||||||
{
|
{
|
||||||
if (((String) obj).equalsIgnoreCase(ColorCode.get(i).getName())) { return ColorCode.get(i); }
|
if (((String) obj).equalsIgnoreCase(ColorCode.get(i).getName()))
|
||||||
|
{
|
||||||
|
return ColorCode.get(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NONE;
|
return NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** gets the liquidData linked with this color. in rare cases there could be
|
/**
|
||||||
* more than one, but first instance will be returned */
|
* gets the liquidData linked with this color
|
||||||
|
*/
|
||||||
public LiquidData getLiquidData()
|
public LiquidData getLiquidData()
|
||||||
{
|
{
|
||||||
for (LiquidData data : LiquidHandler.allowedLiquids)
|
for (LiquidData data : LiquidHandler.allowedLiquids)
|
||||||
{
|
{
|
||||||
if (data.getColor() == this) { return data; }
|
if (data.getColor() == this)
|
||||||
|
{
|
||||||
|
return data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return LiquidHandler.unkown;
|
return LiquidHandler.unkown;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gets a list of LiquidData that are linked with the color
|
||||||
|
*/
|
||||||
|
public List<LiquidData> getAllLiquidData()
|
||||||
|
{
|
||||||
|
List<LiquidData> validLiquids = new ArrayList<LiquidData>();
|
||||||
|
for (LiquidData data : LiquidHandler.allowedLiquids)
|
||||||
|
{
|
||||||
|
if (data.getColor() == this && !validLiquids.contains(data))
|
||||||
|
{
|
||||||
|
validLiquids.add(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return validLiquids;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* checks to see if the liquidStack is valid for the given color
|
||||||
|
*/
|
||||||
|
public boolean isValidLiquid(LiquidStack stack)
|
||||||
|
{
|
||||||
|
if (stack == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this == NONE)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for (LiquidData data : LiquidHandler.allowedLiquids)
|
||||||
|
{
|
||||||
|
if (data.getStack().isLiquidEqual(stack) && data.getColor() == this)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class HydraulicNetwork
|
||||||
*/
|
*/
|
||||||
public void startProducing(TileEntity tileEntity, FluidPacket pack)
|
public void startProducing(TileEntity tileEntity, FluidPacket pack)
|
||||||
{
|
{
|
||||||
if (tileEntity != null && pack.liquidStack != null && LiquidHandler.isEqual(stack, pack.liquidStack))
|
if (tileEntity != null && pack.liquidStack != null && stack.isLiquidEqual(pack.liquidStack))
|
||||||
{
|
{
|
||||||
this.producers.put(tileEntity, pack);
|
this.producers.put(tileEntity, pack);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public class HydraulicNetwork
|
||||||
*/
|
*/
|
||||||
public void startRequesting(TileEntity tileEntity, FluidPacket pack)
|
public void startRequesting(TileEntity tileEntity, FluidPacket pack)
|
||||||
{
|
{
|
||||||
if (tileEntity != null && pack.liquidStack != null && LiquidHandler.isEqual(stack, pack.liquidStack))
|
if (tileEntity != null && pack.liquidStack != null && stack.isLiquidEqual(pack.liquidStack))
|
||||||
{
|
{
|
||||||
this.consumers.put(tileEntity, pack);
|
this.consumers.put(tileEntity, pack);
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ public class LiquidHandler
|
||||||
{
|
{
|
||||||
for (LiquidData data : LiquidHandler.allowedLiquids)
|
for (LiquidData data : LiquidHandler.allowedLiquids)
|
||||||
{
|
{
|
||||||
if (isEqual(stack, data)) { return data; }
|
if (stack.isLiquidEqual(data.getStack())) { return data; }
|
||||||
}
|
}
|
||||||
return unkown;
|
return unkown;
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,7 @@ public class LiquidHandler
|
||||||
Map<String, LiquidStack> l = LiquidDictionary.getLiquids();
|
Map<String, LiquidStack> l = LiquidDictionary.getLiquids();
|
||||||
for (Entry<String, LiquidStack> liquid : l.entrySet())
|
for (Entry<String, LiquidStack> liquid : l.entrySet())
|
||||||
{
|
{
|
||||||
LiquidStack t = liquid.getValue();
|
if (liquid.getValue().isLiquidEqual(stack)) { return liquid.getKey(); }
|
||||||
if (isEqual(t, stack)) { return liquid.getKey(); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "unkown";
|
return "unkown";
|
||||||
|
@ -167,26 +166,6 @@ public class LiquidHandler
|
||||||
}
|
}
|
||||||
return unkown;
|
return unkown;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Compares a liquidStack to a sample stack stored in the LiquidData
|
|
||||||
*/
|
|
||||||
public static boolean isEqual(LiquidStack stack, LiquidData type)
|
|
||||||
{
|
|
||||||
if (stack == null || type == null) { return false; }
|
|
||||||
if (type.getStack().itemID == stack.itemID && type.getStack().itemMeta == stack.itemMeta) { return true; }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Compares one liquidStack to another LiquidStack
|
|
||||||
*/
|
|
||||||
public static boolean isEqual(LiquidStack stack, LiquidStack stack2)
|
|
||||||
{
|
|
||||||
if (stack == null || stack2 == null)
|
|
||||||
return false;
|
|
||||||
if (stack2.itemID == stack.itemID && stack2.itemMeta == stack.itemMeta) { return true; }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Consumes one item of a the ItemStack
|
* Consumes one item of a the ItemStack
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue