From 1e5c47ad3f8c860e8235338145216155981daa39 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Sun, 6 Jan 2013 23:15:21 -0500 Subject: [PATCH] nothing much Moved some stuff around, and made LiquidHandler able to be used in the api folder to help other people work with this mod. The api is not actual needed to work with this mod but it contains helpers to make life easier. Also added a method to LiquidHandler to get the name of a LiquidStack which for some reason can't be directly gotten from the liquidStack itself. Too get it i had to iterate over the hashMap used to store liquids. If the LiquidStack is linked to a LiquidData it will use the LiquidData name first. Also removed PipeInstance since its not actual needed anymore now that PipeColor is directly linked the pipe as well as the PipeBlock metadata. --- minecraft/liquidmechanics/api/IPressure.java | 2 +- .../handlers => api/helpers}/LiquidData.java | 3 +- .../helpers}/LiquidHandler.java | 37 +++++++++++--- .../api/helpers/PipeColor.java | 2 - .../api/helpers/connectionHelper.java | 2 - .../client/render/RenderPump.java | 4 +- .../client/render/RenderTank.java | 4 +- .../common/LiquidMechanics.java | 5 +- .../common/block/BlockPumpMachine.java | 2 +- .../common/block/BlockTank.java | 2 +- .../common/handlers/PipeInstance.java | 18 ------- .../common/handlers/UpdateConverter.java | 1 + .../common/tileentity/TileEntityPipe.java | 4 +- .../common/tileentity/TileEntityPump.java | 4 +- .../tileentity/TileEntityReleaseValve.java | 13 +++-- .../common/tileentity/TileEntityTank.java | 50 +++++++++++++++---- 16 files changed, 94 insertions(+), 59 deletions(-) rename minecraft/liquidmechanics/{common/handlers => api/helpers}/LiquidData.java (92%) rename minecraft/liquidmechanics/{common/handlers => api/helpers}/LiquidHandler.java (84%) delete mode 100644 minecraft/liquidmechanics/common/handlers/PipeInstance.java 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) {