diff --git a/minecraft/liquidmechanics/api/IPressure.java b/minecraft/liquidmechanics/api/IPressure.java index 0fa84601..d2cc96f3 100644 --- a/minecraft/liquidmechanics/api/IPressure.java +++ b/minecraft/liquidmechanics/api/IPressure.java @@ -1,6 +1,6 @@ package liquidmechanics.api; -import liquidmechanics.common.handlers.LiquidData; +import liquidmechanics.api.helpers.LiquidData; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.liquids.ITankContainer; diff --git a/minecraft/liquidmechanics/common/handlers/LiquidData.java b/minecraft/liquidmechanics/api/helpers/LiquidData.java similarity index 92% rename from minecraft/liquidmechanics/common/handlers/LiquidData.java rename to minecraft/liquidmechanics/api/helpers/LiquidData.java index c3426d2b..e7d109af 100644 --- a/minecraft/liquidmechanics/common/handlers/LiquidData.java +++ b/minecraft/liquidmechanics/api/helpers/LiquidData.java @@ -1,6 +1,5 @@ -package liquidmechanics.common.handlers; +package liquidmechanics.api.helpers; -import liquidmechanics.api.helpers.PipeColor; import net.minecraftforge.liquids.LiquidStack; public class LiquidData diff --git a/minecraft/liquidmechanics/common/handlers/LiquidHandler.java b/minecraft/liquidmechanics/api/helpers/LiquidHandler.java similarity index 84% rename from minecraft/liquidmechanics/common/handlers/LiquidHandler.java rename to minecraft/liquidmechanics/api/helpers/LiquidHandler.java index 8f9a5579..5d21f388 100644 --- a/minecraft/liquidmechanics/common/handlers/LiquidHandler.java +++ b/minecraft/liquidmechanics/api/helpers/LiquidHandler.java @@ -1,11 +1,10 @@ -package liquidmechanics.common.handlers; +package liquidmechanics.api.helpers; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; -import liquidmechanics.api.helpers.PipeColor; -import liquidmechanics.common.LiquidMechanics; -import liquidmechanics.common.tileentity.TileEntityPipe; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraftforge.event.ForgeSubscribe; @@ -37,8 +36,6 @@ public class LiquidHandler allowedLiquids.add(lava); unkown = new LiquidData("Unknown", LiquidDictionary.getOrCreateLiquid("Unknown", new LiquidStack(20, 1)), PipeColor.NONE, false, 0); allowedLiquids.add(unkown); - waste = new LiquidData("Waste", LiquidDictionary.getOrCreateLiquid("Waste", new LiquidStack(LiquidMechanics.blockWasteLiquid, 1)), PipeColor.BROWN, false, 40); - allowedLiquids.add(waste); } @ForgeSubscribe @@ -61,6 +58,10 @@ public class LiquidHandler else if (event.Name.equalsIgnoreCase("steam")) { this.steam = new LiquidData("steam", event.Liquid, PipeColor.ORANGE, true, 100); + }else if(event.Name.equalsIgnoreCase("Waste")) + { + this.waste = new LiquidData("Waste", event.Liquid, PipeColor.BROWN, false, 40); + this.allowedLiquids.add(waste); } } @@ -87,7 +88,29 @@ public class LiquidHandler } return unkown; } - + /** + * gets the name of the liquidStack using either LiquidData or + * running threw the LiquidDirectory mapping + */ + public static String getName(LiquidStack stack) + { + if(get(stack) != unkown) + { + return get(stack).getName(); + }else + { + Map l = LiquidDictionary.getLiquids(); + for(Entry liquid : l.entrySet()) + { + LiquidStack t = liquid.getValue(); + if(isEqual(t,stack)) + { + return liquid.getKey(); + } + } + } + return "unkown"; + } /** * creates a new LiquidStack using type and vol */ diff --git a/minecraft/liquidmechanics/api/helpers/PipeColor.java b/minecraft/liquidmechanics/api/helpers/PipeColor.java index 77c24698..8dce05ff 100644 --- a/minecraft/liquidmechanics/api/helpers/PipeColor.java +++ b/minecraft/liquidmechanics/api/helpers/PipeColor.java @@ -1,7 +1,5 @@ package liquidmechanics.api.helpers; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; public enum PipeColor { diff --git a/minecraft/liquidmechanics/api/helpers/connectionHelper.java b/minecraft/liquidmechanics/api/helpers/connectionHelper.java index 7c2f4de9..01476847 100644 --- a/minecraft/liquidmechanics/api/helpers/connectionHelper.java +++ b/minecraft/liquidmechanics/api/helpers/connectionHelper.java @@ -1,7 +1,5 @@ package liquidmechanics.api.helpers; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; diff --git a/minecraft/liquidmechanics/client/render/RenderPump.java b/minecraft/liquidmechanics/client/render/RenderPump.java index 569260fa..be940401 100644 --- a/minecraft/liquidmechanics/client/render/RenderPump.java +++ b/minecraft/liquidmechanics/client/render/RenderPump.java @@ -1,9 +1,9 @@ package liquidmechanics.client.render; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.client.model.ModelPump; import liquidmechanics.common.LiquidMechanics; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.tileentity.TileEntityPump; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; diff --git a/minecraft/liquidmechanics/client/render/RenderTank.java b/minecraft/liquidmechanics/client/render/RenderTank.java index 4aca9189..3195ae3d 100644 --- a/minecraft/liquidmechanics/client/render/RenderTank.java +++ b/minecraft/liquidmechanics/client/render/RenderTank.java @@ -1,12 +1,12 @@ package liquidmechanics.client.render; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.api.helpers.connectionHelper; import liquidmechanics.client.model.ModelLiquidTank; import liquidmechanics.client.model.ModelLiquidTankCorner; import liquidmechanics.common.LiquidMechanics; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.tileentity.TileEntityTank; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; diff --git a/minecraft/liquidmechanics/common/LiquidMechanics.java b/minecraft/liquidmechanics/common/LiquidMechanics.java index df0454dc..b32a633a 100644 --- a/minecraft/liquidmechanics/common/LiquidMechanics.java +++ b/minecraft/liquidmechanics/common/LiquidMechanics.java @@ -2,6 +2,8 @@ package liquidmechanics.common; import java.io.File; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.common.block.BlockGenerator; import liquidmechanics.common.block.BlockPumpMachine; @@ -10,7 +12,6 @@ import liquidmechanics.common.block.BlockReleaseValve; import liquidmechanics.common.block.BlockRod; import liquidmechanics.common.block.BlockTank; import liquidmechanics.common.block.BlockWasteLiquid; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.item.ItemGuage; import liquidmechanics.common.item.ItemLiquidMachine; import liquidmechanics.common.item.ItemParts; @@ -28,6 +29,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraftforge.common.Configuration; +import net.minecraftforge.liquids.LiquidDictionary; import net.minecraftforge.liquids.LiquidStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; @@ -255,5 +257,6 @@ public class LiquidMechanics extends DummyModContainer // add Default Liquids to current list, done last to let other mods use // there liquid data first if used LiquidHandler.addDefaultLiquids(); + LiquidStack waste = LiquidDictionary.getOrCreateLiquid("Waste", new LiquidStack(LiquidMechanics.blockWasteLiquid, 1)); } } diff --git a/minecraft/liquidmechanics/common/block/BlockPumpMachine.java b/minecraft/liquidmechanics/common/block/BlockPumpMachine.java index 4176ec15..6f392793 100644 --- a/minecraft/liquidmechanics/common/block/BlockPumpMachine.java +++ b/minecraft/liquidmechanics/common/block/BlockPumpMachine.java @@ -4,11 +4,11 @@ import java.util.List; import universalelectricity.prefab.BlockMachine; import universalelectricity.prefab.tile.TileEntityAdvanced; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.client.render.BlockRenderHelper; import liquidmechanics.common.LiquidMechanics; import liquidmechanics.common.MetaGroup; import liquidmechanics.common.TabLiquidMechanics; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.tileentity.TileEntityPump; import liquidmechanics.common.tileentity.TileEntityTank; import net.minecraft.block.BlockContainer; diff --git a/minecraft/liquidmechanics/common/block/BlockTank.java b/minecraft/liquidmechanics/common/block/BlockTank.java index 80c9d754..bbf09048 100644 --- a/minecraft/liquidmechanics/common/block/BlockTank.java +++ b/minecraft/liquidmechanics/common/block/BlockTank.java @@ -2,10 +2,10 @@ package liquidmechanics.common.block; import java.util.List; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.client.render.BlockRenderHelper; import liquidmechanics.common.LiquidMechanics; import liquidmechanics.common.TabLiquidMechanics; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.tileentity.TileEntityPump; import liquidmechanics.common.tileentity.TileEntityTank; import net.minecraft.block.material.Material; diff --git a/minecraft/liquidmechanics/common/handlers/PipeInstance.java b/minecraft/liquidmechanics/common/handlers/PipeInstance.java deleted file mode 100644 index bd36c147..00000000 --- a/minecraft/liquidmechanics/common/handlers/PipeInstance.java +++ /dev/null @@ -1,18 +0,0 @@ -package liquidmechanics.common.handlers; - -import liquidmechanics.api.helpers.PipeColor; -import liquidmechanics.common.tileentity.TileEntityPipe; -/** - * used to keep track of a pipe, its meta, and if Universal - */ -public class PipeInstance -{ - public PipeColor color; - public TileEntityPipe pipe; - //colors - public PipeInstance(PipeColor cc, TileEntityPipe pipe) - { - this.color = cc; - this.pipe = pipe; - } -} diff --git a/minecraft/liquidmechanics/common/handlers/UpdateConverter.java b/minecraft/liquidmechanics/common/handlers/UpdateConverter.java index 7af351e8..c97212ea 100644 --- a/minecraft/liquidmechanics/common/handlers/UpdateConverter.java +++ b/minecraft/liquidmechanics/common/handlers/UpdateConverter.java @@ -1,6 +1,7 @@ package liquidmechanics.common.handlers; import net.minecraft.nbt.NBTTagCompound; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.common.tileentity.TileEntityPipe; import liquidmechanics.common.tileentity.TileEntityTank; diff --git a/minecraft/liquidmechanics/common/tileentity/TileEntityPipe.java b/minecraft/liquidmechanics/common/tileentity/TileEntityPipe.java index 518b7606..41a2f7e5 100644 --- a/minecraft/liquidmechanics/common/tileentity/TileEntityPipe.java +++ b/minecraft/liquidmechanics/common/tileentity/TileEntityPipe.java @@ -3,11 +3,11 @@ package liquidmechanics.common.tileentity; import liquidmechanics.api.IColor; import liquidmechanics.api.IReadOut; import liquidmechanics.api.IPressure; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.api.helpers.connectionHelper; import liquidmechanics.common.LiquidMechanics; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.handlers.UpdateConverter; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; diff --git a/minecraft/liquidmechanics/common/tileentity/TileEntityPump.java b/minecraft/liquidmechanics/common/tileentity/TileEntityPump.java index 7397f7e4..572a6396 100644 --- a/minecraft/liquidmechanics/common/tileentity/TileEntityPump.java +++ b/minecraft/liquidmechanics/common/tileentity/TileEntityPump.java @@ -4,10 +4,10 @@ import java.util.EnumSet; import liquidmechanics.api.IReadOut; import liquidmechanics.api.IPressure; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.common.LiquidMechanics; import liquidmechanics.common.MetaGroup; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; diff --git a/minecraft/liquidmechanics/common/tileentity/TileEntityReleaseValve.java b/minecraft/liquidmechanics/common/tileentity/TileEntityReleaseValve.java index 56fc1b22..a6db998d 100644 --- a/minecraft/liquidmechanics/common/tileentity/TileEntityReleaseValve.java +++ b/minecraft/liquidmechanics/common/tileentity/TileEntityReleaseValve.java @@ -7,12 +7,11 @@ import java.util.List; import liquidmechanics.api.IPressure; import liquidmechanics.api.IReadOut; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.api.helpers.connectionHelper; import liquidmechanics.common.block.BlockReleaseValve; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; -import liquidmechanics.common.handlers.PipeInstance; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -31,7 +30,7 @@ public class TileEntityReleaseValve extends TileEntity implements IPressure, IRe public boolean[] allowed = new boolean[PipeColor.values().length]; public TileEntity[] connected = new TileEntity[6]; - private List output = new ArrayList(); + private List output = new ArrayList(); private List input = new ArrayList(); private int ticks = 0; @@ -85,9 +84,9 @@ public class TileEntityReleaseValve extends TileEntity implements IPressure, IRe LiquidData data = LiquidHandler.get(stack); if (data != LiquidHandler.unkown) { - for (PipeInstance pipe : output) + for (TileEntityPipe pipe : output) { - if (pipe.color == data.getColor() && (pipe.pipe.stored.getLiquid() == null || pipe.pipe.stored.getLiquid().amount < pipe.pipe.stored.getCapacity())) { return pipe.pipe; } + if (pipe.getColor() == data.getColor() && (pipe.stored.getLiquid() == null || pipe.stored.getLiquid().amount < pipe.stored.getCapacity())) { return pipe; } } } return null; @@ -152,7 +151,7 @@ public class TileEntityReleaseValve extends TileEntity implements IPressure, IRe } else { - this.output.add(new PipeInstance(pipe.getColor(), pipe)); + this.output.add(pipe); } } else if (ent instanceof ITankContainer) diff --git a/minecraft/liquidmechanics/common/tileentity/TileEntityTank.java b/minecraft/liquidmechanics/common/tileentity/TileEntityTank.java index eb19b9d5..aee3e96f 100644 --- a/minecraft/liquidmechanics/common/tileentity/TileEntityTank.java +++ b/minecraft/liquidmechanics/common/tileentity/TileEntityTank.java @@ -5,11 +5,11 @@ import javax.swing.colorchooser.ColorSelectionModel; import liquidmechanics.api.IColor; import liquidmechanics.api.IReadOut; import liquidmechanics.api.IPressure; +import liquidmechanics.api.helpers.LiquidData; +import liquidmechanics.api.helpers.LiquidHandler; import liquidmechanics.api.helpers.PipeColor; import liquidmechanics.api.helpers.connectionHelper; import liquidmechanics.common.LiquidMechanics; -import liquidmechanics.common.handlers.LiquidData; -import liquidmechanics.common.handlers.LiquidHandler; import liquidmechanics.common.handlers.UpdateConverter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -37,7 +37,7 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead public static final int LMax = 4; private int count, count2 = 0; - + public int pVolume = 0; public LiquidTank tank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME * LMax); @@ -55,16 +55,17 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead { this.tradeDown(); this.tradeArround(); + this.fillPipe(); int volume = liquid.amount; if (volume != pVolume) { - LiquidStack stack = new LiquidStack(0,0,0); - if(this.tank.getLiquid() != null) + LiquidStack stack = new LiquidStack(0, 0, 0); + if (this.tank.getLiquid() != null) { stack = this.tank.getLiquid(); } - Packet packet = PacketManager.getPacket(LiquidMechanics.CHANNEL, this, new Object[] {stack.itemID,stack.amount,stack.itemMeta}); + Packet packet = PacketManager.getPacket(LiquidMechanics.CHANNEL, this, new Object[] { stack.itemID, stack.amount, stack.itemMeta }); PacketManager.sendPacketToClients(packet, worldObj, new Vector3(this), 20); } pVolume = volume; @@ -77,7 +78,7 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead public String getMeterReading(EntityPlayer user, ForgeDirection side) { if (tank.getLiquid() == null) { return "Empty"; } - return (tank.getLiquid().amount/ LiquidContainerRegistry.BUCKET_VOLUME) + "/" + (tank.getCapacity() / LiquidContainerRegistry.BUCKET_VOLUME) + return (tank.getLiquid().amount / LiquidContainerRegistry.BUCKET_VOLUME) + "/" + (tank.getCapacity() / LiquidContainerRegistry.BUCKET_VOLUME) + " " + LiquidHandler.get(tank.getLiquid()).getName(); } @@ -107,7 +108,7 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead { try { - this.tank.setLiquid(new LiquidStack(data.readInt(),data.readInt(),data.readInt())); + this.tank.setLiquid(new LiquidStack(data.readInt(), data.readInt(), data.readInt())); } catch (Exception e) { @@ -120,7 +121,7 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead @Override public int fill(ForgeDirection from, LiquidStack resource, boolean doFill) { - if (resource == null || (!LiquidHandler.isEqual(resource, color.getLiquidData().getStack())&& this.color != PipeColor.NONE)) { return 0; } + if (resource == null || (!LiquidHandler.isEqual(resource, color.getLiquidData().getStack()) && this.color != PipeColor.NONE)) { return 0; } return this.fill(0, resource, doFill); } @@ -281,6 +282,37 @@ public class TileEntityTank extends TileEntity implements IPacketReceiver, IRead } } + /** Causes this to fill a pipe either above or bellow based on liquid data */ + public void fillPipe() + { + if (this.tank.getLiquid() == null || this.tank.getLiquid().amount <= 0) { return; } + LiquidData data = LiquidHandler.get(this.tank.getLiquid()); + if (data != null) + { + + int change = -1; + if (data.getCanFloat()) + { + change = 1; + } + TileEntity ent = worldObj.getBlockTileEntity(xCoord, yCoord + change, zCoord); + if (ent instanceof TileEntityPipe) + { + PipeColor c = ((TileEntityPipe) ent).getColor(); + if (c == PipeColor.NONE || c == this.color) + { + int vol = LiquidContainerRegistry.BUCKET_VOLUME; + if (this.tank.getLiquid().amount < vol) + { + vol = this.tank.getLiquid().amount; + } + int f = ((TileEntityPipe) ent).fill(0, LiquidHandler.getStack(this.tank.getLiquid(), vol), true); + this.tank.drain(f, true); + } + } + } + } + @Override public void setColor(Object obj) {