diff --git a/common/mekanism/api/gas/GasNetwork.java b/common/mekanism/api/gas/GasNetwork.java index 6229ca2de..a70413aff 100644 --- a/common/mekanism/api/gas/GasNetwork.java +++ b/common/mekanism/api/gas/GasNetwork.java @@ -69,11 +69,6 @@ public class GasNetwork extends DynamicNetwork register(); } - public int getCapacity() - { - return TUBE_GAS*transmitters.size(); - } - public synchronized int getGasNeeded() { return getCapacity()-(gasStored != null ? gasStored.amount : 0); diff --git a/common/mekanism/api/transmitters/DynamicNetwork.java b/common/mekanism/api/transmitters/DynamicNetwork.java index 2455b86ef..05e9cefdd 100644 --- a/common/mekanism/api/transmitters/DynamicNetwork.java +++ b/common/mekanism/api/transmitters/DynamicNetwork.java @@ -101,6 +101,20 @@ public abstract class DynamicNetwork> implemen { return possibleAcceptors.size(); } + + public int getCapacity() + { + return (int)getMeanCapacity() * transmitters.size(); + } + + /** + * Override this if things can have variable capacity along the network. + * @return An 'average' value of capacity. Calculate it how you will. + */ + public double getMeanCapacity() + { + return transmitters.iterator().next().getCapacity(); + } @Override public void tick() diff --git a/common/mekanism/api/transmitters/ITransmitter.java b/common/mekanism/api/transmitters/ITransmitter.java index 6854d6ebf..fac3dfbc4 100644 --- a/common/mekanism/api/transmitters/ITransmitter.java +++ b/common/mekanism/api/transmitters/ITransmitter.java @@ -74,4 +74,6 @@ public interface ITransmitter> public String getTransmitterNetworkNeeded(); public String getTransmitterNetworkFlow(); + + public int getCapacity(); } diff --git a/common/mekanism/common/EnergyNetwork.java b/common/mekanism/common/EnergyNetwork.java index 808b97a7c..52abfbecc 100644 --- a/common/mekanism/common/EnergyNetwork.java +++ b/common/mekanism/common/EnergyNetwork.java @@ -74,10 +74,18 @@ public class EnergyNetwork extends DynamicNetwork refresh(); register(); } - - public double getCapacity() + + @Override + public double getMeanCapacity() { - return CABLE_ENERGY*transmitters.size(); + //Use the harmonic mean. Because we're mean. + int numCables = transmitters.size(); + double reciprocalSum = 0; + for(ITransmitter cable : transmitters) + { + reciprocalSum += 1.0/(double)cable.getCapacity(); + } + return (double)numCables / reciprocalSum; } public synchronized double getEnergyNeeded() @@ -464,6 +472,6 @@ public class EnergyNetwork extends DynamicNetwork @Override public String getFlow() { - return MekanismUtils.getEnergyDisplay(electricityStored); + return MekanismUtils.getPowerDisplay(20*electricityStored); } } diff --git a/common/mekanism/common/FluidNetwork.java b/common/mekanism/common/FluidNetwork.java index a5b216da0..cc3b265b0 100644 --- a/common/mekanism/common/FluidNetwork.java +++ b/common/mekanism/common/FluidNetwork.java @@ -75,11 +75,6 @@ public class FluidNetwork extends DynamicNetwork register(); } - public int getCapacity() - { - return PIPE_FLUID*transmitters.size(); - } - public synchronized int getFluidNeeded() { return getCapacity()-(fluidStored != null ? fluidStored.amount : 0); diff --git a/common/mekanism/common/item/ItemNetworkReader.java b/common/mekanism/common/item/ItemNetworkReader.java index 5ea2f5ec5..4bba6b1da 100644 --- a/common/mekanism/common/item/ItemNetworkReader.java +++ b/common/mekanism/common/item/ItemNetworkReader.java @@ -39,6 +39,7 @@ public class ItemNetworkReader extends ItemEnergized player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + " *Acceptors: " + EnumColor.DARK_GREY + transmitter.getTransmitterNetwork().getAcceptorSize())); player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + " *Needed: " + EnumColor.DARK_GREY + transmitter.getTransmitterNetwork().getNeeded())); player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + " *Power: " + EnumColor.DARK_GREY + transmitter.getTransmitterNetwork().getFlow() )); + player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + " *Capacity: " + EnumColor.DARK_GREY + transmitter.getTransmitterNetwork().getCapacity() + "/tick" )); player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------")); } } diff --git a/common/mekanism/common/multipart/PartMechanicalPipe.java b/common/mekanism/common/multipart/PartMechanicalPipe.java index 559eec26d..7eda465c4 100644 --- a/common/mekanism/common/multipart/PartMechanicalPipe.java +++ b/common/mekanism/common/multipart/PartMechanicalPipe.java @@ -190,4 +190,10 @@ public class PartMechanicalPipe extends PartTransmitter implements return true; } + + @Override + public int getCapacity() + { + return 1000; + } } diff --git a/common/mekanism/common/multipart/PartPressurizedTube.java b/common/mekanism/common/multipart/PartPressurizedTube.java index 1dbc967b9..c2c7c329c 100644 --- a/common/mekanism/common/multipart/PartPressurizedTube.java +++ b/common/mekanism/common/multipart/PartPressurizedTube.java @@ -99,4 +99,10 @@ public class PartPressurizedTube extends PartTransmitter { RenderPartTransmitter.getInstance().renderContents(this, pos); } + + @Override + public int getCapacity() + { + return 256; + } } diff --git a/common/mekanism/common/multipart/PartUniversalCable.java b/common/mekanism/common/multipart/PartUniversalCable.java index 5929742d3..9bbec90d7 100644 --- a/common/mekanism/common/multipart/PartUniversalCable.java +++ b/common/mekanism/common/multipart/PartUniversalCable.java @@ -275,4 +275,10 @@ public class PartUniversalCable extends PartTransmitter implement { return (int)Math.round(getTransmitterNetwork().getEnergyNeeded()*Mekanism.TO_TE); } + + @Override + public int getCapacity() + { + return 10000; + } } diff --git a/common/mekanism/common/tileentity/TileEntityMechanicalPipe.java b/common/mekanism/common/tileentity/TileEntityMechanicalPipe.java index 302d164ee..387b04d9c 100644 --- a/common/mekanism/common/tileentity/TileEntityMechanicalPipe.java +++ b/common/mekanism/common/tileentity/TileEntityMechanicalPipe.java @@ -285,4 +285,10 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter { return tile instanceof IGasTransmitter; } + + @Override + public int getCapacity() + { + return 256; + } } diff --git a/common/mekanism/common/tileentity/TileEntityUniversalCable.java b/common/mekanism/common/tileentity/TileEntityUniversalCable.java index ee6159843..07e0c63d0 100644 --- a/common/mekanism/common/tileentity/TileEntityUniversalCable.java +++ b/common/mekanism/common/tileentity/TileEntityUniversalCable.java @@ -339,4 +339,10 @@ public class TileEntityUniversalCable extends TileEntityTransmitter