Loads of work on modularization, BROKEN BUILD
This commit is contained in:
parent
046cab7880
commit
30f7bfa126
29 changed files with 237 additions and 312 deletions
|
@ -9,13 +9,9 @@ import java.util.Set;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
import mekanism.common.EnergyNetwork;
|
||||
import mekanism.common.IMechanicalPipe;
|
||||
import mekanism.common.IUniversalCable;
|
||||
|
||||
public abstract class DynamicNetwork<T, A, N> implements ITransmitterNetwork<T, A, N>
|
||||
public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
|
||||
{
|
||||
public HashSet<T> transmitters = new HashSet<T>();
|
||||
public HashSet<ITransmitter<N>> transmitters = new HashSet<ITransmitter<N>>();
|
||||
|
||||
public Set<A> possibleAcceptors = new HashSet<A>();
|
||||
public Map<A, ForgeDirection> acceptorDirections = new HashMap<A, ForgeDirection>();
|
||||
|
@ -25,13 +21,13 @@ public abstract class DynamicNetwork<T, A, N> implements ITransmitterNetwork<T,
|
|||
|
||||
protected boolean fixed = false;
|
||||
|
||||
public void addAllTransmitters(Set<T> newTransmitters)
|
||||
public void addAllTransmitters(Set<ITransmitter<N>> newTransmitters)
|
||||
{
|
||||
transmitters.addAll(newTransmitters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeTransmitter(T transmitter)
|
||||
public void removeTransmitter(ITransmitter<N> transmitter)
|
||||
{
|
||||
transmitters.remove(transmitter);
|
||||
|
||||
|
@ -45,7 +41,7 @@ public abstract class DynamicNetwork<T, A, N> implements ITransmitterNetwork<T,
|
|||
public void register()
|
||||
{
|
||||
try {
|
||||
T aTransmitter = transmitters.iterator().next();
|
||||
ITransmitter<N> aTransmitter = transmitters.iterator().next();
|
||||
|
||||
if(aTransmitter instanceof TileEntity && !((TileEntity)aTransmitter).worldObj.isRemote)
|
||||
{
|
||||
|
|
|
@ -2,32 +2,35 @@ package mekanism.api;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.common.MekanismUtils;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.Event;
|
||||
import net.minecraftforge.event.ForgeSubscribe;
|
||||
import net.minecraftforge.event.world.ChunkEvent;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
|
||||
public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, GasNetwork>
|
||||
public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
|
||||
{
|
||||
public GasNetwork(IPressurizedTube... varPipes)
|
||||
public GasNetwork(ITransmitter<GasNetwork>... varPipes)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
register();
|
||||
}
|
||||
|
||||
public GasNetwork(Collection<ITransmitter<GasNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
register();
|
||||
}
|
||||
|
||||
public GasNetwork(Set<GasNetwork> networks)
|
||||
{
|
||||
for(GasNetwork net : networks)
|
||||
|
@ -107,15 +110,15 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
@Override
|
||||
public void refresh()
|
||||
{
|
||||
Set<IPressurizedTube> iterTubes = (Set<IPressurizedTube>) transmitters.clone();
|
||||
Iterator<IPressurizedTube> it = iterTubes.iterator();
|
||||
Set<ITransmitter<GasNetwork>> iterTubes = (Set<ITransmitter<GasNetwork>>)transmitters.clone();
|
||||
Iterator<ITransmitter<GasNetwork>> it = iterTubes.iterator();
|
||||
|
||||
possibleAcceptors.clear();
|
||||
acceptorDirections.clear();
|
||||
|
||||
while(it.hasNext())
|
||||
{
|
||||
IPressurizedTube conductor = (IPressurizedTube)it.next();
|
||||
ITransmitter<GasNetwork> conductor = (ITransmitter<GasNetwork>)it.next();
|
||||
|
||||
if(conductor == null || ((TileEntity)conductor).isInvalid())
|
||||
{
|
||||
|
@ -127,13 +130,13 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
}
|
||||
}
|
||||
|
||||
for(IPressurizedTube pipe : transmitters)
|
||||
for(ITransmitter<GasNetwork> pipe : transmitters)
|
||||
{
|
||||
IGasAcceptor[] acceptors = GasTransmission.getConnectedAcceptors((TileEntity)pipe);
|
||||
|
||||
for(IGasAcceptor acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof IPressurizedTube))
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
@ -156,7 +159,7 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
}
|
||||
|
||||
@Override
|
||||
public void split(IPressurizedTube splitPoint)
|
||||
public void split(ITransmitter<GasNetwork> splitPoint)
|
||||
{
|
||||
if(splitPoint instanceof TileEntity)
|
||||
{
|
||||
|
@ -179,7 +182,7 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
{
|
||||
TileEntity connectedBlockA = connectedBlocks[countOne];
|
||||
|
||||
if(connectedBlockA instanceof IPressurizedTube && !dealtWith[countOne])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockA, GasNetwork.class) && !dealtWith[countOne])
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
|
@ -188,7 +191,7 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
{
|
||||
TileEntity connectedBlockB = connectedBlocks[countTwo];
|
||||
|
||||
if(connectedBlockB instanceof IPressurizedTube && !dealtWith[countTwo])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockB, GasNetwork.class) && !dealtWith[countTwo])
|
||||
{
|
||||
if(partNetwork.contains(Object3D.get(connectedBlockB)))
|
||||
{
|
||||
|
@ -203,11 +206,11 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
|
||||
|
||||
if(nodeTile instanceof IPressurizedTube)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, GasNetwork.class))
|
||||
{
|
||||
if(nodeTile != splitPoint)
|
||||
{
|
||||
newNetwork.transmitters.add((IPressurizedTube)nodeTile);
|
||||
newNetwork.transmitters.add((ITransmitter<GasNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -221,26 +224,26 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
}
|
||||
|
||||
@Override
|
||||
public void fixMessedUpNetwork(IPressurizedTube tube)
|
||||
public void fixMessedUpNetwork(ITransmitter<GasNetwork> tube)
|
||||
{
|
||||
if(tube instanceof TileEntity)
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)tube).getWorldObj(), Object3D.get((TileEntity)tube), null);
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
Set<IPressurizedTube> newTubes = new HashSet<IPressurizedTube>();
|
||||
Set<ITransmitter<GasNetwork>> newTubes = new HashSet<ITransmitter<GasNetwork>>();
|
||||
|
||||
for(Object3D node : partNetwork)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)tube).worldObj);
|
||||
|
||||
if(nodeTile instanceof IPressurizedTube)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, GasNetwork.class))
|
||||
{
|
||||
((IPressurizedTube) nodeTile).removeFromNetwork();
|
||||
newTubes.add((IPressurizedTube)nodeTile);
|
||||
((ITransmitter<GasNetwork>)nodeTile).removeFromNetwork();
|
||||
newTubes.add((ITransmitter<GasNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
|
||||
GasNetwork newNetwork = new GasNetwork(newTubes.toArray(new IPressurizedTube[0]));
|
||||
GasNetwork newNetwork = new GasNetwork();
|
||||
newNetwork.refresh();
|
||||
newNetwork.fixed = true;
|
||||
deregister();
|
||||
|
@ -268,7 +271,7 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
|
||||
public void loopAll(Object3D location)
|
||||
{
|
||||
if(location.getTileEntity(worldObj) instanceof IPressurizedTube)
|
||||
if(MekanismUtils.checkNetwork(location.getTileEntity(worldObj), GasNetwork.class))
|
||||
{
|
||||
iterated.add(location);
|
||||
}
|
||||
|
@ -281,7 +284,7 @@ public class GasNetwork extends DynamicNetwork<IPressurizedTube, IGasAcceptor, G
|
|||
{
|
||||
TileEntity tileEntity = obj.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IPressurizedTube)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, GasNetwork.class))
|
||||
{
|
||||
loopAll(obj);
|
||||
}
|
||||
|
|
|
@ -22,24 +22,21 @@ public final class GasTransmission
|
|||
{
|
||||
TileEntity[] tubes = new TileEntity[] {null, null, null, null, null, null};
|
||||
|
||||
if(!(tileEntity instanceof IPressurizedTube) || ((IPressurizedTube)tileEntity).canTransferGas())
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
TileEntity tube = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
TileEntity tube = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(tileEntity instanceof IPressurizedTube)
|
||||
{
|
||||
if(((IPressurizedTube)tileEntity).canTransferGasToTube(tube))
|
||||
{
|
||||
tubes[orientation.ordinal()] = tube;
|
||||
}
|
||||
}
|
||||
else if(tube instanceof IPressurizedTube && ((IPressurizedTube)tube).canTransferGas())
|
||||
{
|
||||
if(tileEntity instanceof IPressurizedTube)
|
||||
{
|
||||
if(((IPressurizedTube)tileEntity).canTransferGasToTube(tube))
|
||||
{
|
||||
tubes[orientation.ordinal()] = tube;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(tube instanceof IPressurizedTube)
|
||||
{
|
||||
tubes[orientation.ordinal()] = tube;
|
||||
}
|
||||
}
|
||||
|
||||
return tubes;
|
||||
|
@ -54,7 +51,7 @@ public final class GasTransmission
|
|||
{
|
||||
IGasAcceptor[] acceptors = new IGasAcceptor[] {null, null, null, null, null, null};
|
||||
|
||||
if(!(tileEntity instanceof IPressurizedTube) || ((IPressurizedTube)tileEntity).canTransferGas())
|
||||
if(!(tileEntity instanceof IPressurizedTube))
|
||||
{
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
|
@ -79,7 +76,7 @@ public final class GasTransmission
|
|||
{
|
||||
ITubeConnection[] connections = new ITubeConnection[] {null, null, null, null, null, null};
|
||||
|
||||
if(!(tileEntity instanceof IPressurizedTube) || ((IPressurizedTube)tileEntity).canTransferGas())
|
||||
if(!(tileEntity instanceof IPressurizedTube))
|
||||
{
|
||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
package mekanism.api;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public interface IPressurizedTube extends ITransmitter<GasNetwork>
|
||||
{
|
||||
/**
|
||||
* Whether or not this tube can transfer gas.
|
||||
* @return if the tube can transfer gas
|
||||
*/
|
||||
public boolean canTransferGas();
|
||||
|
||||
/**
|
||||
* Whether or not this tube can transfer gas into an adjacent tube.
|
||||
* @param tile - the adjacent tube
|
||||
* @return if this tube can transfer gas into the passed tube
|
||||
*/
|
||||
public boolean canTransferGasToTube(TileEntity tile);
|
||||
|
||||
/**
|
||||
* Called when a gas is transferred through this tube.
|
||||
* @param type - the type of gas transferred
|
||||
*/
|
||||
public void onTransfer(EnumGas type);
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
package mekanism.api;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public interface ITransmitter<N>
|
||||
{
|
||||
/**
|
||||
|
@ -38,4 +40,6 @@ public interface ITransmitter<N>
|
|||
* it to try and fix itself.
|
||||
*/
|
||||
public void fixNetwork();
|
||||
|
||||
public boolean areNetworksEqual(TileEntity tileEntity);
|
||||
}
|
||||
|
|
|
@ -2,9 +2,7 @@ package mekanism.api;
|
|||
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.common.IUniversalCable;
|
||||
|
||||
public interface ITransmitterNetwork<T, A, N>
|
||||
public interface ITransmitterNetwork<A, N>
|
||||
{
|
||||
public void tick();
|
||||
|
||||
|
@ -12,15 +10,15 @@ public interface ITransmitterNetwork<T, A, N>
|
|||
|
||||
public Set<A> getAcceptors(Object... data);
|
||||
|
||||
public void removeTransmitter(T transmitter);
|
||||
public void removeTransmitter(ITransmitter<N> transmitter);
|
||||
|
||||
public void refresh();
|
||||
|
||||
public void split(T splitPoint);
|
||||
public void split(ITransmitter<N> splitPoint);
|
||||
|
||||
public void merge(N network);
|
||||
|
||||
public void fixMessedUpNetwork(T transmitter);
|
||||
public void fixMessedUpNetwork(ITransmitter<N> transmitter);
|
||||
|
||||
public void register();
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
package mekanism.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.EnergyNetwork.NetworkFinder;
|
||||
import mekanism.common.IUniversalCable;
|
||||
import mekanism.common.TileEntityUniversalCable;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
@ -32,9 +31,9 @@ public class EnergyClientUpdate
|
|||
{
|
||||
TileEntity tileEntity = object.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(tileEntity instanceof TileEntityUniversalCable)
|
||||
{
|
||||
((IUniversalCable)tileEntity).setCachedEnergy(energyScale);
|
||||
((TileEntityUniversalCable)tileEntity).setCachedEnergy(energyScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,7 @@ import java.util.List;
|
|||
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.FluidNetwork.NetworkFinder;
|
||||
import mekanism.common.IMechanicalPipe;
|
||||
import mekanism.common.IUniversalCable;
|
||||
import mekanism.common.TileEntityMechanicalPipe;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
@ -33,9 +32,9 @@ public class FluidClientUpdate
|
|||
{
|
||||
TileEntity tileEntity = object.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IMechanicalPipe)
|
||||
if(tileEntity instanceof TileEntityMechanicalPipe)
|
||||
{
|
||||
((IMechanicalPipe)tileEntity).onTransfer(fluidStack);
|
||||
((TileEntityMechanicalPipe)tileEntity).onTransfer(fluidStack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,8 @@ package mekanism.common;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
|
||||
import mekanism.api.GasTransmission;
|
||||
import mekanism.api.IPressurizedTube;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.ITubeConnection;
|
||||
import mekanism.client.ClientProxy;
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -23,6 +21,7 @@ import net.minecraft.util.AxisAlignedBB;
|
|||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
@ -264,22 +263,7 @@ public class BlockTransmitter extends Block
|
|||
|
||||
if(!world.isRemote)
|
||||
{
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
{
|
||||
((IUniversalCable)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof IMechanicalPipe)
|
||||
{
|
||||
((IMechanicalPipe)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof IPressurizedTube)
|
||||
{
|
||||
((IPressurizedTube)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof ILogisticalTransporter)
|
||||
{
|
||||
((ILogisticalTransporter)tileEntity).refreshNetwork();
|
||||
}
|
||||
((ITransmitter)tileEntity).refreshNetwork();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -290,22 +274,7 @@ public class BlockTransmitter extends Block
|
|||
|
||||
if(!world.isRemote)
|
||||
{
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
{
|
||||
((IUniversalCable)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof IMechanicalPipe)
|
||||
{
|
||||
((IMechanicalPipe)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof IPressurizedTube)
|
||||
{
|
||||
((IPressurizedTube)tileEntity).refreshNetwork();
|
||||
}
|
||||
else if(tileEntity instanceof ILogisticalTransporter)
|
||||
{
|
||||
((ILogisticalTransporter)tileEntity).refreshNetwork();
|
||||
}
|
||||
((ITransmitter)tileEntity).refreshNetwork();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,11 +11,12 @@ import java.util.Set;
|
|||
|
||||
import mekanism.api.ICableOutputter;
|
||||
import mekanism.api.IStrictEnergyAcceptor;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
import universalelectricity.core.block.IElectrical;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
|
||||
public final class CableUtils
|
||||
{
|
||||
|
@ -34,7 +35,7 @@ public final class CableUtils
|
|||
|
||||
if(acceptor instanceof IStrictEnergyAcceptor ||
|
||||
acceptor instanceof IEnergySink ||
|
||||
(acceptor instanceof IPowerReceptor && !(acceptor instanceof IUniversalCable) && Mekanism.hooks.BuildCraftLoaded) ||
|
||||
(acceptor instanceof IPowerReceptor && !(acceptor instanceof ITransmitter) && Mekanism.hooks.BuildCraftLoaded) ||
|
||||
acceptor instanceof IElectrical)
|
||||
{
|
||||
acceptors[orientation.ordinal()] = acceptor;
|
||||
|
@ -57,7 +58,7 @@ public final class CableUtils
|
|||
{
|
||||
TileEntity cable = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(cable instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(cable, EnergyNetwork.class))
|
||||
{
|
||||
cables[orientation.ordinal()] = cable;
|
||||
}
|
||||
|
@ -166,7 +167,7 @@ public final class CableUtils
|
|||
return true;
|
||||
}
|
||||
|
||||
if(tileEntity instanceof IPowerReceptor && !(tileEntity instanceof IUniversalCable) && Mekanism.hooks.BuildCraftLoaded)
|
||||
if(tileEntity instanceof IPowerReceptor && !(tileEntity instanceof ITransmitter) && Mekanism.hooks.BuildCraftLoaded)
|
||||
{
|
||||
if(!(tileEntity instanceof IEnergyAcceptor) || ((IEnergyAcceptor)tileEntity).acceptsEnergyFrom(null, MekanismUtils.toIC2Direction(side).getInverse()))
|
||||
{
|
||||
|
@ -191,9 +192,9 @@ public final class CableUtils
|
|||
{
|
||||
TileEntity pointer = Object3D.get(sender).getFromSide(facing).getTileEntity(sender.worldObj);
|
||||
|
||||
if(pointer instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(pointer, EnergyNetwork.class))
|
||||
{
|
||||
IUniversalCable cable = (IUniversalCable)pointer;
|
||||
ITransmitter<EnergyNetwork> cable = (ITransmitter<EnergyNetwork>)pointer;
|
||||
|
||||
ArrayList<TileEntity> ignored = new ArrayList<TileEntity>();
|
||||
ignored.add(sender);
|
||||
|
@ -224,9 +225,9 @@ public final class CableUtils
|
|||
{
|
||||
TileEntity sideTile = Object3D.get(pointer).getFromSide(side).getTileEntity(pointer.worldObj);
|
||||
|
||||
if(sideTile instanceof IUniversalCable && !ignored.contains(sideTile))
|
||||
if(MekanismUtils.checkNetwork(sideTile, EnergyNetwork.class) && !ignored.contains(sideTile))
|
||||
{
|
||||
networks.add(((IUniversalCable)sideTile).getNetwork());
|
||||
networks.add(((ITransmitter<EnergyNetwork>)sideTile).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,27 +4,22 @@ import ic2.api.energy.tile.IEnergySink;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.api.DynamicNetwork;
|
||||
import mekanism.api.IStrictEnergyAcceptor;
|
||||
import mekanism.api.ITransmitterNetwork;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.api.TransmitterNetworkRegistry;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.Event;
|
||||
import net.minecraftforge.event.ForgeSubscribe;
|
||||
import net.minecraftforge.event.world.ChunkEvent;
|
||||
import universalelectricity.core.block.IElectrical;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
|
@ -32,18 +27,24 @@ import buildcraft.api.power.PowerHandler.PowerReceiver;
|
|||
import buildcraft.api.power.PowerHandler.Type;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
|
||||
public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, EnergyNetwork>
|
||||
public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
||||
{
|
||||
private double lastPowerScale = 0;
|
||||
private double joulesTransmitted = 0;
|
||||
private double joulesLastTick = 0;
|
||||
|
||||
public EnergyNetwork(IUniversalCable... varCables)
|
||||
public EnergyNetwork(ITransmitter<EnergyNetwork>... varCables)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varCables));
|
||||
register();
|
||||
}
|
||||
|
||||
public EnergyNetwork(Collection<ITransmitter<EnergyNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
register();
|
||||
}
|
||||
|
||||
public EnergyNetwork(Set<EnergyNetwork> networks)
|
||||
{
|
||||
for(EnergyNetwork net : networks)
|
||||
|
@ -201,15 +202,15 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
@Override
|
||||
public void refresh()
|
||||
{
|
||||
Set<IUniversalCable> iterCables = (Set<IUniversalCable>) transmitters.clone();
|
||||
Iterator<IUniversalCable> it = iterCables.iterator();
|
||||
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>) transmitters.clone();
|
||||
Iterator<ITransmitter<EnergyNetwork>> it = iterCables.iterator();
|
||||
|
||||
possibleAcceptors.clear();
|
||||
acceptorDirections.clear();
|
||||
|
||||
while(it.hasNext())
|
||||
{
|
||||
IUniversalCable conductor = (IUniversalCable)it.next();
|
||||
ITransmitter<EnergyNetwork> conductor = (ITransmitter<EnergyNetwork>)it.next();
|
||||
|
||||
if(conductor == null || ((TileEntity)conductor).isInvalid())
|
||||
{
|
||||
|
@ -221,13 +222,13 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
}
|
||||
}
|
||||
|
||||
for(IUniversalCable cable : iterCables)
|
||||
for(ITransmitter<EnergyNetwork> cable : iterCables)
|
||||
{
|
||||
TileEntity[] acceptors = CableUtils.getConnectedEnergyAcceptors((TileEntity)cable);
|
||||
|
||||
for(TileEntity acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof IUniversalCable))
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
@ -236,6 +237,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
}
|
||||
|
||||
double currentPowerScale = getPowerScale();
|
||||
|
||||
if(FMLCommonHandler.instance().getEffectiveSide().isServer())
|
||||
{
|
||||
lastPowerScale = currentPowerScale;
|
||||
|
@ -258,7 +260,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
}
|
||||
|
||||
@Override
|
||||
public void split(IUniversalCable splitPoint)
|
||||
public void split(ITransmitter<EnergyNetwork> splitPoint)
|
||||
{
|
||||
if(splitPoint instanceof TileEntity)
|
||||
{
|
||||
|
@ -281,7 +283,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
{
|
||||
TileEntity connectedBlockA = connectedBlocks[countOne];
|
||||
|
||||
if(connectedBlockA instanceof IUniversalCable && !dealtWith[countOne])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockA, EnergyNetwork.class) && !dealtWith[countOne])
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
|
@ -290,7 +292,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
{
|
||||
TileEntity connectedBlockB = connectedBlocks[countTwo];
|
||||
|
||||
if(connectedBlockB instanceof IUniversalCable && !dealtWith[countTwo])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockB, EnergyNetwork.class) && !dealtWith[countTwo])
|
||||
{
|
||||
if(partNetwork.contains(Object3D.get(connectedBlockB)))
|
||||
{
|
||||
|
@ -299,21 +301,22 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
}
|
||||
}
|
||||
|
||||
Set<IUniversalCable> newNetCables= new HashSet<IUniversalCable>();
|
||||
Set<ITransmitter<EnergyNetwork>> newNetCables = new HashSet<ITransmitter<EnergyNetwork>>();
|
||||
|
||||
for(Object3D node : finder.iterated)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
|
||||
|
||||
if(nodeTile instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, EnergyNetwork.class))
|
||||
{
|
||||
if(nodeTile != splitPoint)
|
||||
{
|
||||
newNetCables.add((IUniversalCable)nodeTile);
|
||||
newNetCables.add((ITransmitter<EnergyNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EnergyNetwork newNetwork = new EnergyNetwork(newNetCables.toArray(new IUniversalCable[0]));
|
||||
EnergyNetwork newNetwork = new EnergyNetwork(newNetCables);
|
||||
newNetwork.refresh();
|
||||
}
|
||||
}
|
||||
|
@ -323,26 +326,26 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
}
|
||||
|
||||
@Override
|
||||
public void fixMessedUpNetwork(IUniversalCable cable)
|
||||
public void fixMessedUpNetwork(ITransmitter<EnergyNetwork> cable)
|
||||
{
|
||||
if(cable instanceof TileEntity)
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)cable).getWorldObj(), Object3D.get((TileEntity)cable), null);
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
Set<IUniversalCable> newCables = new HashSet<IUniversalCable>();
|
||||
Set<ITransmitter<EnergyNetwork>> newCables = new HashSet<ITransmitter<EnergyNetwork>>();
|
||||
|
||||
for(Object3D node : partNetwork)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)cable).worldObj);
|
||||
|
||||
if(nodeTile instanceof IUniversalCable)
|
||||
if(nodeTile instanceof ITransmitter)
|
||||
{
|
||||
((IUniversalCable)nodeTile).removeFromNetwork();
|
||||
newCables.add((IUniversalCable)nodeTile);
|
||||
((ITransmitter<EnergyNetwork>)nodeTile).removeFromNetwork();
|
||||
newCables.add((ITransmitter<EnergyNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
|
||||
EnergyNetwork newNetwork = new EnergyNetwork(newCables.toArray(new IUniversalCable[0]));
|
||||
EnergyNetwork newNetwork = new EnergyNetwork(newCables);
|
||||
newNetwork.refresh();
|
||||
newNetwork.fixed = true;
|
||||
deregister();
|
||||
|
@ -370,7 +373,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
|
||||
public void loopAll(Object3D location)
|
||||
{
|
||||
if(location.getTileEntity(worldObj) instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(location.getTileEntity(worldObj), EnergyNetwork.class))
|
||||
{
|
||||
iterated.add(location);
|
||||
}
|
||||
|
@ -383,7 +386,7 @@ public class EnergyNetwork extends DynamicNetwork<IUniversalCable, TileEntity, E
|
|||
{
|
||||
TileEntity tileEntity = obj.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, EnergyNetwork.class))
|
||||
{
|
||||
loopAll(obj);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package mekanism.common;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
@ -9,6 +10,7 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import mekanism.api.DynamicNetwork;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -19,14 +21,20 @@ import net.minecraftforge.fluids.FluidStack;
|
|||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
|
||||
public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler, FluidNetwork>
|
||||
public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
||||
{
|
||||
public FluidNetwork(IMechanicalPipe... varPipes)
|
||||
public FluidNetwork(ITransmitter<FluidNetwork>... varPipes)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varPipes));
|
||||
register();
|
||||
}
|
||||
|
||||
public FluidNetwork(Collection<ITransmitter<FluidNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
register();
|
||||
}
|
||||
|
||||
public FluidNetwork(Set<FluidNetwork> networks)
|
||||
{
|
||||
for(FluidNetwork net : networks)
|
||||
|
@ -104,7 +112,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
@Override
|
||||
public void refresh()
|
||||
{
|
||||
Set<IMechanicalPipe> iterPipes = (Set<IMechanicalPipe>) transmitters.clone();
|
||||
Set<ITransmitter<FluidNetwork>> iterPipes = (Set<ITransmitter<FluidNetwork>>)transmitters.clone();
|
||||
Iterator it = iterPipes.iterator();
|
||||
|
||||
possibleAcceptors.clear();
|
||||
|
@ -112,7 +120,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
|
||||
while(it.hasNext())
|
||||
{
|
||||
IMechanicalPipe conductor = (IMechanicalPipe)it.next();
|
||||
ITransmitter<FluidNetwork> conductor = (ITransmitter<FluidNetwork>)it.next();
|
||||
|
||||
if(conductor == null || ((TileEntity)conductor).isInvalid())
|
||||
{
|
||||
|
@ -124,13 +132,13 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
}
|
||||
}
|
||||
|
||||
for(IMechanicalPipe pipe : iterPipes)
|
||||
for(ITransmitter<FluidNetwork> pipe : iterPipes)
|
||||
{
|
||||
IFluidHandler[] acceptors = PipeUtils.getConnectedAcceptors((TileEntity)pipe);
|
||||
|
||||
for(IFluidHandler acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof IMechanicalPipe))
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
@ -153,7 +161,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
}
|
||||
|
||||
@Override
|
||||
public void split(IMechanicalPipe splitPoint)
|
||||
public void split(ITransmitter<FluidNetwork> splitPoint)
|
||||
{
|
||||
if(splitPoint instanceof TileEntity)
|
||||
{
|
||||
|
@ -176,7 +184,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
{
|
||||
TileEntity connectedBlockA = connectedBlocks[countOne];
|
||||
|
||||
if(connectedBlockA instanceof IMechanicalPipe && !dealtWith[countOne])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockA, FluidNetwork.class) && !dealtWith[countOne])
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
|
@ -185,7 +193,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
{
|
||||
TileEntity connectedBlockB = connectedBlocks[countTwo];
|
||||
|
||||
if(connectedBlockB instanceof IMechanicalPipe && !dealtWith[countTwo])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockB, FluidNetwork.class) && !dealtWith[countTwo])
|
||||
{
|
||||
if(partNetwork.contains(Object3D.get(connectedBlockB)))
|
||||
{
|
||||
|
@ -194,21 +202,22 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
}
|
||||
}
|
||||
|
||||
Set<IMechanicalPipe> newNetPipes= new HashSet<IMechanicalPipe>();
|
||||
Set<ITransmitter<FluidNetwork>> newNetPipes= new HashSet<ITransmitter<FluidNetwork>>();
|
||||
|
||||
for(Object3D node : finder.iterated)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
|
||||
|
||||
if(nodeTile instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, FluidNetwork.class))
|
||||
{
|
||||
if(nodeTile != splitPoint)
|
||||
{
|
||||
newNetPipes.add((IMechanicalPipe)nodeTile);
|
||||
newNetPipes.add((ITransmitter<FluidNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FluidNetwork newNetwork = new FluidNetwork(newNetPipes.toArray(new IMechanicalPipe[0]));
|
||||
FluidNetwork newNetwork = new FluidNetwork(newNetPipes);
|
||||
newNetwork.refresh();
|
||||
}
|
||||
}
|
||||
|
@ -218,26 +227,26 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
}
|
||||
|
||||
@Override
|
||||
public void fixMessedUpNetwork(IMechanicalPipe pipe)
|
||||
public void fixMessedUpNetwork(ITransmitter<FluidNetwork> pipe)
|
||||
{
|
||||
if(pipe instanceof TileEntity)
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)pipe).getWorldObj(), Object3D.get((TileEntity)pipe), null);
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
Set<IMechanicalPipe> newPipes = new HashSet<IMechanicalPipe>();
|
||||
Set<ITransmitter<FluidNetwork>> newPipes = new HashSet<ITransmitter<FluidNetwork>>();
|
||||
|
||||
for(Object3D node : partNetwork)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)pipe).worldObj);
|
||||
|
||||
if(nodeTile instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, FluidNetwork.class))
|
||||
{
|
||||
((IMechanicalPipe) nodeTile).removeFromNetwork();
|
||||
newPipes.add((IMechanicalPipe)nodeTile);
|
||||
((ITransmitter<FluidNetwork>)nodeTile).removeFromNetwork();
|
||||
newPipes.add((ITransmitter<FluidNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
|
||||
FluidNetwork newNetwork = new FluidNetwork(newPipes.toArray(new IMechanicalPipe[0]));
|
||||
FluidNetwork newNetwork = new FluidNetwork(newPipes);
|
||||
newNetwork.refresh();
|
||||
newNetwork.fixed = true;
|
||||
deregister();
|
||||
|
@ -265,7 +274,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
|
||||
public void loopAll(Object3D location)
|
||||
{
|
||||
if(location.getTileEntity(worldObj) instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(location.getTileEntity(worldObj), FluidNetwork.class))
|
||||
{
|
||||
iterated.add(location);
|
||||
}
|
||||
|
@ -278,7 +287,7 @@ public class FluidNetwork extends DynamicNetwork<IMechanicalPipe, IFluidHandler,
|
|||
{
|
||||
TileEntity tileEntity = obj.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, FluidNetwork.class))
|
||||
{
|
||||
loopAll(obj);
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
package mekanism.common;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
|
||||
public interface ILogisticalTransporter extends ITransmitter<InventoryNetwork>
|
||||
{
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package mekanism.common;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
/**
|
||||
* Implement this in your TileEntity class if the block can transfer fluid as a Mechanical Pipe.
|
||||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
public interface IMechanicalPipe extends ITransmitter<FluidNetwork>
|
||||
{
|
||||
/**
|
||||
* Called when fluid is transferred through this pipe.
|
||||
* @param fluidStack - the fluid transferred
|
||||
*/
|
||||
public void onTransfer(FluidStack fluidStack);
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package mekanism.common;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
|
||||
/**
|
||||
* Implement this in your TileEntity class if the block can transfer energy as a Universal Cable.
|
||||
* @author AidanBrady
|
||||
*
|
||||
*/
|
||||
public interface IUniversalCable extends ITransmitter<EnergyNetwork>
|
||||
{
|
||||
/**
|
||||
* Sets a Universal Cable's energy scale to a new value.
|
||||
* @param energyScale - energy scale to set
|
||||
*/
|
||||
public void setCachedEnergy(double energyScale);
|
||||
}
|
|
@ -2,33 +2,34 @@ package mekanism.common;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
import mekanism.api.DynamicNetwork;
|
||||
import mekanism.api.ITransmitterNetwork;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.api.TransmitterNetworkRegistry;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.event.ForgeSubscribe;
|
||||
import net.minecraftforge.event.world.ChunkEvent;
|
||||
|
||||
public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IInventory, InventoryNetwork>
|
||||
public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwork>
|
||||
{
|
||||
public InventoryNetwork(ILogisticalTransporter... varTransporters)
|
||||
public InventoryNetwork(ITransmitter<InventoryNetwork>... varTransporters)
|
||||
{
|
||||
transmitters.addAll(Arrays.asList(varTransporters));
|
||||
register();
|
||||
}
|
||||
|
||||
public InventoryNetwork(Collection<ITransmitter<InventoryNetwork>> collection)
|
||||
{
|
||||
transmitters.addAll(collection);
|
||||
register();
|
||||
}
|
||||
|
||||
public InventoryNetwork(Set<InventoryNetwork> networks)
|
||||
{
|
||||
for(InventoryNetwork net : networks)
|
||||
|
@ -53,15 +54,15 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
@Override
|
||||
public void refresh()
|
||||
{
|
||||
Set<ILogisticalTransporter> iterPipes = (Set<ILogisticalTransporter>)transmitters.clone();
|
||||
Iterator it = iterPipes.iterator();
|
||||
Set<ITransmitter<InventoryNetwork>> iterTransmitters = (Set<ITransmitter<InventoryNetwork>>)transmitters.clone();
|
||||
Iterator it = iterTransmitters.iterator();
|
||||
|
||||
possibleAcceptors.clear();
|
||||
acceptorDirections.clear();
|
||||
|
||||
while(it.hasNext())
|
||||
{
|
||||
ILogisticalTransporter conductor = (ILogisticalTransporter)it.next();
|
||||
ITransmitter<InventoryNetwork> conductor = (ITransmitter<InventoryNetwork>)it.next();
|
||||
|
||||
if(conductor == null || ((TileEntity)conductor).isInvalid())
|
||||
{
|
||||
|
@ -73,13 +74,13 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
}
|
||||
}
|
||||
|
||||
for(ILogisticalTransporter pipe : iterPipes)
|
||||
for(ITransmitter<InventoryNetwork> transmitter : iterTransmitters)
|
||||
{
|
||||
IInventory[] inventories = TransporterUtils.getConnectedInventories((TileEntity)pipe);
|
||||
IInventory[] inventories = TransporterUtils.getConnectedInventories((TileEntity)transmitter);
|
||||
|
||||
for(IInventory inventory : inventories)
|
||||
{
|
||||
if(inventory != null && !(inventory instanceof ILogisticalTransporter))
|
||||
if(inventory != null && !(inventory instanceof ITransmitter))
|
||||
{
|
||||
possibleAcceptors.add(inventory);
|
||||
acceptorDirections.put(inventory, ForgeDirection.getOrientation(Arrays.asList(inventories).indexOf(inventory)));
|
||||
|
@ -102,7 +103,7 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
}
|
||||
|
||||
@Override
|
||||
public void split(ILogisticalTransporter splitPoint)
|
||||
public void split(ITransmitter<InventoryNetwork> splitPoint)
|
||||
{
|
||||
if(splitPoint instanceof TileEntity)
|
||||
{
|
||||
|
@ -125,7 +126,7 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
{
|
||||
TileEntity connectedBlockA = connectedBlocks[countOne];
|
||||
|
||||
if(connectedBlockA instanceof ILogisticalTransporter && !dealtWith[countOne])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockA, InventoryNetwork.class) && !dealtWith[countOne])
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint));
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
|
@ -134,7 +135,7 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
{
|
||||
TileEntity connectedBlockB = connectedBlocks[countTwo];
|
||||
|
||||
if(connectedBlockB instanceof ILogisticalTransporter && !dealtWith[countTwo])
|
||||
if(MekanismUtils.checkNetwork(connectedBlockB, InventoryNetwork.class) && !dealtWith[countTwo])
|
||||
{
|
||||
if(partNetwork.contains(Object3D.get(connectedBlockB)))
|
||||
{
|
||||
|
@ -143,22 +144,22 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
}
|
||||
}
|
||||
|
||||
Set<ILogisticalTransporter> newNetTransporters= new HashSet<ILogisticalTransporter>();
|
||||
Set<ITransmitter<InventoryNetwork>> newNetTransporters = new HashSet<ITransmitter<InventoryNetwork>>();
|
||||
|
||||
for(Object3D node : finder.iterated)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj);
|
||||
|
||||
if(nodeTile instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, InventoryNetwork.class))
|
||||
{
|
||||
if(nodeTile != splitPoint)
|
||||
{
|
||||
newNetTransporters.add((ILogisticalTransporter)nodeTile);
|
||||
newNetTransporters.add((ITransmitter<InventoryNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
InventoryNetwork newNetwork = new InventoryNetwork(newNetTransporters.toArray(new ILogisticalTransporter[0]));
|
||||
InventoryNetwork newNetwork = new InventoryNetwork(newNetTransporters);
|
||||
newNetwork.refresh();
|
||||
}
|
||||
}
|
||||
|
@ -168,26 +169,26 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
}
|
||||
|
||||
@Override
|
||||
public void fixMessedUpNetwork(ILogisticalTransporter pipe)
|
||||
public void fixMessedUpNetwork(ITransmitter<InventoryNetwork> transmitter)
|
||||
{
|
||||
if(pipe instanceof TileEntity)
|
||||
if(transmitter instanceof TileEntity)
|
||||
{
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)pipe).getWorldObj(), Object3D.get((TileEntity)pipe), null);
|
||||
NetworkFinder finder = new NetworkFinder(((TileEntity)transmitter).getWorldObj(), Object3D.get((TileEntity)transmitter), null);
|
||||
List<Object3D> partNetwork = finder.exploreNetwork();
|
||||
Set<ILogisticalTransporter> newTransporters = new HashSet<ILogisticalTransporter>();
|
||||
Set<ITransmitter<InventoryNetwork>> newTransporters = new HashSet<ITransmitter<InventoryNetwork>>();
|
||||
|
||||
for(Object3D node : partNetwork)
|
||||
{
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)pipe).worldObj);
|
||||
TileEntity nodeTile = node.getTileEntity(((TileEntity)transmitter).worldObj);
|
||||
|
||||
if(nodeTile instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(nodeTile, InventoryNetwork.class))
|
||||
{
|
||||
((ILogisticalTransporter)nodeTile).removeFromNetwork();
|
||||
newTransporters.add((ILogisticalTransporter)nodeTile);
|
||||
((ITransmitter<InventoryNetwork>)nodeTile).removeFromNetwork();
|
||||
newTransporters.add((ITransmitter<InventoryNetwork>)nodeTile);
|
||||
}
|
||||
}
|
||||
|
||||
InventoryNetwork newNetwork = new InventoryNetwork(newTransporters.toArray(new ILogisticalTransporter[0]));
|
||||
InventoryNetwork newNetwork = new InventoryNetwork(newTransporters);
|
||||
newNetwork.refresh();
|
||||
newNetwork.fixed = true;
|
||||
deregister();
|
||||
|
@ -215,7 +216,7 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
|
||||
public void loopAll(Object3D location)
|
||||
{
|
||||
if(location.getTileEntity(worldObj) instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(location.getTileEntity(worldObj), InventoryNetwork.class))
|
||||
{
|
||||
iterated.add(location);
|
||||
}
|
||||
|
@ -228,7 +229,7 @@ public class InventoryNetwork extends DynamicNetwork<ILogisticalTransporter, IIn
|
|||
{
|
||||
TileEntity tileEntity = obj.getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, InventoryNetwork.class))
|
||||
{
|
||||
loopAll(obj);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Random;
|
|||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.IConfigurable;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.network.PacketTileEntity;
|
||||
|
@ -66,9 +67,9 @@ public class ItemConfigurator extends ItemEnergized
|
|||
return true;
|
||||
}
|
||||
}
|
||||
else if(world.getBlockTileEntity(x, y, z) instanceof IUniversalCable)
|
||||
else if(world.getBlockTileEntity(x, y, z) instanceof ITransmitter)
|
||||
{
|
||||
((IUniversalCable)world.getBlockTileEntity(x, y, z)).fixNetwork();
|
||||
((ITransmitter)world.getBlockTileEntity(x, y, z)).fixNetwork();
|
||||
}
|
||||
|
||||
if(getState(stack) == 0)
|
||||
|
|
|
@ -2,16 +2,16 @@ package mekanism.common;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import universalelectricity.core.electricity.ElectricityDisplay;
|
||||
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
|
||||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.TransmitterNetworkRegistry;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatMessageComponent;
|
||||
import net.minecraft.world.World;
|
||||
import universalelectricity.core.electricity.ElectricityDisplay;
|
||||
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
|
||||
|
||||
public class ItemEnergyMeter extends ItemEnergized
|
||||
{
|
||||
|
@ -29,13 +29,13 @@ public class ItemEnergyMeter extends ItemEnergized
|
|||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, EnergyNetwork.class))
|
||||
{
|
||||
if(getEnergy(stack) >= ENERGY_PER_USE)
|
||||
{
|
||||
setEnergy(stack, getEnergy(stack)-ENERGY_PER_USE);
|
||||
|
||||
IUniversalCable cable = (IUniversalCable)tileEntity;
|
||||
ITransmitter<EnergyNetwork> cable = (ITransmitter<EnergyNetwork>)tileEntity;
|
||||
|
||||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------"));
|
||||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + " *Cables: " + EnumColor.DARK_GREY + cable.getNetwork().transmitters.size()));
|
||||
|
@ -45,7 +45,9 @@ public class ItemEnergyMeter extends ItemEnergized
|
|||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------"));
|
||||
}
|
||||
}
|
||||
if(player.isSneaking() && Mekanism.debug){
|
||||
|
||||
if(player.isSneaking() && Mekanism.debug)
|
||||
{
|
||||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + "---------- " + EnumColor.DARK_BLUE + "[Mekanism Debug]" + EnumColor.GREY + " ----------"));
|
||||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + " *Networks: " + EnumColor.DARK_GREY + TransmitterNetworkRegistry.getInstance().toString()));
|
||||
player.sendChatToPlayer(ChatMessageComponent.func_111066_d(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[=======]" + EnumColor.GREY + " -------------"));
|
||||
|
|
|
@ -10,7 +10,6 @@ import java.util.Map;
|
|||
import java.util.logging.Logger;
|
||||
|
||||
import mekanism.api.GasNetwork.GasTransferEvent;
|
||||
import mekanism.api.GasTransmission;
|
||||
import mekanism.api.InfuseObject;
|
||||
import mekanism.api.InfuseRegistry;
|
||||
import mekanism.api.InfuseType;
|
||||
|
|
|
@ -13,6 +13,8 @@ import java.util.Iterator;
|
|||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.IConfigurable;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.ITransmitterNetwork;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.IFactory.RecipeType;
|
||||
import mekanism.common.IRedstoneControl.RedstoneControl;
|
||||
|
@ -958,6 +960,19 @@ public final class MekanismUtils
|
|||
return false;
|
||||
}
|
||||
|
||||
public static boolean checkNetwork(TileEntity tileEntity, Class<? extends ITransmitterNetwork> networkClass)
|
||||
{
|
||||
if(tileEntity instanceof ITransmitter)
|
||||
{
|
||||
if(((ITransmitter)tileEntity).getNetwork().getClass() == networkClass)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static enum ResourceType
|
||||
{
|
||||
GUI("gui"),
|
||||
|
|
|
@ -2,6 +2,7 @@ package mekanism.common;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
@ -23,7 +24,7 @@ public final class PipeUtils
|
|||
{
|
||||
TileEntity pipe = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(pipe instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(pipe, FluidNetwork.class))
|
||||
{
|
||||
pipes[orientation.ordinal()] = pipe;
|
||||
}
|
||||
|
@ -97,7 +98,7 @@ public final class PipeUtils
|
|||
{
|
||||
TileEntity acceptor = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(acceptor instanceof IFluidHandler && !(acceptor instanceof IMechanicalPipe))
|
||||
if(acceptor instanceof IFluidHandler && !(acceptor instanceof ITransmitter))
|
||||
{
|
||||
acceptors[orientation.ordinal()] = (IFluidHandler)acceptor;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ public class TileEntityEnergyCube extends TileEntityElectricBlock implements IEn
|
|||
|
||||
if(electricityStored > 0)
|
||||
{
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, EnergyNetwork.class))
|
||||
{
|
||||
setEnergy(electricityStored - (Math.min(electricityStored, tier.OUTPUT) - CableUtils.emitEnergyToNetwork(Math.min(electricityStored, tier.OUTPUT), this, ForgeDirection.getOrientation(facing))));
|
||||
return;
|
||||
|
|
|
@ -3,6 +3,7 @@ package mekanism.common;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.network.PacketDataRequest;
|
||||
|
@ -16,7 +17,7 @@ import com.google.common.io.ByteArrayDataInput;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TileEntityLogisticalTransporter extends TileEntityTransmitter<InventoryNetwork> implements ILogisticalTransporter, ITileNetwork
|
||||
public class TileEntityLogisticalTransporter extends TileEntityTransmitter<InventoryNetwork> implements ITileNetwork
|
||||
{
|
||||
/** This transporter's active state. */
|
||||
public boolean isActive = false;
|
||||
|
@ -31,9 +32,9 @@ public class TileEntityLogisticalTransporter extends TileEntityTransmitter<Inven
|
|||
|
||||
for(TileEntity transporter : adjacentTransporters)
|
||||
{
|
||||
if(transporter instanceof ILogisticalTransporter && ((ILogisticalTransporter)transporter).getNetwork(false) != null)
|
||||
if(MekanismUtils.checkNetwork(transporter, InventoryNetwork.class) && ((ITransmitter<InventoryNetwork>)transporter).getNetwork(false) != null)
|
||||
{
|
||||
connectedNets.add(((ILogisticalTransporter)transporter).getNetwork());
|
||||
connectedNets.add(((ITransmitter<InventoryNetwork>)transporter).getNetwork());
|
||||
}
|
||||
}
|
||||
if(connectedNets.size() == 0 || worldObj.isRemote)
|
||||
|
@ -89,9 +90,9 @@ public class TileEntityLogisticalTransporter extends TileEntityTransmitter<Inven
|
|||
{
|
||||
TileEntity tileEntity = Object3D.get(this).getFromSide(side).getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, InventoryNetwork.class))
|
||||
{
|
||||
getNetwork().merge(((ILogisticalTransporter)tileEntity).getNetwork());
|
||||
getNetwork().merge(((ITransmitter<InventoryNetwork>)tileEntity).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.network.PacketDataRequest;
|
||||
|
@ -23,7 +24,7 @@ import com.google.common.io.ByteArrayDataInput;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork> implements IMechanicalPipe, IFluidHandler, ITileNetwork
|
||||
public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork> implements IFluidHandler, ITileNetwork
|
||||
{
|
||||
/** The fake tank used for fluid transfer calculations. */
|
||||
public FluidTank dummyTank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME);
|
||||
|
@ -37,7 +38,6 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork
|
|||
/** The scale (0F -> 1F) of this pipe's fluid level. */
|
||||
public float fluidScale;
|
||||
|
||||
@Override
|
||||
public void onTransfer(FluidStack fluidStack)
|
||||
{
|
||||
if(fluidStack.isFluidEqual(refFluid))
|
||||
|
@ -61,9 +61,9 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork
|
|||
|
||||
for(TileEntity pipe : adjacentPipes)
|
||||
{
|
||||
if(pipe instanceof IMechanicalPipe && ((IMechanicalPipe)pipe).getNetwork(false) != null)
|
||||
if(MekanismUtils.checkNetwork(pipe, FluidNetwork.class) && ((ITransmitter<FluidNetwork>)pipe).getNetwork(false) != null)
|
||||
{
|
||||
connectedNets.add(((IMechanicalPipe)pipe).getNetwork());
|
||||
connectedNets.add(((ITransmitter<FluidNetwork>)pipe).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,9 +120,9 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork
|
|||
{
|
||||
TileEntity tileEntity = Object3D.get(this).getFromSide(side).getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IMechanicalPipe)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, FluidNetwork.class))
|
||||
{
|
||||
getNetwork().merge(((IMechanicalPipe)tileEntity).getNetwork());
|
||||
getNetwork().merge(((ITransmitter<FluidNetwork>)tileEntity).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,13 +5,13 @@ import java.util.HashSet;
|
|||
import mekanism.api.EnumGas;
|
||||
import mekanism.api.GasNetwork;
|
||||
import mekanism.api.GasTransmission;
|
||||
import mekanism.api.IPressurizedTube;
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.ITubeConnection;
|
||||
import mekanism.api.Object3D;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork> implements IPressurizedTube, ITubeConnection
|
||||
public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork> implements ITubeConnection
|
||||
{
|
||||
/** The gas currently displayed in this tube. */
|
||||
public EnumGas refGas = null;
|
||||
|
@ -29,9 +29,9 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork>
|
|||
|
||||
for(TileEntity tube : adjacentTubes)
|
||||
{
|
||||
if(tube instanceof IPressurizedTube && ((IPressurizedTube)tube).getNetwork(false) != null)
|
||||
if(MekanismUtils.checkNetwork(tube, GasNetwork.class) && ((ITransmitter<GasNetwork>)tube).getNetwork(false) != null)
|
||||
{
|
||||
connectedNets.add(((IPressurizedTube)tube).getNetwork());
|
||||
connectedNets.add(((ITransmitter<GasNetwork>)tube).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -90,9 +90,9 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork>
|
|||
{
|
||||
TileEntity tileEntity = Object3D.get(this).getFromSide(side).getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IPressurizedTube && ((IPressurizedTube)tileEntity).canTransferGas())
|
||||
if(MekanismUtils.checkNetwork(tileEntity, GasNetwork.class))
|
||||
{
|
||||
getNetwork().merge(((IPressurizedTube)tileEntity).getNetwork());
|
||||
getNetwork().merge(((ITransmitter<GasNetwork>)tileEntity).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,19 +104,16 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTransferGas()
|
||||
{
|
||||
return worldObj.getBlockPowerInput(xCoord, yCoord, zCoord) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTransferGasToTube(TileEntity tile)
|
||||
{
|
||||
return canTransferGas();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransfer(EnumGas type)
|
||||
{
|
||||
if(type == refGas)
|
||||
|
|
|
@ -35,6 +35,12 @@ public abstract class TileEntityTransmitter<N> extends TileEntity implements ITr
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areNetworksEqual(TileEntity tileEntity)
|
||||
{
|
||||
return tileEntity instanceof ITransmitter && getNetwork().getClass() == ((ITransmitter)tileEntity).getNetwork().getClass();
|
||||
}
|
||||
|
||||
@Override
|
||||
public N getNetwork()
|
||||
{
|
||||
|
|
|
@ -2,23 +2,16 @@ package mekanism.common;
|
|||
|
||||
import java.util.HashSet;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.api.TransmitterNetworkRegistry;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.INetworkManager;
|
||||
import net.minecraft.network.packet.Packet;
|
||||
import net.minecraft.network.packet.Packet132TileEntityData;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import buildcraft.api.power.IPowerReceptor;
|
||||
import buildcraft.api.power.PowerHandler;
|
||||
import buildcraft.api.power.PowerHandler.PowerReceiver;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwork> implements IUniversalCable, IPowerReceptor
|
||||
public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwork> implements IPowerReceptor
|
||||
{
|
||||
/** A fake power handler used to initiate energy transfer calculations. */
|
||||
public PowerHandler powerHandler;
|
||||
|
@ -47,9 +40,9 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
|||
|
||||
for(TileEntity cable : adjacentCables)
|
||||
{
|
||||
if(cable instanceof IUniversalCable && ((IUniversalCable)cable).getNetwork(false) != null)
|
||||
if(MekanismUtils.checkNetwork(cable, EnergyNetwork.class) && ((ITransmitter<EnergyNetwork>)cable).getNetwork(false) != null)
|
||||
{
|
||||
connectedNets.add(((IUniversalCable)cable).getNetwork());
|
||||
connectedNets.add(((ITransmitter<EnergyNetwork>)cable).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,9 +99,9 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
|||
{
|
||||
TileEntity tileEntity = Object3D.get(this).getFromSide(side).getTileEntity(worldObj);
|
||||
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, EnergyNetwork.class))
|
||||
{
|
||||
getNetwork().merge(((IUniversalCable)tileEntity).getNetwork());
|
||||
getNetwork().merge(((ITransmitter<EnergyNetwork>)tileEntity).getNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,7 +124,6 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
|
|||
@Override
|
||||
public void doWork(PowerHandler workProvider) {}
|
||||
|
||||
@Override
|
||||
public void setCachedEnergy(double scale)
|
||||
{
|
||||
energyScale = scale;
|
||||
|
|
|
@ -2,6 +2,7 @@ package mekanism.common;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
import mekanism.api.ITransmitter;
|
||||
import mekanism.api.Object3D;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
|
@ -23,7 +24,7 @@ public final class TransporterUtils
|
|||
{
|
||||
TileEntity transporter = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(transporter instanceof ILogisticalTransporter)
|
||||
if(MekanismUtils.checkNetwork(transporter, InventoryNetwork.class))
|
||||
{
|
||||
transporters[orientation.ordinal()] = transporter;
|
||||
}
|
||||
|
@ -98,7 +99,7 @@ public final class TransporterUtils
|
|||
{
|
||||
TileEntity inventory = Object3D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
|
||||
|
||||
if(inventory instanceof IInventory && !(inventory instanceof ILogisticalTransporter))
|
||||
if(inventory instanceof IInventory && !(inventory instanceof ITransmitter))
|
||||
{
|
||||
inventories[orientation.ordinal()] = (IInventory)inventory;
|
||||
}
|
||||
|
|
|
@ -14,13 +14,12 @@ import mekanism.api.ICableOutputter;
|
|||
import mekanism.api.Object3D;
|
||||
import mekanism.client.IHasSound;
|
||||
import mekanism.common.CableUtils;
|
||||
import mekanism.common.EnergyNetwork;
|
||||
import mekanism.common.IActiveState;
|
||||
import mekanism.common.IRedstoneControl;
|
||||
import mekanism.common.IUniversalCable;
|
||||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.MekanismUtils;
|
||||
import mekanism.common.PacketHandler;
|
||||
import mekanism.common.IRedstoneControl.RedstoneControl;
|
||||
import mekanism.common.PacketHandler.Transmission;
|
||||
import mekanism.common.TileEntityElectricBlock;
|
||||
import mekanism.common.network.PacketTileEntity;
|
||||
|
@ -105,7 +104,7 @@ public abstract class TileEntityGenerator extends TileEntityElectricBlock implem
|
|||
|
||||
if(electricityStored > 0)
|
||||
{
|
||||
if(tileEntity instanceof IUniversalCable)
|
||||
if(MekanismUtils.checkNetwork(tileEntity, EnergyNetwork.class))
|
||||
{
|
||||
setEnergy(electricityStored - (Math.min(electricityStored, output) - CableUtils.emitEnergyToNetwork(Math.min(electricityStored, output), this, ForgeDirection.getOrientation(facing))));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue