From 49cadce1eaa95945924298413950b94aec61aeeb Mon Sep 17 00:00:00 2001 From: Rseifert Date: Mon, 25 Feb 2013 13:03:43 -0500 Subject: [PATCH] reformating and removal of un usable methods As nice as UE's network is it turns out i can use it that way due to Forge Liquid Api. So i have to setup a network system that will just track all TileEntities and add liquid or apply pressure as needed. --- .../machines/pipes/TileEntityNewPipes.java | 6 +- .../hydraulic/core/HydraulicLoader.java | 12 +- .../hydraulic/core/implement/IFluidPipe.java | 9 +- .../core/liquids/HydraulicNetwork.java | 242 +++--------------- ...ulic.java => HydraulicNetworkManager.java} | 21 +- ...dler.java => TileEntityFluidConveyor.java} | 20 +- 6 files changed, 69 insertions(+), 241 deletions(-) rename src/minecraft/hydraulic/core/liquids/{Hydraulic.java => HydraulicNetworkManager.java} (85%) rename src/minecraft/hydraulic/core/prefab/{TileEntityFluidHandler.java => TileEntityFluidConveyor.java} (86%) diff --git a/src/minecraft/fluidmech/common/machines/pipes/TileEntityNewPipes.java b/src/minecraft/fluidmech/common/machines/pipes/TileEntityNewPipes.java index 335fb7cc..64631368 100644 --- a/src/minecraft/fluidmech/common/machines/pipes/TileEntityNewPipes.java +++ b/src/minecraft/fluidmech/common/machines/pipes/TileEntityNewPipes.java @@ -2,7 +2,7 @@ package fluidmech.common.machines.pipes; import com.google.common.io.ByteArrayDataInput; -import hydraulic.core.prefab.TileEntityFluidHandler; +import hydraulic.core.prefab.TileEntityFluidConveyor; import fluidmech.common.FluidMech; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -13,7 +13,7 @@ import net.minecraftforge.liquids.LiquidStack; import universalelectricity.prefab.tile.TileEntityConductor; import basiccomponents.common.BCLoader; -public class TileEntityNewPipes extends TileEntityFluidHandler +public class TileEntityNewPipes extends TileEntityFluidConveyor { public static double RESISTANCE = 0.5; public static double MAX_AMPS = 200; @@ -24,7 +24,7 @@ public class TileEntityNewPipes extends TileEntityFluidHandler } @Override - public double getResistance(LiquidStack stack) + public double getMaxFlowRate(LiquidStack stack) { return this.RESISTANCE; } diff --git a/src/minecraft/hydraulic/core/HydraulicLoader.java b/src/minecraft/hydraulic/core/HydraulicLoader.java index 7c6da4fc..5a0c5e7c 100644 --- a/src/minecraft/hydraulic/core/HydraulicLoader.java +++ b/src/minecraft/hydraulic/core/HydraulicLoader.java @@ -1,6 +1,6 @@ package hydraulic.core; -import hydraulic.core.liquids.Hydraulic; +import hydraulic.core.liquids.HydraulicNetworkManager; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.world.WorldEvent; @@ -16,7 +16,7 @@ public class HydraulicLoader { if (!isInitialized) { - Hydraulic.instance = new Hydraulic(); + HydraulicNetworkManager.instance = new HydraulicNetworkManager(); MinecraftForge.EVENT_BUS.register(this); FMLLog.finest("Hydraulics v" + Hydraulics.VERSION + " loaded without error!"); @@ -28,14 +28,14 @@ public class HydraulicLoader @ForgeSubscribe public void onWorldUnLoad(WorldEvent.Unload event) { - Hydraulic.instance = new Hydraulic(); - Hydraulic.instance.cleanUpNetworks(); + HydraulicNetworkManager.instance = new HydraulicNetworkManager(); + HydraulicNetworkManager.instance.cleanUpNetworks(); } @ForgeSubscribe public void onWorldLoad(WorldEvent.Load event) { - Hydraulic.instance = new Hydraulic(); - Hydraulic.instance.cleanUpNetworks(); + HydraulicNetworkManager.instance = new HydraulicNetworkManager(); + HydraulicNetworkManager.instance.cleanUpNetworks(); } } diff --git a/src/minecraft/hydraulic/core/implement/IFluidPipe.java b/src/minecraft/hydraulic/core/implement/IFluidPipe.java index fb1f0c4e..2d6d9a95 100644 --- a/src/minecraft/hydraulic/core/implement/IFluidPipe.java +++ b/src/minecraft/hydraulic/core/implement/IFluidPipe.java @@ -12,7 +12,7 @@ import universalelectricity.core.electricity.ElectricityNetwork; * @author Calclavia * */ -public interface IFluidPipe extends IPsiMachine +public interface IFluidPipe extends IColorCoded { /** * The Fluid network that this pipe is part of @@ -33,8 +33,13 @@ public interface IFluidPipe extends IPsiMachine * * @return The amount of Ohm's of resistance. */ - public double getResistance(LiquidStack stack); + public double getMaxFlowRate(LiquidStack stack); + /** + * gets the devices pressure from a given side + */ + public double getMaxPressure(ForgeDirection side); + /** * Called when the pressure on the pipe passes max */ diff --git a/src/minecraft/hydraulic/core/liquids/HydraulicNetwork.java b/src/minecraft/hydraulic/core/liquids/HydraulicNetwork.java index 9fae2fd5..76346147 100644 --- a/src/minecraft/hydraulic/core/liquids/HydraulicNetwork.java +++ b/src/minecraft/hydraulic/core/liquids/HydraulicNetwork.java @@ -1,222 +1,69 @@ package hydraulic.core.liquids; +import hydraulic.core.implement.ColorCode; import hydraulic.core.implement.IFluidPipe; +import hydraulic.core.implement.IPsiCreator; +import hydraulic.core.implement.IPsiReciever; import java.util.ArrayList; -import java.util.EnumSet; import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Map; - import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.liquids.ITankContainer; import net.minecraftforge.liquids.LiquidStack; -import universalelectricity.core.vector.Vector3; -import cpw.mods.fml.common.FMLLog; public class HydraulicNetwork { - private final HashMap producers = new HashMap(); - private final HashMap consumers = new HashMap(); - + /* BLOCK THAT ACT AS FLUID CONVEYORS ** */ public final List conductors = new ArrayList(); - - public LiquidStack stack = new LiquidStack(0,0,0); - + + /* MACHINES THAT USE THE FORGE LIQUID API TO RECEIVE LIQUID ** */ + public final List fluidReceivers = new ArrayList(); + + /* MACHINES THAT DEAL WITH PRESSURE ** */ + public final List pressureProducers = new ArrayList(); + public final List pressureReceivers = new ArrayList(); + + public ColorCode color; + public HydraulicNetwork(IFluidPipe conductor) { this.addConductor(conductor); + this.color = conductor.getColor(); } /** - * Sets this tile entity to start producing energy in this network. + * Tries to add the liquid stack to the network's valid machines. Same as the fill method for + * ITankContainer in that it will + * + * @return The amount of Liquid used. */ - public void startProducing(TileEntity tileEntity, FluidPacket pack) + public int addFluidToNetwork(LiquidStack stack) { - if (tileEntity != null && pack.liquidStack != null && stack.isLiquidEqual(pack.liquidStack)) + if (stack != null && canAcceptLiquid(stack)) { - this.producers.put(tileEntity, pack); + } - } - - public void startProducing(TileEntity tileEntity, double pressure, LiquidStack stack) - { - this.startProducing(tileEntity, new FluidPacket(pressure, stack)); - } - - public boolean isProducing(TileEntity tileEntity) - { - return this.producers.containsKey(tileEntity); + return 0; } /** - * Sets this tile entity to stop producing energy in this network. + * can this network can accept the liquid type */ - public void stopProducing(TileEntity tileEntity) + private boolean canAcceptLiquid(LiquidStack stack) { - this.producers.remove(tileEntity); + return color.isValidLiquid(stack); } /** - * Sets this tile entity to start producing energy in this network. + * Removes a tileEntity from any of the valid lists */ - public void startRequesting(TileEntity tileEntity, FluidPacket pack) + public void removeEntity(TileEntity ent) { - if (tileEntity != null && pack.liquidStack != null && stack.isLiquidEqual(pack.liquidStack)) - { - this.consumers.put(tileEntity, pack); - } - } - - public void startRequesting(TileEntity tileEntity, double pressure, LiquidStack stack) - { - this.startRequesting(tileEntity, new FluidPacket(pressure, stack)); - } - - public boolean isRequesting(TileEntity tileEntity) - { - return this.consumers.containsKey(tileEntity); - } - - /** - * Sets this tile entity to stop producing energy in this network. - */ - public void stopRequesting(TileEntity tileEntity) - { - this.consumers.remove(tileEntity); - } - - /** - * @return The electricity produced in this electricity network - */ - public FluidPacket getProduced(LiquidStack stack) - { - FluidPacket totalElectricity = new FluidPacket(0, new LiquidStack(stack.itemID,0,stack.itemMeta)); - - Iterator it = this.producers.entrySet().iterator(); - - while (it.hasNext()) - { - Map.Entry pairs = (Map.Entry) it.next(); - - if (pairs != null) - { - TileEntity tileEntity = (TileEntity) pairs.getKey(); - - if (tileEntity == null) - { - it.remove(); - continue; - } - - if (tileEntity.isInvalid()) - { - it.remove(); - continue; - } - - if (tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) != tileEntity) - { - it.remove(); - continue; - } - - FluidPacket pack = (FluidPacket) pairs.getValue(); - - if (pairs.getKey() != null && pairs.getValue() != null && pack != null && totalElectricity.liquidStack != null && pack.liquidStack != null) - { - int volume = totalElectricity.liquidStack.amount + pack.liquidStack.amount; - double pressure = Math.max(totalElectricity.pressure, pack.pressure); - - totalElectricity.liquidStack = new LiquidStack(stack.itemID,volume,stack.itemMeta); - totalElectricity.pressure = pressure; - } - } - } - - return totalElectricity; - } - - /** - * @return How much electricity this network needs. - */ - public FluidPacket getRequest(LiquidStack stack) - { - FluidPacket totalElectricity = this.getRequestWithoutReduction(stack); - LiquidStack a = totalElectricity.liquidStack; - LiquidStack b = this.getProduced(stack).liquidStack; - if(a != null && b != null) - { - int amount = Math.max(a.amount - b.amount, 0); - totalElectricity.liquidStack.amount = amount; - } - - return totalElectricity; - } - - public FluidPacket getRequestWithoutReduction(LiquidStack stack) - { - FluidPacket totalElectricity = new FluidPacket(0, new LiquidStack(stack.itemID,0,stack.itemMeta)); - - Iterator it = this.consumers.entrySet().iterator(); - - while (it.hasNext()) - { - Map.Entry pairs = (Map.Entry) it.next(); - - if (pairs != null) - { - TileEntity tileEntity = (TileEntity) pairs.getKey(); - - if (tileEntity == null) - { - it.remove(); - continue; - } - - if (tileEntity.isInvalid()) - { - it.remove(); - continue; - } - - if (tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) != tileEntity) - { - it.remove(); - continue; - } - - FluidPacket pack = (FluidPacket) pairs.getValue(); - - if (pack != null && pack.liquidStack != null) - { - totalElectricity.liquidStack.amount += pack.liquidStack.amount; - totalElectricity.pressure = Math.max(totalElectricity.pressure, pack.pressure); - } - } - } - - return totalElectricity; - } - - - - /** - * @return Returns all producers in this electricity network. - */ - public HashMap getProducers() - { - return this.producers; - } - - /** - * @return Returns all consumers in this electricity network. - */ - public HashMap getConsumers() - { - return this.consumers; + fluidReceivers.remove(ent); + pressureProducers.remove(ent); + pressureReceivers.remove(ent); } public void addConductor(IFluidPipe newConductor) @@ -230,28 +77,6 @@ public class HydraulicNetwork } } - /** - * Get only the electric units that can receive electricity from the given side. - */ - public List getReceivers() - { - List receivers = new ArrayList(); - - Iterator it = this.consumers.entrySet().iterator(); - - while (it.hasNext()) - { - Map.Entry pairs = (Map.Entry) it.next(); - - if (pairs != null) - { - receivers.add((TileEntity) pairs.getKey()); - } - } - - return receivers; - } - public void cleanConductors() { for (int i = 0; i < conductors.size(); i++) @@ -302,10 +127,9 @@ public class HydraulicNetwork { for (int j = 0; j < this.conductors.size(); j++) { - IFluidPipe conductor = this.conductors.get(j); + IFluidPipe conductor = this.conductors.get(j); conductor.refreshConnectedBlocks(); } } - } diff --git a/src/minecraft/hydraulic/core/liquids/Hydraulic.java b/src/minecraft/hydraulic/core/liquids/HydraulicNetworkManager.java similarity index 85% rename from src/minecraft/hydraulic/core/liquids/Hydraulic.java rename to src/minecraft/hydraulic/core/liquids/HydraulicNetworkManager.java index c13bcdbb..9f030494 100644 --- a/src/minecraft/hydraulic/core/liquids/Hydraulic.java +++ b/src/minecraft/hydraulic/core/liquids/HydraulicNetworkManager.java @@ -16,11 +16,11 @@ import cpw.mods.fml.common.FMLLog; * based on Calclavia's UE Electric Network stuff * */ -public class Hydraulic +public class HydraulicNetworkManager { - public static Hydraulic instance = new Hydraulic(); + public static HydraulicNetworkManager instance = new HydraulicNetworkManager(); - private List electricityNetworks = new ArrayList(); + private List hydraulicNetworks = new ArrayList(); /** * Registers a conductor into the UE electricity net. @@ -29,15 +29,14 @@ public class Hydraulic { this.cleanUpNetworks(); HydraulicNetwork newNetwork = new HydraulicNetwork(newConductor); - this.electricityNetworks.add(newNetwork); + this.hydraulicNetworks.add(newNetwork); } public void unregister(TileEntity tileEntity) { - for (HydraulicNetwork network : this.electricityNetworks) + for (HydraulicNetwork network : this.hydraulicNetworks) { - network.stopProducing(tileEntity); - network.stopRequesting(tileEntity); + network.removeEntity(tileEntity); } } @@ -57,14 +56,14 @@ public class Hydraulic { networkA.conductors.addAll(networkB.conductors); networkA.setNetwork(); - this.electricityNetworks.remove(networkB); + this.hydraulicNetworks.remove(networkB); networkB = null; networkA.cleanConductors(); } else { - System.err.println("Failed to merge Universal Electricity wire connections!"); + System.err.println("Failed to merge pipe connections!"); } } } @@ -121,7 +120,7 @@ public class Hydraulic { try { - Iterator it = electricityNetworks.iterator(); + Iterator it = hydraulicNetworks.iterator(); while (it.hasNext()) { @@ -143,7 +142,7 @@ public class Hydraulic public void resetConductors() { - Iterator it = electricityNetworks.iterator(); + Iterator it = hydraulicNetworks.iterator(); while (it.hasNext()) { diff --git a/src/minecraft/hydraulic/core/prefab/TileEntityFluidHandler.java b/src/minecraft/hydraulic/core/prefab/TileEntityFluidConveyor.java similarity index 86% rename from src/minecraft/hydraulic/core/prefab/TileEntityFluidHandler.java rename to src/minecraft/hydraulic/core/prefab/TileEntityFluidConveyor.java index ecfdda03..6ab6d5ab 100644 --- a/src/minecraft/hydraulic/core/prefab/TileEntityFluidHandler.java +++ b/src/minecraft/hydraulic/core/prefab/TileEntityFluidConveyor.java @@ -4,7 +4,7 @@ import hydraulic.core.implement.IColorCoded; import hydraulic.core.implement.IFluidPipe; import hydraulic.core.implement.IPsiCreator; import hydraulic.core.implement.IPsiMachine; -import hydraulic.core.liquids.Hydraulic; +import hydraulic.core.liquids.HydraulicNetworkManager; import hydraulic.core.liquids.HydraulicNetwork; import hydraulic.core.liquids.LiquidData; import hydraulic.core.liquids.LiquidHandler; @@ -29,7 +29,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia,DarkGuardsman * */ -public abstract class TileEntityFluidHandler extends TileEntityAdvanced implements IFluidPipe, IPacketReceiver +public abstract class TileEntityFluidConveyor extends TileEntityAdvanced implements IFluidPipe, IPacketReceiver { private HydraulicNetwork network; @@ -47,7 +47,7 @@ public abstract class TileEntityFluidHandler extends TileEntityAdvanced implemen protected LiquidData liquidData = LiquidHandler.unkown; - public TileEntityFluidHandler() + public TileEntityFluidConveyor() { this.reset(); } @@ -84,7 +84,7 @@ public abstract class TileEntityFluidHandler extends TileEntityAdvanced implemen if (tileEntity.getClass() == this.getClass()) { - Hydraulic.instance.mergeConnection(this.getNetwork(), ((IFluidPipe) tileEntity).getNetwork()); + HydraulicNetworkManager.instance.mergeConnection(this.getNetwork(), ((IFluidPipe) tileEntity).getNetwork()); } return; @@ -95,11 +95,11 @@ public abstract class TileEntityFluidHandler extends TileEntityAdvanced implemen { if (this.connectedBlocks[side.ordinal()] instanceof IFluidPipe) { - Hydraulic.instance.splitConnection(this, (IFluidPipe) this.getConnectedBlocks()[side.ordinal()]); + HydraulicNetworkManager.instance.splitConnection(this, (IFluidPipe) this.getConnectedBlocks()[side.ordinal()]); } - this.getNetwork().stopProducing(this.connectedBlocks[side.ordinal()]); - this.getNetwork().stopRequesting(this.connectedBlocks[side.ordinal()]); + //this.getNetwork().stopProducing(this.connectedBlocks[side.ordinal()]); + //this.getNetwork().stopRequesting(this.connectedBlocks[side.ordinal()]); } this.connectedBlocks[side.ordinal()] = null; @@ -157,7 +157,7 @@ public abstract class TileEntityFluidHandler extends TileEntityAdvanced implemen if (tileEntity.getClass() == this.getClass()) { - Hydraulic.instance.mergeConnection(this.getNetwork(), ((IFluidPipe) tileEntity).getNetwork()); + HydraulicNetworkManager.instance.mergeConnection(this.getNetwork(), ((IFluidPipe) tileEntity).getNetwork()); } return; @@ -191,9 +191,9 @@ public abstract class TileEntityFluidHandler extends TileEntityAdvanced implemen { this.network = null; - if (Hydraulic.instance != null) + if (HydraulicNetworkManager.instance != null) { - Hydraulic.instance.registerConductor(this); + HydraulicNetworkManager.instance.registerConductor(this); } }