Program: 22312
Project: 22312
Buggy source:
@Override public AxisAlignedBB getBoundingBox(IBlockState state,IBlockAccess world,BlockPos pos){
  TileEntity te=world.getTileEntity(pos);
  if (te != null && te instanceof TileEntitySteamPipe) {
    TileEntitySteamPipe pipe=(TileEntitySteamPipe)te;
    if (pipe.disguiseBlock == null || pipe.disguiseBlock == Blocks.AIR) {
      float minX=BASE_MIN;
      float maxX=BASE_MAX;
      float minY=BASE_MIN;
      float maxY=BASE_MAX;
      float minZ=BASE_MIN;
      float maxZ=BASE_MAX;
      IBlockState actualState=getActualState(state,world,pos);
      int numDirs=pipe.getMyDirections().size();
      boolean hasNorth=actualState.getValue(NORTH);
      boolean hasSouth=actualState.getValue(SOUTH);
      boolean hasWest=actualState.getValue(WEST);
      boolean hasEast=actualState.getValue(EAST);
      boolean hasDown=actualState.getValue(DOWN);
      boolean hasUp=actualState.getValue(UP);
      if (hasNorth || (hasSouth && numDirs == 1)) {
        minZ=0F;
      }
      if (hasSouth || (hasNorth && numDirs == 1)) {
        maxZ=1F;
      }
      if (hasWest || (hasEast && numDirs == 1)) {
        minX=0F;
      }
      if (hasEast || (hasWest && numDirs == 1)) {
        maxX=1F;
      }
      if (hasDown || (hasUp && numDirs == 1)) {
        minY=0F;
      }
      if (hasUp || (hasDown && numDirs == 1)) {
        maxY=1F;
      }
      return new AxisAlignedBB(minX,minY,minZ,maxX,maxY,maxZ);
    }
  }
  return super.getBoundingBox(state,world,pos);
}

Fixed version (ground truth):
@Override public AxisAlignedBB getBoundingBox(IBlockState state,IBlockAccess world,BlockPos pos){
  TileEntity te=world.getTileEntity(pos);
  if (te != null && te instanceof TileEntitySteamPipe) {
    TileEntitySteamPipe pipe=(TileEntitySteamPipe)te;
    if (pipe.disguiseBlock == null || pipe.disguiseBlock == Blocks.AIR) {
      float minX=BASE_MIN;
      float maxX=BASE_MAX;
      float minY=BASE_MIN;
      float maxY=BASE_MAX;
      float minZ=BASE_MIN;
      float maxZ=BASE_MAX;
      IBlockState actualState=getActualState(state,world,pos);
      int numDirs=pipe.getMyDirections().size();
      boolean hasNorth=actualState.getValue(NORTH);
      boolean hasSouth=actualState.getValue(SOUTH);
      boolean hasWest=actualState.getValue(WEST);
      boolean hasEast=actualState.getValue(EAST);
      boolean hasDown=actualState.getValue(DOWN);
      boolean hasUp=actualState.getValue(UP);
      if (TileEntitySteamPipe.shouldStretchInDirection(hasNorth,hasSouth,numDirs)) {
        minZ=0F;
      }
      if (TileEntitySteamPipe.shouldStretchInDirection(hasSouth,hasNorth,numDirs)) {
        maxZ=1F;
      }
      if (TileEntitySteamPipe.shouldStretchInDirection(hasWest,hasEast,numDirs)) {
        minX=0F;
      }
      if (TileEntitySteamPipe.shouldStretchInDirection(hasEast,hasWest,numDirs)) {
        maxX=1F;
      }
      if (TileEntitySteamPipe.shouldStretchInDirection(hasDown,hasUp,numDirs)) {
        minY=0F;
      }
      if (TileEntitySteamPipe.shouldStretchInDirection(hasUp,hasDown,numDirs)) {
        maxY=1F;
      }
      return new AxisAlignedBB(minX,minY,minZ,maxX,maxY,maxZ);
    }
  }
  return super.getBoundingBox(state,world,pos);
}