Lots more work

This commit is contained in:
Aidan Brady 2013-12-20 19:12:33 -05:00
parent 7bb6b2761b
commit 2cf6fdc18c
36 changed files with 386 additions and 282 deletions

View file

@ -9,7 +9,7 @@ import java.util.List;
import java.util.Set;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.ITransmitterNetwork;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.FluidNetwork;
@ -36,13 +36,13 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
public GasStack gasStored;
public int prevStored;
public GasNetwork(ITransmitter<GasNetwork>... varPipes)
public GasNetwork(IGridTransmitter<GasNetwork>... varPipes)
{
transmitters.addAll(Arrays.asList(varPipes));
register();
}
public GasNetwork(Collection<ITransmitter<GasNetwork>> collection)
public GasNetwork(Collection<IGridTransmitter<GasNetwork>> collection)
{
transmitters.addAll(collection);
register();
@ -290,15 +290,15 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
@Override
public synchronized void refresh()
{
Set<ITransmitter<GasNetwork>> iterTubes = (Set<ITransmitter<GasNetwork>>)transmitters.clone();
Iterator<ITransmitter<GasNetwork>> it = iterTubes.iterator();
Set<IGridTransmitter<GasNetwork>> iterTubes = (Set<IGridTransmitter<GasNetwork>>)transmitters.clone();
Iterator<IGridTransmitter<GasNetwork>> it = iterTubes.iterator();
possibleAcceptors.clear();
acceptorDirections.clear();
while(it.hasNext())
{
ITransmitter<GasNetwork> conductor = (ITransmitter<GasNetwork>)it.next();
IGridTransmitter<GasNetwork> conductor = (IGridTransmitter<GasNetwork>)it.next();
if(conductor == null || ((TileEntity)conductor).isInvalid())
{
@ -310,7 +310,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
}
}
for(ITransmitter<GasNetwork> transmitter : transmitters)
for(IGridTransmitter<GasNetwork> transmitter : transmitters)
{
IGasHandler[] acceptors = GasTransmission.getConnectedAcceptors((TileEntity)transmitter);
@ -318,7 +318,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
{
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnectToAcceptor(side))
if(side != null && acceptor != null && !(acceptor instanceof IGridTransmitter) && transmitter.canConnectToAcceptor(side))
{
possibleAcceptors.add(acceptor);
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
@ -393,7 +393,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
}
@Override
protected GasNetwork create(ITransmitter<GasNetwork>... varTransmitters)
protected GasNetwork create(IGridTransmitter<GasNetwork>... varTransmitters)
{
GasNetwork network = new GasNetwork(varTransmitters);
network.refGas = refGas;
@ -418,7 +418,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
}
@Override
protected GasNetwork create(Collection<ITransmitter<GasNetwork>> collection)
protected GasNetwork create(Collection<IGridTransmitter<GasNetwork>> collection)
{
GasNetwork network = new GasNetwork(collection);
network.refGas = refGas;

View file

@ -1,7 +1,7 @@
package mekanism.api.gas;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -107,7 +107,7 @@ public final class GasTransmission
if(TransmissionType.checkTransmissionType(pointer, TransmissionType.GAS, sender))
{
return ((ITransmitter<GasNetwork>)pointer).getTransmitterNetwork().emit(stack);
return ((IGridTransmitter<GasNetwork>)pointer).getTransmitterNetwork().emit(stack);
}
return 0;

View file

@ -1,9 +1,9 @@
package mekanism.api.gas;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import net.minecraft.tileentity.TileEntity;
public interface IGasTransmitter extends ITransmitter<GasNetwork>
public interface IGasTransmitter extends IGridTransmitter<GasNetwork>
{
public boolean canTransferGasToTube(TileEntity tile);
}

View file

@ -21,7 +21,7 @@ import cpw.mods.fml.common.FMLCommonHandler;
public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implements ITransmitterNetwork<A, N>, IClientTicker
{
public HashSet<ITransmitter<N>> transmitters = new HashSet<ITransmitter<N>>();
public HashSet<IGridTransmitter<N>> transmitters = new HashSet<IGridTransmitter<N>>();
public HashSet<A> possibleAcceptors = new HashSet<A>();
public HashMap<A, ForgeDirection> acceptorDirections = new HashMap<A, ForgeDirection>();
@ -34,19 +34,19 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
protected boolean needsUpdate = false;
protected abstract ITransmitterNetwork<A, N> create(ITransmitter<N>... varTransmitters);
protected abstract ITransmitterNetwork<A, N> create(IGridTransmitter<N>... varTransmitters);
protected abstract ITransmitterNetwork<A, N> create(Collection<ITransmitter<N>> collection);
protected abstract ITransmitterNetwork<A, N> create(Collection<IGridTransmitter<N>> collection);
protected abstract ITransmitterNetwork<A, N> create(Set<N> networks);
public void addAllTransmitters(Set<ITransmitter<N>> newTransmitters)
public void addAllTransmitters(Set<IGridTransmitter<N>> newTransmitters)
{
transmitters.addAll(newTransmitters);
}
@Override
public void removeTransmitter(ITransmitter<N> transmitter)
public void removeTransmitter(IGridTransmitter<N> transmitter)
{
transmitters.remove(transmitter);
@ -60,7 +60,7 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
public void register()
{
try {
ITransmitter<N> aTransmitter = transmitters.iterator().next();
IGridTransmitter<N> aTransmitter = transmitters.iterator().next();
if(aTransmitter instanceof TileEntity)
{
@ -152,13 +152,13 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
}
@Override
public synchronized void fixMessedUpNetwork(ITransmitter<N> transmitter)
public synchronized void fixMessedUpNetwork(IGridTransmitter<N> transmitter)
{
if(transmitter instanceof TileEntity)
{
NetworkFinder finder = new NetworkFinder(((TileEntity)transmitter).getWorldObj(), getTransmissionType(), Coord4D.get((TileEntity)transmitter));
List<Coord4D> partNetwork = finder.exploreNetwork();
Set<ITransmitter<N>> newTransporters = new HashSet<ITransmitter<N>>();
Set<IGridTransmitter<N>> newTransporters = new HashSet<IGridTransmitter<N>>();
for(Coord4D node : partNetwork)
{
@ -166,8 +166,8 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
if(TransmissionType.checkTransmissionType(nodeTile, getTransmissionType(), (TileEntity)transmitter))
{
((ITransmitter<N>)nodeTile).removeFromTransmitterNetwork();
newTransporters.add((ITransmitter<N>)nodeTile);
((IGridTransmitter<N>)nodeTile).removeFromTransmitterNetwork();
newTransporters.add((IGridTransmitter<N>)nodeTile);
}
}
@ -179,7 +179,7 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
}
@Override
public synchronized void split(ITransmitter<N> splitPoint)
public synchronized void split(IGridTransmitter<N> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
@ -226,7 +226,7 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
}
}
Set<ITransmitter<N>> newNetCables = new HashSet<ITransmitter<N>>();
Set<IGridTransmitter<N>> newNetCables = new HashSet<IGridTransmitter<N>>();
for(Coord4D node : finder.iterated)
{
@ -236,7 +236,7 @@ public abstract class DynamicNetwork<A, N extends DynamicNetwork<A, N>> implemen
{
if(nodeTile != splitPoint)
{
newNetCables.add((ITransmitter<N>)nodeTile);
newNetCables.add((IGridTransmitter<N>)nodeTile);
}
}
}

View file

@ -0,0 +1,63 @@
package mekanism.api.transmitters;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public interface IGridTransmitter<N extends DynamicNetwork<?, N>> extends ITransmitter
{
/**
* Gets the network currently in use by this transmitter segment.
* @return network this transmitter is using
*/
public N getTransmitterNetwork();
/**
* Gets the network currently in use by this transmitter segment.
* @param createIfNull - If true, the transmitter will try and connect to an
* adjacent network, merging several if necessary, or creating a new one
* if none is available
* @return network this transmitter is using
*/
public N getTransmitterNetwork(boolean createIfNull);
/**
* Sets this transmitter segment's network to a new value.
* @param network - network to set to
*/
public void setTransmitterNetwork(N network);
/**
* Refreshes the transmitter's network.
*/
public void refreshTransmitterNetwork();
/**
* Called when the chunk this transmitter is in is loaded.
*/
public void chunkLoad();
/**
* Remove this transmitter from its network.
*/
public void removeFromTransmitterNetwork();
public boolean canConnectToAcceptor(ForgeDirection side);
/**
* Call this if you're worried a transmitter's network is messed up and you want
* it to try and fix itself.
*/
public void fixTransmitterNetwork();
public boolean areTransmitterNetworksEqual(TileEntity tileEntity);
public int getTransmitterNetworkSize();
public int getTransmitterNetworkAcceptorSize();
public String getTransmitterNetworkNeeded();
public String getTransmitterNetworkFlow();
public int getCapacity();
}

View file

@ -1,9 +1,6 @@
package mekanism.api.transmitters;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public interface ITransmitter<N extends DynamicNetwork<?, N>>
public interface ITransmitter
{
/**
* Get the transmitter's transmission type
@ -11,60 +8,4 @@ public interface ITransmitter<N extends DynamicNetwork<?, N>>
* @return TransmissionType this transmitter uses
*/
public TransmissionType getTransmissionType();
/**
* Gets the network currently in use by this transmitter segment.
* @return network this transmitter is using
*/
public N getTransmitterNetwork();
/**
* Gets the network currently in use by this transmitter segment.
* @param createIfNull - If true, the transmitter will try and connect to an
* adjacent network, merging several if necessary, or creating a new one
* if none is available
* @return network this transmitter is using
*/
public N getTransmitterNetwork(boolean createIfNull);
/**
* Sets this transmitter segment's network to a new value.
* @param network - network to set to
*/
public void setTransmitterNetwork(N network);
/**
* Refreshes the transmitter's network.
*/
public void refreshTransmitterNetwork();
/**
* Called when the chunk this transmitter is in is loaded.
*/
public void chunkLoad();
/**
* Remove this transmitter from its network.
*/
public void removeFromTransmitterNetwork();
public boolean canConnectToAcceptor(ForgeDirection side);
/**
* Call this if you're worried a transmitter's network is messed up and you want
* it to try and fix itself.
*/
public void fixTransmitterNetwork();
public boolean areTransmitterNetworksEqual(TileEntity tileEntity);
public int getTransmitterNetworkSize();
public int getTransmitterNetworkAcceptorSize();
public String getTransmitterNetworkNeeded();
public String getTransmitterNetworkFlow();
public int getCapacity();
}

View file

@ -17,15 +17,15 @@ public interface ITransmitterNetwork<A, N extends DynamicNetwork<A, N>>
public Set<A> getAcceptors(Object... data);
public void removeTransmitter(ITransmitter<N> transmitter);
public void removeTransmitter(IGridTransmitter<N> transmitter);
public void refresh();
public void split(ITransmitter<N> splitPoint);
public void split(IGridTransmitter<N> splitPoint);
public void merge(N network);
public void fixMessedUpNetwork(ITransmitter<N> transmitter);
public void fixMessedUpNetwork(IGridTransmitter<N> transmitter);
public void register();

View file

@ -24,7 +24,7 @@ public enum TransmissionType
{
if(sideTile instanceof ITransmitter)
{
if(((ITransmitter<?>)sideTile).getTransmissionType() == this)
if(((ITransmitter)sideTile).getTransmissionType() == this)
{
return true;
}

View file

@ -159,10 +159,10 @@ public class TransmitterNetworkRegistry implements ITickHandler
{
Object obj = iter.next();
if(obj instanceof ITransmitter)
if(obj instanceof IGridTransmitter)
{
((ITransmitter)obj).refreshTransmitterNetwork();
((ITransmitter)obj).chunkLoad();
((IGridTransmitter)obj).refreshTransmitterNetwork();
((IGridTransmitter)obj).chunkLoad();
}
}
}

View file

@ -13,7 +13,7 @@ import java.util.Set;
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.util.CableUtils;
import mekanism.common.util.ListUtils;
@ -42,13 +42,13 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
public double electricityStored;
public EnergyNetwork(ITransmitter<EnergyNetwork>... varCables)
public EnergyNetwork(IGridTransmitter<EnergyNetwork>... varCables)
{
transmitters.addAll(Arrays.asList(varCables));
register();
}
public EnergyNetwork(Collection<ITransmitter<EnergyNetwork>> collection)
public EnergyNetwork(Collection<IGridTransmitter<EnergyNetwork>> collection)
{
transmitters.addAll(collection);
register();
@ -91,7 +91,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
int numCables = transmitters.size();
double reciprocalSum = 0;
for(ITransmitter<EnergyNetwork> cable : transmitters)
for(IGridTransmitter<EnergyNetwork> cable : transmitters)
{
reciprocalSum += 1.0/(double)cable.getCapacity();
}
@ -339,15 +339,15 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
@Override
public synchronized void refresh()
{
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>)transmitters.clone();
Iterator<ITransmitter<EnergyNetwork>> it = iterCables.iterator();
Set<IGridTransmitter<EnergyNetwork>> iterCables = (Set<IGridTransmitter<EnergyNetwork>>)transmitters.clone();
Iterator<IGridTransmitter<EnergyNetwork>> it = iterCables.iterator();
possibleAcceptors.clear();
acceptorDirections.clear();
while(it.hasNext())
{
ITransmitter<EnergyNetwork> conductor = (ITransmitter<EnergyNetwork>)it.next();
IGridTransmitter<EnergyNetwork> conductor = (IGridTransmitter<EnergyNetwork>)it.next();
if(conductor == null || ((TileEntity)conductor).isInvalid())
{
@ -359,7 +359,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
}
for(ITransmitter<EnergyNetwork> transmitter : iterCables)
for(IGridTransmitter<EnergyNetwork> transmitter : iterCables)
{
TileEntity[] acceptors = CableUtils.getConnectedEnergyAcceptors((TileEntity)transmitter);
@ -367,7 +367,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
{
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnectToAcceptor(side))
if(side != null && acceptor != null && !(acceptor instanceof IGridTransmitter) && transmitter.canConnectToAcceptor(side))
{
possibleAcceptors.add(acceptor);
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
@ -458,7 +458,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
@Override
protected EnergyNetwork create(ITransmitter<EnergyNetwork>... varTransmitters)
protected EnergyNetwork create(IGridTransmitter<EnergyNetwork>... varTransmitters)
{
EnergyNetwork network = new EnergyNetwork(varTransmitters);
network.clientEnergyScale = clientEnergyScale;
@ -470,7 +470,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
@Override
protected EnergyNetwork create(Collection<ITransmitter<EnergyNetwork>> collection)
protected EnergyNetwork create(Collection<IGridTransmitter<EnergyNetwork>> collection)
{
EnergyNetwork network = new EnergyNetwork(collection);
network.clientEnergyScale = clientEnergyScale;

View file

@ -9,7 +9,7 @@ import java.util.List;
import java.util.Set;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.ITransmitterNetwork;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.tileentity.TileEntityMechanicalPipe;
@ -38,13 +38,13 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
public FluidStack fluidStored;
public int prevStored;
public FluidNetwork(ITransmitter<FluidNetwork>... varPipes)
public FluidNetwork(IGridTransmitter<FluidNetwork>... varPipes)
{
transmitters.addAll(Arrays.asList(varPipes));
register();
}
public FluidNetwork(Collection<ITransmitter<FluidNetwork>> collection)
public FluidNetwork(Collection<IGridTransmitter<FluidNetwork>> collection)
{
transmitters.addAll(collection);
register();
@ -292,7 +292,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
@Override
public synchronized void refresh()
{
Set<ITransmitter<FluidNetwork>> iterPipes = (Set<ITransmitter<FluidNetwork>>)transmitters.clone();
Set<IGridTransmitter<FluidNetwork>> iterPipes = (Set<IGridTransmitter<FluidNetwork>>)transmitters.clone();
Iterator it = iterPipes.iterator();
possibleAcceptors.clear();
@ -300,7 +300,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
while(it.hasNext())
{
ITransmitter<FluidNetwork> conductor = (ITransmitter<FluidNetwork>)it.next();
IGridTransmitter<FluidNetwork> conductor = (IGridTransmitter<FluidNetwork>)it.next();
if(conductor == null || ((TileEntity)conductor).isInvalid())
{
@ -312,7 +312,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
}
for(ITransmitter<FluidNetwork> transmitter : iterPipes)
for(IGridTransmitter<FluidNetwork> transmitter : iterPipes)
{
IFluidHandler[] acceptors = PipeUtils.getConnectedAcceptors((TileEntity)transmitter);
@ -320,7 +320,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
{
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnectToAcceptor(side))
if(side != null && acceptor != null && !(acceptor instanceof IGridTransmitter) && transmitter.canConnectToAcceptor(side))
{
possibleAcceptors.add(acceptor);
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
@ -369,7 +369,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
@Override
protected FluidNetwork create(ITransmitter<FluidNetwork>... varTransmitters)
protected FluidNetwork create(IGridTransmitter<FluidNetwork>... varTransmitters)
{
FluidNetwork network = new FluidNetwork(varTransmitters);
network.refFluid = refFluid;
@ -395,7 +395,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
@Override
protected FluidNetwork create(Collection<ITransmitter<FluidNetwork>> collection)
protected FluidNetwork create(Collection<IGridTransmitter<FluidNetwork>> collection)
{
FluidNetwork network = new FluidNetwork(collection);
network.refFluid = refFluid;

View file

@ -7,7 +7,7 @@ import java.util.List;
import java.util.Random;
import mekanism.api.energy.IEnergizedItem;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.client.ClientProxy;
import mekanism.common.IEnergyCube;
import mekanism.common.ISustainedInventory;

View file

@ -5,7 +5,7 @@ import java.util.List;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.ITubeConnection;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.client.ClientProxy;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
@ -312,9 +312,9 @@ public class BlockTransmitter extends Block
if(!world.isRemote)
{
if(tileEntity instanceof ITransmitter)
if(tileEntity instanceof IGridTransmitter)
{
((ITransmitter)tileEntity).refreshTransmitterNetwork();
((IGridTransmitter)tileEntity).refreshTransmitterNetwork();
PacketHandler.sendPacket(Transmission.CLIENTS_DIM, new PacketTransmitterUpdate().setParams(PacketType.UPDATE, tileEntity), world.provider.dimensionId);
}
}
@ -327,9 +327,9 @@ public class BlockTransmitter extends Block
if(!world.isRemote)
{
if(tileEntity instanceof ITransmitter)
if(tileEntity instanceof IGridTransmitter)
{
((ITransmitter)tileEntity).refreshTransmitterNetwork();
((IGridTransmitter)tileEntity).refreshTransmitterNetwork();
PacketHandler.sendPacket(Transmission.CLIENTS_DIM, new PacketTransmitterUpdate().setParams(PacketType.UPDATE, tileEntity), world.provider.dimensionId);
if(tileEntity instanceof TileEntityUniversalCable)

View file

@ -1,7 +1,7 @@
package mekanism.common.item;
import mekanism.api.EnumColor;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.common.Mekanism;
import mekanism.common.util.MekanismUtils;

View file

@ -1,7 +1,7 @@
package mekanism.common.item;
import mekanism.api.EnumColor;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.common.Mekanism;
import net.minecraft.entity.player.EntityPlayer;
@ -26,13 +26,13 @@ public class ItemNetworkReader extends ItemEnergized
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if(tileEntity instanceof ITransmitter)
if(tileEntity instanceof IGridTransmitter)
{
if(getEnergy(stack) >= ENERGY_PER_USE)
{
setEnergy(stack, getEnergy(stack)-ENERGY_PER_USE);
ITransmitter<?> transmitter = (ITransmitter<?>)tileEntity;
IGridTransmitter<?> transmitter = (IGridTransmitter<?>)tileEntity;
player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + "------------- " + EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " -------------"));
player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.GREY + " *Transmitters: " + EnumColor.DARK_GREY + transmitter.getTransmitterNetwork().getSize()));

View file

@ -5,7 +5,7 @@ import java.util.List;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.ITransmitterNetwork;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.Mekanism;
@ -54,9 +54,9 @@ public class ItemPartTransmitter extends JItemMultiPart
{
TileEntity tile = obj.getFromSide(side).getTileEntity(world);
if(tile instanceof ITransmitter && TransmissionType.checkTransmissionType(tile, type))
if(tile instanceof IGridTransmitter && TransmissionType.checkTransmissionType(tile, type))
{
networks.add(((ITransmitter)tile).getTransmitterNetwork());
networks.add(((IGridTransmitter)tile).getTransmitterNetwork());
}
}

View file

@ -24,6 +24,7 @@ public class MultipartMekanism implements IPartFactory, IPartConverter
"mekanism:restrictive_transporter", "mekanism:diversion_transporter"});
MultipartGenerator.registerPassThroughInterface("mekanism.api.transmitters.ITransmitter");
MultipartGenerator.registerPassThroughInterface("mekanism.api.transmitters.IGridTransmitter");
MultipartGenerator.registerPassThroughInterface("mekanism.common.ILogisticalTransporter");
MultipartGenerator.registerPassThroughInterface("ic2.api.energy.tile.IEnergySink");
MultipartGenerator.registerPassThroughInterface("cofh.api.energy.IEnergyHandler");

View file

@ -39,15 +39,6 @@ public class PartDiversionTransporter extends PartLogisticalTransporter
return transporterIcons.getCenterIcon(2);
}
@Override
public boolean canConnect(ForgeDirection side)
{
testingSide = side;
boolean unblocked = tile().canReplacePart(this, this);
testingSide = null;
return unblocked;
}
@Override
public void load(NBTTagCompound nbtTags)
{

View file

@ -6,6 +6,7 @@ import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.PartTransmitterIcons;
import mekanism.client.render.RenderPartTransmitter;
import mekanism.common.HashList;
@ -20,6 +21,7 @@ import mekanism.common.transporter.TransporterStack;
import mekanism.common.transporter.TransporterStack.Path;
import mekanism.common.util.InventoryUtils;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.PipeUtils;
import mekanism.common.util.TransporterUtils;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
@ -66,6 +68,12 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
{
return TransmitterType.LOGISTICAL_TRANSPORTER;
}
@Override
public TransmissionType getTransmissionType()
{
return TransmissionType.ITEM;
}
public static void registerIcons(IconRegister register)
{
@ -80,6 +88,63 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
{
RenderPartTransmitter.getInstance().renderContents(this, f, pos);
}
@Override
public boolean canConnect(ForgeDirection side)
{
testingSide = side;
boolean unblocked = tile().canReplacePart(this, this);
testingSide = null;
return unblocked;
}
@Override
public byte getPossibleTransmitterConnections()
{
byte connections = 0x00;
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(canConnectMutual(side))
{
TileEntity tileEntity = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
if(TransmissionType.checkTransmissionType(tileEntity, getTransmitter().getType()) && isConnectable(tileEntity))
{
connections |= 1 << side.ordinal();
}
else {
System.out.println("Invalid type " + getTransmitter().getType());
}
}
else {
System.out.println("can't connect");
}
}
return connections;
}
@Override
public byte getPossibleAcceptorConnections()
{
byte connections = 0x00;
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(canConnectMutual(side))
{
TileEntity tileEntity = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
if(isValidAcceptor(tileEntity, side))
{
connections |= 1 << side.ordinal();
}
}
}
return connections;
}
@Override
public Icon getCenterIcon()
@ -550,7 +615,7 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from)
{
return null;
return PipeUtils.EMPTY;
}
@Override
@ -594,12 +659,6 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
return true;
}
@Override
public boolean onRightClick(EntityPlayer player, int side)
{
return false;
}
@Override
public EnumColor getColor()
@ -618,4 +677,10 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
{
return tile();
}
@Override
public EnumColor getRenderColor()
{
return color;
}
}

View file

@ -2,7 +2,7 @@ package mekanism.common.multipart;
import java.util.Set;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.PartTransmitterIcons;
import mekanism.client.render.RenderPartTransmitter;
@ -186,7 +186,7 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
}
@Override
public FluidNetwork createNetworkFromSingleTransmitter(ITransmitter<FluidNetwork> transmitter)
public FluidNetwork createNetworkFromSingleTransmitter(IGridTransmitter<FluidNetwork> transmitter)
{
return new FluidNetwork(transmitter);
}

View file

@ -6,7 +6,7 @@ import mekanism.api.gas.GasNetwork;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.PartTransmitterIcons;
import mekanism.client.render.RenderPartTransmitter;
@ -168,7 +168,7 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
}
@Override
public GasNetwork createNetworkFromSingleTransmitter(ITransmitter<GasNetwork> transmitter)
public GasNetwork createNetworkFromSingleTransmitter(IGridTransmitter<GasNetwork> transmitter)
{
return new GasNetwork(transmitter);
}

View file

@ -10,13 +10,19 @@ import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.transmitters.IBlockableConnection;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.RenderPartTransmitter;
import mekanism.common.IConfigurable;
import mekanism.common.ITileNetwork;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.item.ItemConfigurator;
import mekanism.common.multipart.TransmitterType.Size;
import mekanism.common.network.PacketTransmitterUpdate;
import mekanism.common.network.PacketTransmitterUpdate.PacketType;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@ -49,7 +55,7 @@ import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, JNormalOcclusion, IHollowConnect, JIconHitEffects, ITileNetwork, IBlockableConnection, IConfigurable
public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, JNormalOcclusion, IHollowConnect, JIconHitEffects, ITileNetwork, IBlockableConnection, IConfigurable, ITransmitter
{
public static IndexedCuboid6[] smallSides = new IndexedCuboid6[7];
public static IndexedCuboid6[] largeSides = new IndexedCuboid6[7];
@ -118,6 +124,29 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
public abstract Icon getCenterIcon();
public abstract Icon getSideIcon();
@Override
public void update()
{
if(world().isRemote)
{
if(delayTicks == 5)
{
delayTicks = 6; /* don't refresh again */
refreshConnections();
}
else if(delayTicks < 5)
{
delayTicks++;
}
}
if(sendDesc)
{
sendDescUpdate();
sendDesc = false;
}
}
public Icon getIconForSide(ForgeDirection side)
{
@ -398,6 +427,74 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
{
return true;
}
protected void onRedstoneSplit() {}
protected void onRefresh() {}
public void refreshConnections()
{
byte possibleTransmitters = getPossibleTransmitterConnections();
byte possibleAcceptors = getPossibleAcceptorConnections();
if(possibleTransmitters != currentTransmitterConnections)
{
boolean nowPowered = world().isBlockIndirectlyGettingPowered(x(), y(), z());
if(nowPowered != redstonePowered)
{
if(nowPowered)
{
onRedstoneSplit();
}
tile().notifyPartChange(this);
redstonePowered = nowPowered;
}
}
if(!world().isRemote)
{
currentTransmitterConnections = possibleTransmitters;
currentAcceptorConnections = possibleAcceptors;
sendDesc = true;
}
}
protected void onModeChange(ForgeDirection side)
{
refreshConnections();
}
@Override
public void onAdded()
{
super.onAdded();
refreshConnections();
}
@Override
public void onChunkLoad()
{
super.onChunkLoad();
refreshConnections();
}
@Override
public void onNeighborChanged()
{
super.onNeighborChanged();
refreshConnections();
}
@Override
public void onPartChanged(TMultiPart part)
{
super.onPartChanged(part);
refreshConnections();
}
@Override
public void handlePacketData(ByteArrayDataInput dataStream) throws Exception {}
@ -457,8 +554,6 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
}
}
}
public abstract void onModeChange(ForgeDirection side);
@Override
public boolean onSneakRightClick(EntityPlayer player, int side)

View file

@ -6,7 +6,7 @@ import java.util.Set;
import codechicken.multipart.*;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.client.ClientTickHandler;
@ -19,7 +19,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends PartSidedPipe implements ITransmitter<N>, IConfigurable
public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends PartSidedPipe implements IGridTransmitter<N>, IConfigurable
{
public N theNetwork;
@ -30,35 +30,12 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
{
getTransmitterNetwork().transmitters.remove(tile());
super.bind(t);
getTransmitterNetwork().transmitters.add((ITransmitter<N>)tile());
getTransmitterNetwork().transmitters.add((IGridTransmitter<N>)tile());
}
else {
super.bind(t);
}
}
@Override
public void update()
{
if(world().isRemote)
{
if(delayTicks == 5)
{
delayTicks = 6; /* don't refresh again */
refreshTransmitterNetwork();
}
else if(delayTicks < 5)
{
delayTicks++;
}
}
if(sendDesc)
{
sendDescUpdate();
sendDesc = false;
}
}
public static boolean connectionMapContainsSide(byte connections, ForgeDirection side)
{
@ -72,46 +49,33 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
byte possibleTransmitters = getPossibleTransmitterConnections();
byte possibleAcceptors = getPossibleAcceptorConnections();
if(possibleTransmitters != currentTransmitterConnections)
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
boolean nowPowered = world().isBlockIndirectlyGettingPowered(x(), y(), z());
if(nowPowered != redstonePowered)
if(connectionMapContainsSide(possibleTransmitters, side))
{
if(nowPowered)
{
getTransmitterNetwork().split((ITransmitter<N>)tile());
setTransmitterNetwork(null);
}
TileEntity tileEntity = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
tile().notifyPartChange(this);
redstonePowered = nowPowered;
}
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(connectionMapContainsSide(possibleTransmitters, side))
if(TransmissionType.checkTransmissionType(tileEntity, getTransmissionType()) && isConnectable(tileEntity))
{
TileEntity tileEntity = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
if(TransmissionType.checkTransmissionType(tileEntity, getTransmissionType()) && isConnectable(tileEntity))
{
((DynamicNetwork<?,N>)getTransmitterNetwork()).merge(((ITransmitter<N>)tileEntity).getTransmitterNetwork());
}
((DynamicNetwork<?,N>)getTransmitterNetwork()).merge(((IGridTransmitter<N>)tileEntity).getTransmitterNetwork());
}
}
}
((DynamicNetwork<?,N>)getTransmitterNetwork()).refresh();
if(!world().isRemote)
{
currentTransmitterConnections = possibleTransmitters;
currentAcceptorConnections = possibleAcceptors;
sendDesc = true;
}
}
@Override
public void onRefresh()
{
refreshTransmitterNetwork();
}
@Override
public void onRedstoneSplit()
{
getTransmitterNetwork().split((IGridTransmitter<N>)tile());
setTransmitterNetwork(null);
}
@Override
@ -127,7 +91,7 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
@Override
public boolean areTransmitterNetworksEqual(TileEntity tileEntity)
{
return tileEntity instanceof ITransmitter && getTransmissionType() == ((ITransmitter)tileEntity).getTransmissionType();
return tileEntity instanceof IGridTransmitter && getTransmissionType() == ((IGridTransmitter)tileEntity).getTransmissionType();
}
@Override
@ -150,28 +114,28 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
{
TileEntity cable = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
if(TransmissionType.checkTransmissionType(cable, getTransmissionType()) && ((ITransmitter<N>)cable).getTransmitterNetwork(false) != null)
if(TransmissionType.checkTransmissionType(cable, getTransmissionType()) && ((IGridTransmitter<N>)cable).getTransmitterNetwork(false) != null)
{
connectedNets.add(((ITransmitter<N>)cable).getTransmitterNetwork());
connectedNets.add(((IGridTransmitter<N>)cable).getTransmitterNetwork());
}
}
}
if(connectedNets.size() == 0)
{
theNetwork = createNetworkFromSingleTransmitter((ITransmitter<N>)tile());
theNetwork = createNetworkFromSingleTransmitter((IGridTransmitter<N>)tile());
}
else if(connectedNets.size() == 1)
{
N network = connectedNets.iterator().next();
preSingleMerge(network);
theNetwork = network;
theNetwork.transmitters.add((ITransmitter<N>)tile());
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
theNetwork.refresh();
}
else {
theNetwork = createNetworkByMergingSet(connectedNets);
theNetwork.transmitters.add((ITransmitter<N>)tile());
theNetwork.transmitters.add((IGridTransmitter<N>)tile());
}
}
@ -185,17 +149,17 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
{
if(theNetwork != null)
{
theNetwork.removeTransmitter((ITransmitter<N>)tile());
theNetwork.removeTransmitter((IGridTransmitter<N>)tile());
}
}
@Override
public void fixTransmitterNetwork()
{
getTransmitterNetwork().fixMessedUpNetwork((ITransmitter<N>) tile());
getTransmitterNetwork().fixMessedUpNetwork((IGridTransmitter<N>) tile());
}
public abstract N createNetworkFromSingleTransmitter(ITransmitter<N> transmitter);
public abstract N createNetworkFromSingleTransmitter(IGridTransmitter<N> transmitter);
public abstract N createNetworkByMergingSet(Set<N> networks);
@ -220,9 +184,9 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
@Override
public void preRemove()
{
if(tile() instanceof ITransmitter)
if(tile() instanceof IGridTransmitter)
{
getTransmitterNetwork().split((ITransmitter<N>)tile());
getTransmitterNetwork().split((IGridTransmitter<N>)tile());
if(!world().isRemote)
{
@ -239,9 +203,9 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
}
@Override
public void onModeChange(ForgeDirection side)
protected void onModeChange(ForgeDirection side)
{
refreshTransmitterNetwork();
super.onModeChange(side);
if(!world().isRemote)
{
@ -249,20 +213,6 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
}
}
@Override
public void onAdded()
{
super.onAdded();
refreshTransmitterNetwork();
}
@Override
public void onChunkLoad()
{
super.onChunkLoad();
refreshTransmitterNetwork();
}
@Override
public void onNeighborChanged()
{
@ -272,15 +222,6 @@ public abstract class PartTransmitter<N extends DynamicNetwork<?, N>> extends Pa
{
PacketHandler.sendPacket(Transmission.CLIENTS_DIM, new PacketTransmitterUpdate().setParams(PacketType.UPDATE, tile()), world().provider.dimensionId);
}
refreshTransmitterNetwork();
}
@Override
public void onPartChanged(TMultiPart part)
{
super.onPartChanged(part);
refreshTransmitterNetwork();
}
@Override

View file

@ -9,7 +9,7 @@ import java.util.Arrays;
import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.client.render.PartTransmitterIcons;
import mekanism.client.render.RenderPartTransmitter;
@ -125,7 +125,7 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork> implement
}
@Override
public EnergyNetwork createNetworkFromSingleTransmitter(ITransmitter<EnergyNetwork> transmitter)
public EnergyNetwork createNetworkFromSingleTransmitter(IGridTransmitter<EnergyNetwork> transmitter)
{
return new EnergyNetwork(transmitter);
}

View file

@ -5,7 +5,7 @@ import java.util.ArrayList;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.common.ITileNetwork;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
@ -57,9 +57,9 @@ public class PacketDataRequest implements IMekanismPacket
((TileEntityDynamicTank)tileEntity).sendStructure = true;
}
if(tileEntity instanceof ITransmitter)
if(tileEntity instanceof IGridTransmitter)
{
ITransmitter transmitter = (ITransmitter)tileEntity;
IGridTransmitter transmitter = (IGridTransmitter)tileEntity;
if(transmitter.getTransmitterNetwork() instanceof DynamicNetwork)
{

View file

@ -6,7 +6,7 @@ import mekanism.api.gas.Gas;
import mekanism.api.gas.GasNetwork;
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.common.EnergyNetwork;
import mekanism.common.FluidNetwork;
import net.minecraft.entity.player.EntityPlayer;
@ -73,7 +73,7 @@ public class PacketTransmitterUpdate implements IMekanismPacket
if(transmitterType == 0)
{
ITransmitter transmitter = (ITransmitter)world.getBlockTileEntity(x, y, z);
IGridTransmitter transmitter = (IGridTransmitter)world.getBlockTileEntity(x, y, z);
if(transmitter != null)
{
@ -88,7 +88,7 @@ public class PacketTransmitterUpdate implements IMekanismPacket
if(tileEntity != null)
{
((ITransmitter<EnergyNetwork>)tileEntity).getTransmitterNetwork().clientEnergyScale = powerLevel;
((IGridTransmitter<EnergyNetwork>)tileEntity).getTransmitterNetwork().clientEnergyScale = powerLevel;
}
}
else if(transmitterType == 2)
@ -107,7 +107,7 @@ public class PacketTransmitterUpdate implements IMekanismPacket
if(tileEntity != null)
{
GasNetwork net = ((ITransmitter<GasNetwork>)tileEntity).getTransmitterNetwork();
GasNetwork net = ((IGridTransmitter<GasNetwork>)tileEntity).getTransmitterNetwork();
if(gasType != null)
{
@ -135,7 +135,7 @@ public class PacketTransmitterUpdate implements IMekanismPacket
if(tileEntity != null)
{
FluidNetwork net = ((ITransmitter<FluidNetwork>)tileEntity).getTransmitterNetwork();
FluidNetwork net = ((IGridTransmitter<FluidNetwork>)tileEntity).getTransmitterNetwork();
if(fluidType != null)
{

View file

@ -1,6 +1,7 @@
package mekanism.common.tileentity;
import mekanism.common.DynamicFluidTank;
import mekanism.common.util.PipeUtils;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
@ -20,7 +21,7 @@ public class TileEntityDynamicValve extends TileEntityDynamicTank implements IFl
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from)
{
return ((!worldObj.isRemote && structure != null) || (worldObj.isRemote && clientHasStructure)) ? new FluidTankInfo[] {fluidTank.getInfo()} : new FluidTankInfo[0];
return ((!worldObj.isRemote && structure != null) || (worldObj.isRemote && clientHasStructure)) ? new FluidTankInfo[] {fluidTank.getInfo()} : PipeUtils.EMPTY;
}
@Override

View file

@ -8,8 +8,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import mekanism.api.EnumColor;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.common.IConfigurable;
import mekanism.common.ISustainedTank;
import mekanism.common.PacketHandler;
@ -17,6 +17,7 @@ import mekanism.common.PacketHandler.Transmission;
import mekanism.common.network.PacketTileEntity;
import mekanism.common.util.ChargeUtils;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.PipeUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -459,7 +460,7 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
return new FluidTankInfo[] {fluidTank.getInfo()};
}
return new FluidTankInfo[0];
return PipeUtils.EMPTY;
}
@Override

View file

@ -5,7 +5,7 @@ import java.util.Arrays;
import java.util.HashSet;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.common.FluidNetwork;
@ -55,9 +55,9 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork
for(TileEntity pipe : adjacentPipes)
{
if(TransmissionType.checkTransmissionType(pipe, getTransmissionType()) && ((ITransmitter<FluidNetwork>)pipe).getTransmitterNetwork(false) != null)
if(TransmissionType.checkTransmissionType(pipe, getTransmissionType()) && ((IGridTransmitter<FluidNetwork>)pipe).getTransmitterNetwork(false) != null)
{
connectedNets.add(((ITransmitter<FluidNetwork>)pipe).getTransmitterNetwork());
connectedNets.add(((IGridTransmitter<FluidNetwork>)pipe).getTransmitterNetwork());
}
}
@ -124,7 +124,7 @@ public class TileEntityMechanicalPipe extends TileEntityTransmitter<FluidNetwork
if(TransmissionType.checkTransmissionType(tileEntity, getTransmissionType()))
{
getTransmitterNetwork().merge(((ITransmitter<FluidNetwork>)tileEntity).getTransmitterNetwork());
getTransmitterNetwork().merge(((IGridTransmitter<FluidNetwork>)tileEntity).getTransmitterNetwork());
}
}

View file

@ -7,7 +7,7 @@ import mekanism.api.gas.GasNetwork;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasTransmitter;
import mekanism.api.gas.ITubeConnection;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import net.minecraft.tileentity.TileEntity;
@ -31,9 +31,9 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork>
for(TileEntity tube : adjacentTubes)
{
if(TransmissionType.checkTransmissionType(tube, TransmissionType.GAS, this) && ((ITransmitter<GasNetwork>)tube).getTransmitterNetwork(false) != null)
if(TransmissionType.checkTransmissionType(tube, TransmissionType.GAS, this) && ((IGridTransmitter<GasNetwork>)tube).getTransmitterNetwork(false) != null)
{
connectedNets.add(((ITransmitter<GasNetwork>)tube).getTransmitterNetwork());
connectedNets.add(((IGridTransmitter<GasNetwork>)tube).getTransmitterNetwork());
}
}
@ -100,7 +100,7 @@ public class TileEntityPressurizedTube extends TileEntityTransmitter<GasNetwork>
if(TransmissionType.checkTransmissionType(tileEntity, TransmissionType.GAS, this))
{
getTransmitterNetwork().merge(((ITransmitter<GasNetwork>)tileEntity).getTransmitterNetwork());
getTransmitterNetwork().merge(((IGridTransmitter<GasNetwork>)tileEntity).getTransmitterNetwork());
}
}

View file

@ -20,6 +20,7 @@ import mekanism.common.block.BlockMachine.MachineType;
import mekanism.common.network.PacketTileEntity;
import mekanism.common.util.ChargeUtils;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.PipeUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -524,7 +525,7 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp
return new FluidTankInfo[] {fluidTank.getInfo()};
}
return null;
return PipeUtils.EMPTY;
}
@Override

View file

@ -4,7 +4,7 @@ import java.util.ArrayList;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.common.IConfigurable;
import mekanism.common.ITileNetwork;
@ -19,7 +19,7 @@ import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public abstract class TileEntityTransmitter<N extends DynamicNetwork<?, N>> extends TileEntity implements ITransmitter<N>, ITileNetwork, IConfigurable
public abstract class TileEntityTransmitter<N extends DynamicNetwork<?, N>> extends TileEntity implements IGridTransmitter<N>, ITileNetwork, IConfigurable
{
public N theNetwork;
@ -81,7 +81,7 @@ public abstract class TileEntityTransmitter<N extends DynamicNetwork<?, N>> exte
@Override
public boolean areTransmitterNetworksEqual(TileEntity tileEntity)
{
return tileEntity instanceof ITransmitter && getTransmissionType() == ((ITransmitter)tileEntity).getTransmissionType();
return tileEntity instanceof IGridTransmitter && getTransmissionType() == ((IGridTransmitter)tileEntity).getTransmissionType();
}
@Override

View file

@ -7,7 +7,7 @@ import ic2.api.energy.tile.IEnergySink;
import java.util.HashSet;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.api.transmitters.TransmitterNetworkRegistry;
import mekanism.common.EnergyNetwork;
@ -59,9 +59,9 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
for(TileEntity cable : adjacentCables)
{
if(TransmissionType.checkTransmissionType(cable, TransmissionType.ENERGY) && ((ITransmitter<EnergyNetwork>)cable).getTransmitterNetwork(false) != null)
if(TransmissionType.checkTransmissionType(cable, TransmissionType.ENERGY) && ((IGridTransmitter<EnergyNetwork>)cable).getTransmitterNetwork(false) != null)
{
connectedNets.add(((ITransmitter<EnergyNetwork>)cable).getTransmitterNetwork());
connectedNets.add(((IGridTransmitter<EnergyNetwork>)cable).getTransmitterNetwork());
}
}
@ -137,7 +137,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
if(TransmissionType.checkTransmissionType(tileEntity, TransmissionType.ENERGY))
{
getTransmitterNetwork().merge(((ITransmitter<EnergyNetwork>)tileEntity).getTransmitterNetwork());
getTransmitterNetwork().merge(((IGridTransmitter<EnergyNetwork>)tileEntity).getTransmitterNetwork());
}
}

View file

@ -11,7 +11,7 @@ import java.util.List;
import mekanism.api.Coord4D;
import mekanism.api.energy.ICableOutputter;
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.EnergyNetwork;
import mekanism.common.Mekanism;
@ -45,7 +45,7 @@ public final class CableUtils
if(acceptor instanceof IStrictEnergyAcceptor ||
acceptor instanceof IEnergySink ||
(acceptor instanceof IPowerReceptor && !(acceptor instanceof ITransmitter) && MekanismUtils.useBuildcraft()) ||
(acceptor instanceof IPowerReceptor && !(acceptor instanceof IGridTransmitter) && MekanismUtils.useBuildcraft()) ||
acceptor instanceof IElectrical || acceptor instanceof IEnergyHandler)
{
if(!(acceptor instanceof IConductor))
@ -171,7 +171,7 @@ public final class CableUtils
public static boolean isConnectable(TileEntity orig, TileEntity tileEntity, ForgeDirection side)
{
if(tileEntity instanceof ITransmitter)
if(tileEntity instanceof IGridTransmitter)
{
return false;
}
@ -201,7 +201,7 @@ public final class CableUtils
return true;
}
if(tileEntity instanceof IPowerReceptor && !(tileEntity instanceof ITransmitter) && MekanismUtils.useBuildcraft())
if(tileEntity instanceof IPowerReceptor && !(tileEntity instanceof IGridTransmitter) && MekanismUtils.useBuildcraft())
{
if(!(tileEntity instanceof IEnergyAcceptor) || ((IEnergyAcceptor)tileEntity).acceptsEnergyFrom(null, side.getOpposite()))
{
@ -228,7 +228,7 @@ public final class CableUtils
if(TransmissionType.checkTransmissionType(pointer, TransmissionType.ENERGY))
{
ITransmitter<EnergyNetwork> cable = (ITransmitter<EnergyNetwork>)pointer;
IGridTransmitter<EnergyNetwork> cable = (IGridTransmitter<EnergyNetwork>)pointer;
return cable.getTransmitterNetwork().emit(amount);
}

View file

@ -3,7 +3,7 @@ package mekanism.common.util;
import java.util.Arrays;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
@ -12,6 +12,8 @@ import net.minecraftforge.fluids.IFluidHandler;
public final class PipeUtils
{
public static final FluidTankInfo[] EMPTY = new FluidTankInfo[] {};
/**
* Gets all the pipes around a tile entity.
* @param tileEntity - center tile entity
@ -52,7 +54,9 @@ public final class PipeUtils
{
int side = Arrays.asList(connectedAcceptors).indexOf(container);
if(container.getTankInfo(ForgeDirection.getOrientation(side).getOpposite()) != null && container.getTankInfo(ForgeDirection.getOrientation(side).getOpposite()).length > 0)
FluidTankInfo[] infoArray = container.getTankInfo(ForgeDirection.getOrientation(side).getOpposite());
if(infoArray != null && infoArray.length > 0)
{
boolean notNull = false;
@ -99,7 +103,7 @@ public final class PipeUtils
{
TileEntity acceptor = Coord4D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.worldObj);
if(acceptor instanceof IFluidHandler && !(acceptor instanceof ITransmitter))
if(acceptor instanceof IFluidHandler && !(acceptor instanceof IGridTransmitter))
{
acceptors[orientation.ordinal()] = (IFluidHandler)acceptor;
}

View file

@ -5,7 +5,7 @@ import java.util.List;
import mekanism.api.EnumColor;
import mekanism.api.Coord4D;
import mekanism.api.transmitters.ITransmitter;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.common.ILogisticalTransporter;
import mekanism.common.tileentity.TileEntityDiversionTransporter;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
@ -163,7 +163,7 @@ public final class TransporterUtils
{
TileEntity inventory = Coord4D.get(tileEntity.getTile()).getFromSide(orientation).getTileEntity(tileEntity.getTile().worldObj);
if(inventory instanceof IInventory && !(inventory instanceof ITransmitter))
if(inventory instanceof IInventory && !(inventory instanceof IGridTransmitter))
{
inventories[orientation.ordinal()] = (IInventory)inventory;
}