Merge branch 'development' into v8
This commit is contained in:
commit
5dc0e5dca1
6 changed files with 64 additions and 6 deletions
src/main/java/mekanism/common
|
@ -142,7 +142,7 @@ public class PartLogisticalTransporter extends PartTransmitter<InventoryNetwork>
|
|||
@Override
|
||||
public boolean isValidAcceptor(TileEntity tile, ForgeDirection side)
|
||||
{
|
||||
return TransporterUtils.getConnections(this)[side.ordinal()];
|
||||
return TransporterUtils.isValidAcceptorOnSide(tile, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -236,9 +236,9 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidAcceptor(TileEntity tile, ForgeDirection side)
|
||||
public boolean isValidAcceptor(TileEntity acceptor, ForgeDirection side)
|
||||
{
|
||||
return PipeUtils.getConnections(tile())[side.ordinal()];
|
||||
return PipeUtils.isValidAcceptorOnSide(acceptor, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -230,7 +230,7 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork> implement
|
|||
@Override
|
||||
public boolean isValidAcceptor(TileEntity acceptor, ForgeDirection side)
|
||||
{
|
||||
return CableUtils.getConnections(tile())[side.ordinal()];
|
||||
return CableUtils.isValidAcceptorOnSide(tile(), acceptor, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -109,14 +109,26 @@ public final class CableUtils
|
|||
{
|
||||
TileEntity tile = coord.getFromSide(side).getTileEntity(tileEntity.getWorldObj());
|
||||
|
||||
connectable[side.ordinal()] |= isEnergyAcceptor(tile) && isConnectable(tileEntity, tile, side);
|
||||
connectable[side.ordinal()] = isValidAcceptorOnSide(tileEntity, tile, side);
|
||||
connectable[side.ordinal()] |= isCable(tile);
|
||||
connectable[side.ordinal()] |= isOutputter(tile, side);
|
||||
}
|
||||
|
||||
return connectable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the adjacent connections to a TileEntity, from a subset of its sides.
|
||||
* @param cableEntity - TileEntity that's trying to connect
|
||||
* @param side - side to check
|
||||
* @return boolean whether the acceptor is valid
|
||||
*/
|
||||
public static boolean isValidAcceptorOnSide(TileEntity cableEntity, TileEntity tile, ForgeDirection side)
|
||||
{
|
||||
if(isEnergyAcceptor(tile) && isConnectable(cableEntity, tile, side))
|
||||
return true;
|
||||
return isOutputter(tile, side);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the connected cables around a specific tile entity.
|
||||
* @param tileEntity - center tile entity
|
||||
|
|
|
@ -38,6 +38,32 @@ public final class PipeUtils
|
|||
return pipes;
|
||||
}
|
||||
|
||||
public static boolean isValidAcceptorOnSide(TileEntity tile, ForgeDirection side)
|
||||
{
|
||||
if(tile instanceof IGridTransmitter || !(tile instanceof IFluidHandler))
|
||||
return false;
|
||||
|
||||
IFluidHandler container = (IFluidHandler)tile;
|
||||
FluidTankInfo[] infoArray = container.getTankInfo(side.getOpposite());
|
||||
|
||||
if(container.canDrain(side.getOpposite(), FluidRegistry.WATER)
|
||||
|| container.canFill(side.getOpposite(), FluidRegistry.WATER)) //I hesitate to pass null to these.
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if(infoArray != null && infoArray.length > 0)
|
||||
{
|
||||
for(FluidTankInfo info : infoArray)
|
||||
{
|
||||
if(info != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the adjacent connections to a TileEntity.
|
||||
* @param tileEntity - center TileEntity
|
||||
|
|
|
@ -19,6 +19,7 @@ import net.minecraft.item.ItemBlock;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
|
||||
public final class TransporterUtils
|
||||
{
|
||||
|
@ -52,6 +53,25 @@ public final class TransporterUtils
|
|||
return transporters;
|
||||
}
|
||||
|
||||
public static boolean isValidAcceptorOnSide(TileEntity tile, ForgeDirection side)
|
||||
{
|
||||
if(tile instanceof IGridTransmitter || !(tile instanceof IInventory))
|
||||
return false;
|
||||
|
||||
IInventory inventory = (IInventory)tile;
|
||||
|
||||
if(inventory.getSizeInventory() > 0)
|
||||
{
|
||||
if(!(inventory instanceof ISidedInventory))
|
||||
return true;
|
||||
|
||||
int[] slots = ((ISidedInventory)inventory).getAccessibleSlotsFromSide(side.getOpposite().ordinal());
|
||||
|
||||
return (slots != null && slots.length > 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all the adjacent connections to a TileEntity.
|
||||
* @param tileEntity - center TileEntity
|
||||
|
|
Loading…
Add table
Reference in a new issue