From 9755b4783393dd10afee8a96a05e3ce31f94a1fe Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Tue, 27 Aug 2013 00:04:00 +0100 Subject: [PATCH] Universal cable support for accepting from UE machines. change *Network* to *TransmitterNetwork* in ITransmitter to avoid method name conflicts. Not all IConductor methods are properly implemented, doesn't seem to cause problems in my testing. Could probably implement IElectricityNetwork in EnergyNetwork but this seems to work. --- common/mekanism/api/gas/GasNetwork.java | 2 +- common/mekanism/api/gas/GasTransmission.java | 4 +- .../api/transmitters/DynamicNetwork.java | 2 +- .../api/transmitters/ITransmitter.java | 22 +-- .../TransmitterNetworkRegistry.java | 2 +- common/mekanism/common/EnergyNetwork.java | 2 +- common/mekanism/common/FluidNetwork.java | 2 +- common/mekanism/common/InventoryNetwork.java | 2 +- .../common/block/BlockTransmitter.java | 4 +- .../common/item/ItemConfigurator.java | 2 +- .../common/item/ItemNetworkReader.java | 8 +- .../TileEntityLogisticalTransporter.java | 36 ++--- .../tileentity/TileEntityMechanicalPipe.java | 40 ++--- .../tileentity/TileEntityPressurizedTube.java | 36 ++--- .../tileentity/TileEntityTransmitter.java | 10 +- .../tileentity/TileEntityUniversalCable.java | 148 +++++++++++++++--- common/mekanism/common/util/CableUtils.java | 4 +- 17 files changed, 216 insertions(+), 110 deletions(-) diff --git a/common/mekanism/api/gas/GasNetwork.java b/common/mekanism/api/gas/GasNetwork.java index 96ee66603..994040778 100644 --- a/common/mekanism/api/gas/GasNetwork.java +++ b/common/mekanism/api/gas/GasNetwork.java @@ -126,7 +126,7 @@ public class GasNetwork extends DynamicNetwork transmitters.remove(conductor); } else { - conductor.setNetwork(this); + conductor.setTransmitterNetwork(this); } } diff --git a/common/mekanism/api/gas/GasTransmission.java b/common/mekanism/api/gas/GasTransmission.java index 91488244e..b4b8afef7 100644 --- a/common/mekanism/api/gas/GasTransmission.java +++ b/common/mekanism/api/gas/GasTransmission.java @@ -96,7 +96,7 @@ public final class GasTransmission if(TransmissionType.checkTransmissionType(pointer, TransmissionType.GAS, sender)) { - return ((ITransmitter)pointer).getNetwork().emit(amount, type, sender); + return ((ITransmitter)pointer).getTransmitterNetwork().emit(amount, type, sender); } return amount; @@ -122,7 +122,7 @@ public final class GasTransmission if(TransmissionType.checkTransmissionType(sideTile, TransmissionType.GAS, pointer)) { - networks.add(((ITransmitter)sideTile).getNetwork()); + networks.add(((ITransmitter)sideTile).getTransmitterNetwork()); } } diff --git a/common/mekanism/api/transmitters/DynamicNetwork.java b/common/mekanism/api/transmitters/DynamicNetwork.java index 023ec44b7..e42303fb8 100644 --- a/common/mekanism/api/transmitters/DynamicNetwork.java +++ b/common/mekanism/api/transmitters/DynamicNetwork.java @@ -111,7 +111,7 @@ public abstract class DynamicNetwork implements ITransmitterNetwork if(TransmissionType.checkTransmissionType(nodeTile, getTransmissionType(), (TileEntity) transmitter)) { - ((ITransmitter)nodeTile).removeFromNetwork(); + ((ITransmitter)nodeTile).removeFromTransmitterNetwork(); newTransporters.add((ITransmitter)nodeTile); } } diff --git a/common/mekanism/api/transmitters/ITransmitter.java b/common/mekanism/api/transmitters/ITransmitter.java index e1e7f5479..b6122fc9a 100644 --- a/common/mekanism/api/transmitters/ITransmitter.java +++ b/common/mekanism/api/transmitters/ITransmitter.java @@ -15,7 +15,7 @@ public interface ITransmitter * Gets the network currently in use by this transmitter segment. * @return network this transmitter is using */ - public N getNetwork(); + public N getTransmitterNetwork(); /** * Gets the network currently in use by this transmitter segment. @@ -24,37 +24,37 @@ public interface ITransmitter * if none is available * @return network this transmitter is using */ - public N getNetwork(boolean createIfNull); + public N getTransmitterNetwork(boolean createIfNull); /** * Sets this transmitter segment's network to a new value. * @param network - network to set to */ - public void setNetwork(N network); + public void setTransmitterNetwork(N network); /** * Refreshes the transmitter's network. */ - public void refreshNetwork(); + public void refreshTransmitterNetwork(); /** * Remove this transmitter from its network. */ - public void removeFromNetwork(); + public void removeFromTransmitterNetwork(); /** * Call this if you're worried a transmitter's network is messed up and you want * it to try and fix itself. */ - public void fixNetwork(); + public void fixTransmitterNetwork(); - public boolean areNetworksEqual(TileEntity tileEntity); + public boolean areTransmitterNetworksEqual(TileEntity tileEntity); - public int getNetworkSize(); + public int getTransmitterNetworkSize(); - public int getNetworkAcceptorSize(); + public int getTransmitterNetworkAcceptorSize(); - public String getNetworkNeeded(); + public String getTransmitterNetworkNeeded(); - public String getNetworkFlow(); + public String getTransmitterNetworkFlow(); } diff --git a/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java b/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java index 88f3fd2a6..e82b57ecb 100644 --- a/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java +++ b/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java @@ -140,7 +140,7 @@ public class TransmitterNetworkRegistry implements ITickHandler if(tileEntity instanceof ITransmitter) { - ((ITransmitter)tileEntity).refreshNetwork(); + ((ITransmitter)tileEntity).refreshTransmitterNetwork(); } } } diff --git a/common/mekanism/common/EnergyNetwork.java b/common/mekanism/common/EnergyNetwork.java index 5faca1028..268aa5ff8 100644 --- a/common/mekanism/common/EnergyNetwork.java +++ b/common/mekanism/common/EnergyNetwork.java @@ -220,7 +220,7 @@ public class EnergyNetwork extends DynamicNetwork transmitters.remove(conductor); } else { - conductor.setNetwork(this); + conductor.setTransmitterNetwork(this); } } diff --git a/common/mekanism/common/FluidNetwork.java b/common/mekanism/common/FluidNetwork.java index ee975e897..c94638ee0 100644 --- a/common/mekanism/common/FluidNetwork.java +++ b/common/mekanism/common/FluidNetwork.java @@ -150,7 +150,7 @@ public class FluidNetwork extends DynamicNetwork transmitters.remove(conductor); } else { - conductor.setNetwork(this); + conductor.setTransmitterNetwork(this); } } diff --git a/common/mekanism/common/InventoryNetwork.java b/common/mekanism/common/InventoryNetwork.java index 5087dd4ef..576078897 100644 --- a/common/mekanism/common/InventoryNetwork.java +++ b/common/mekanism/common/InventoryNetwork.java @@ -70,7 +70,7 @@ public class InventoryNetwork extends DynamicNetwork)transporter).getNetwork(false) != null) + if(TransmissionType.checkTransmissionType(transporter, getTransmissionType()) && ((ITransmitter)transporter).getTransmitterNetwork(false) != null) { - connectedNets.add(((ITransmitter)transporter).getNetwork()); + connectedNets.add(((ITransmitter)transporter).getTransmitterNetwork()); } } @@ -69,9 +69,9 @@ public class TileEntityLogisticalTransporter extends TileEntityTransmitter)tileEntity).getNetwork()); + getTransmitterNetwork().merge(((ITransmitter)tileEntity).getTransmitterNetwork()); } } - getNetwork().refresh(); + getTransmitterNetwork().refresh(); } } @@ -167,26 +167,26 @@ public class TileEntityLogisticalTransporter extends TileEntityTransmitter)pipe).getNetwork(false) != null) + if(TransmissionType.checkTransmissionType(pipe, getTransmissionType()) && ((ITransmitter)pipe).getTransmitterNetwork(false) != null) { - connectedNets.add(((ITransmitter)pipe).getNetwork()); + connectedNets.add(((ITransmitter)pipe).getTransmitterNetwork()); } } @@ -97,9 +97,9 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter)tileEntity).getNetwork()); + getTransmitterNetwork().merge(((ITransmitter)tileEntity).getTransmitterNetwork()); } } - getNetwork().refresh(); + getTransmitterNetwork().refresh(); } } @@ -169,7 +169,7 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter } @Override - public GasNetwork getNetwork(boolean createIfNull) + public GasNetwork getTransmitterNetwork(boolean createIfNull) { if(theNetwork == null && createIfNull) { @@ -37,9 +37,9 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter for(TileEntity tube : adjacentTubes) { - if(TransmissionType.checkTransmissionType(tube, TransmissionType.GAS, this) && ((ITransmitter)tube).getNetwork(false) != null) + if(TransmissionType.checkTransmissionType(tube, TransmissionType.GAS, this) && ((ITransmitter)tube).getTransmitterNetwork(false) != null) { - connectedNets.add(((ITransmitter)tube).getNetwork()); + connectedNets.add(((ITransmitter)tube).getTransmitterNetwork()); } } @@ -62,9 +62,9 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter } @Override - public void fixNetwork() + public void fixTransmitterNetwork() { - getNetwork().fixMessedUpNetwork(this); + getTransmitterNetwork().fixMessedUpNetwork(this); } @Override @@ -72,14 +72,14 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter { if(!worldObj.isRemote) { - getNetwork().split(this); + getTransmitterNetwork().split(this); } super.invalidate(); } @Override - public void removeFromNetwork() + public void removeFromTransmitterNetwork() { if(theNetwork != null) { @@ -88,7 +88,7 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter } @Override - public void refreshNetwork() + public void refreshTransmitterNetwork() { if(!worldObj.isRemote) { @@ -98,11 +98,11 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter if(TransmissionType.checkTransmissionType(tileEntity, TransmissionType.GAS, this)) { - getNetwork().merge(((ITransmitter)tileEntity).getNetwork()); + getTransmitterNetwork().merge(((ITransmitter)tileEntity).getTransmitterNetwork()); } } - getNetwork().refresh(); + getTransmitterNetwork().refresh(); } } @@ -132,27 +132,27 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter } @Override - public int getNetworkSize() + public int getTransmitterNetworkSize() { - return getNetwork().getSize(); + return getTransmitterNetwork().getSize(); } @Override - public int getNetworkAcceptorSize() + public int getTransmitterNetworkAcceptorSize() { - return getNetwork().getAcceptorSize(); + return getTransmitterNetwork().getAcceptorSize(); } @Override - public String getNetworkNeeded() + public String getTransmitterNetworkNeeded() { - return getNetwork().getNeeded(); + return getTransmitterNetwork().getNeeded(); } @Override - public String getNetworkFlow() + public String getTransmitterNetworkFlow() { - return getNetwork().getFlow(); + return getTransmitterNetwork().getFlow(); } @Override diff --git a/common/mekanism/common/tileentity/TileEntityTransmitter.java b/common/mekanism/common/tileentity/TileEntityTransmitter.java index c17415ca5..279f14377 100644 --- a/common/mekanism/common/tileentity/TileEntityTransmitter.java +++ b/common/mekanism/common/tileentity/TileEntityTransmitter.java @@ -26,24 +26,24 @@ public abstract class TileEntityTransmitter extends TileEntity implements ITr } @Override - public void setNetwork(N network) + public void setTransmitterNetwork(N network) { if(network != theNetwork) { - removeFromNetwork(); + removeFromTransmitterNetwork(); theNetwork = network; } } @Override - public boolean areNetworksEqual(TileEntity tileEntity) + public boolean areTransmitterNetworksEqual(TileEntity tileEntity) { return tileEntity instanceof ITransmitter && getTransmissionType() == ((ITransmitter)tileEntity).getTransmissionType(); } @Override - public N getNetwork() + public N getTransmitterNetwork() { - return getNetwork(true); + return getTransmitterNetwork(true); } } diff --git a/common/mekanism/common/tileentity/TileEntityUniversalCable.java b/common/mekanism/common/tileentity/TileEntityUniversalCable.java index d123b1a0f..4eacf656c 100644 --- a/common/mekanism/common/tileentity/TileEntityUniversalCable.java +++ b/common/mekanism/common/tileentity/TileEntityUniversalCable.java @@ -4,8 +4,13 @@ import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergyTile; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; +import java.util.Set; +import universalelectricity.core.block.IConductor; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.grid.IElectricityNetwork; import mekanism.api.Object3D; import mekanism.api.transmitters.ITransmitter; import mekanism.api.transmitters.TransmissionType; @@ -19,15 +24,19 @@ import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; -public class TileEntityUniversalCable extends TileEntityTransmitter implements IPowerReceptor, IEnergyTile, IEnergySink +public class TileEntityUniversalCable extends TileEntityTransmitter implements IPowerReceptor, IEnergyTile, IEnergySink, IConductor { /** A fake power handler used to initiate energy transfer calculations. */ public PowerHandler powerHandler; + /** A fake UE ElectricityNetwork used to accept power from EU machines */ + public IElectricityNetwork ueNetwork; + public double energyScale; public TileEntityUniversalCable() { + ueNetwork = new FakeUENetwork(); powerHandler = new PowerHandler(this, PowerHandler.Type.STORAGE); powerHandler.configure(0, 100, 0, 100); } @@ -45,7 +54,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter)cable).getNetwork(false) != null) + if(TransmissionType.checkTransmissionType(cable, TransmissionType.ENERGY) && ((ITransmitter)cable).getTransmitterNetwork(false) != null) { - connectedNets.add(((ITransmitter)cable).getNetwork()); + connectedNets.add(((ITransmitter)cable).getTransmitterNetwork()); } } @@ -79,9 +88,9 @@ public class TileEntityUniversalCable extends TileEntityTransmitter)tileEntity).getNetwork()); + getTransmitterNetwork().merge(((ITransmitter)tileEntity).getTransmitterNetwork()); } } - getNetwork().refresh(); + getTransmitterNetwork().refresh(); } } @@ -157,7 +166,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter getPossibleDirections(TileEntity tile) + { + return new ArrayList(); + } + + @Override + public Set getConductors() + { + return new HashSet(); + } + + @Override + public Set getAcceptors() + { + return getTransmitterNetwork().getAcceptors(); + } + + @Override + public float produce(ElectricityPack electricityPack, TileEntity... ignoreTiles) + { + ArrayList ignore = new ArrayList(); + ignore.addAll(Arrays.asList(ignoreTiles)); + double energy = electricityPack.getWatts() * Mekanism.FROM_UE; + return (float)getTransmitterNetwork().emit(energy, ignore); + } + + @Override + public float getTotalResistance() + { + return 0; + } + + @Override + public ElectricityPack getRequest(TileEntity... ignoreTiles) + { + return ElectricityPack.getFromWatts((float)getTransmitterNetwork().getEnergyNeeded(new ArrayList()), 0.12F); + } + + @Override + public float getLowestCurrentCapacity() + { + return Integer.MAX_VALUE; + } } } \ No newline at end of file diff --git a/common/mekanism/common/util/CableUtils.java b/common/mekanism/common/util/CableUtils.java index 2947f83dc..038770d85 100644 --- a/common/mekanism/common/util/CableUtils.java +++ b/common/mekanism/common/util/CableUtils.java @@ -202,7 +202,7 @@ public final class CableUtils ArrayList ignored = new ArrayList(); ignored.add(sender); - return cable.getNetwork().emit(amount, ignored); + return cable.getTransmitterNetwork().emit(amount, ignored); } return amount; @@ -230,7 +230,7 @@ public final class CableUtils if(TransmissionType.checkTransmissionType(sideTile, TransmissionType.ENERGY) && !ignored.contains(sideTile)) { - networks.add(((ITransmitter)sideTile).getNetwork()); + networks.add(((ITransmitter)sideTile).getTransmitterNetwork()); } }