Got connection types to save/load, NONE sides will now not connect or emit to acceptors
This commit is contained in:
parent
c5269cc1ab
commit
8f24e5c18f
7 changed files with 43 additions and 49 deletions
|
@ -310,13 +310,15 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
for(ITransmitter<GasNetwork> pipe : transmitters)
|
||||
for(ITransmitter<GasNetwork> transmitter : transmitters)
|
||||
{
|
||||
IGasHandler[] acceptors = GasTransmission.getConnectedAcceptors((TileEntity)pipe);
|
||||
IGasHandler[] acceptors = GasTransmission.getConnectedAcceptors((TileEntity)transmitter);
|
||||
|
||||
for(IGasHandler acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
|
||||
|
||||
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnect(side))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
package mekanism.api.transmitters;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
public interface ITransmitter<N extends DynamicNetwork<?, N>>
|
||||
public interface ITransmitter<N extends DynamicNetwork<?, N>> extends IBlockableConnection
|
||||
{
|
||||
/**
|
||||
* Get the transmitter's transmission type
|
||||
|
@ -53,17 +52,6 @@ public interface ITransmitter<N extends DynamicNetwork<?, N>>
|
|||
* it to try and fix itself.
|
||||
*/
|
||||
public void fixTransmitterNetwork();
|
||||
|
||||
/**
|
||||
* Return whether the transmitter can connect in the given direction.
|
||||
*/
|
||||
public boolean canConnect(ForgeDirection side);
|
||||
|
||||
/**
|
||||
* Return whether the transmitter can connect in the given direction,
|
||||
* and the tile in the given direction isn't prevented from connecting.
|
||||
*/
|
||||
public boolean canConnectMutual(ForgeDirection side);
|
||||
|
||||
public boolean areTransmitterNetworksEqual(TileEntity tileEntity);
|
||||
|
||||
|
|
|
@ -359,13 +359,15 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
for(ITransmitter<EnergyNetwork> cable : iterCables)
|
||||
for(ITransmitter<EnergyNetwork> transmitter : iterCables)
|
||||
{
|
||||
TileEntity[] acceptors = CableUtils.getConnectedEnergyAcceptors((TileEntity)cable);
|
||||
TileEntity[] acceptors = CableUtils.getConnectedEnergyAcceptors((TileEntity)transmitter);
|
||||
|
||||
for(TileEntity acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
|
||||
|
||||
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnect(side))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
|
|
@ -312,15 +312,15 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
|
|||
}
|
||||
}
|
||||
|
||||
for(ITransmitter<FluidNetwork> pipe : iterPipes)
|
||||
for(ITransmitter<FluidNetwork> transmitter : iterPipes)
|
||||
{
|
||||
if(pipe instanceof TileEntityMechanicalPipe && ((TileEntityMechanicalPipe)pipe).isActive) continue;
|
||||
|
||||
IFluidHandler[] acceptors = PipeUtils.getConnectedAcceptors((TileEntity)pipe);
|
||||
IFluidHandler[] acceptors = PipeUtils.getConnectedAcceptors((TileEntity)transmitter);
|
||||
|
||||
for(IFluidHandler acceptor : acceptors)
|
||||
{
|
||||
if(acceptor != null && !(acceptor instanceof ITransmitter))
|
||||
ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor));
|
||||
|
||||
if(side != null && acceptor != null && !(acceptor instanceof ITransmitter) && transmitter.canConnect(side))
|
||||
{
|
||||
possibleAcceptors.add(acceptor);
|
||||
acceptorDirections.put(acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)));
|
||||
|
|
|
@ -43,4 +43,7 @@ public class PartLogisticalTransporter extends PartSidedPipe
|
|||
{
|
||||
return tile instanceof IInventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onModeChange(ForgeDirection side) {}
|
||||
}
|
||||
|
|
|
@ -122,30 +122,6 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
|
|||
nbtTags.setCompoundTag("cacheGas", stack.write(new NBTTagCompound()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConnectable(TileEntity tileEntity)
|
||||
{
|
||||
if(tileEntity instanceof ITransmitter && TransmissionType.checkTransmissionType(tileEntity, getTransmissionType()))
|
||||
{
|
||||
ITransmitter<GasNetwork> transmitter = (ITransmitter<GasNetwork>)tileEntity;
|
||||
|
||||
if(getTransmitterNetwork(false) == null || transmitter.getTransmitterNetwork(false) == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if(getTransmitterNetwork().gasStored == null || transmitter.getTransmitterNetwork().gasStored == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if(getTransmitterNetwork().gasStored.getGas() == transmitter.getTransmitterNetwork().gasStored.getGas())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType()
|
||||
|
|
|
@ -18,6 +18,7 @@ import mekanism.common.item.ItemConfigurator;
|
|||
import net.minecraft.client.particle.EffectRenderer;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
|
@ -300,7 +301,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
@Override
|
||||
public boolean canConnect(ForgeDirection side)
|
||||
{
|
||||
if(world().isBlockIndirectlyGettingPowered(x(), y(), z()))
|
||||
if(world().isBlockIndirectlyGettingPowered(x(), y(), z()) || connectionTypes[side.ordinal()] == ConnectionType.NONE)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -335,6 +336,28 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
|||
packet.writeInt(connectionTypes[i].ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(NBTTagCompound nbtTags)
|
||||
{
|
||||
super.load(nbtTags);
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
{
|
||||
connectionTypes[i] = ConnectionType.values()[nbtTags.getInteger("connection" + i)];
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(NBTTagCompound nbtTags)
|
||||
{
|
||||
super.save(nbtTags);
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
{
|
||||
nbtTags.setInteger("connection" + i, connectionTypes[i].ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item)
|
||||
|
|
Loading…
Reference in a new issue