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