Program: 22311
Project: 22311
Buggy source:
@Override public void update(){
  if (lastSteam != getSteamShare() >= STEAM_CONSUMPTION) {
    markDirty();
  }
  lastSteam=getSteamShare() > STEAM_CONSUMPTION;
  if (!isInitialized) {
    powered=worldObj.isBlockIndirectlyGettingPowered(pos) > 0;
    setDistributionDirections(new EnumFacing[]{EnumFacing.getFront(getBlockMetadata()).getOpposite()});
    isInitialized=true;
  }
  super.update();
  if (active && worldObj.isRemote) {
    rotateTicks++;
  }
  if (active && worldObj.isRemote || (getSteamShare() >= STEAM_CONSUMPTION && !powered)) {
    if (!worldObj.isRemote) {
      decrSteam(STEAM_CONSUMPTION);
    }
    EnumFacing dir=worldObj.getBlockState(pos).getValue(BlockFan.FACING);
    double[] positions=getSmokePositions(dir);
    double[] speeds=getSmokeSpeeds(dir);
    worldObj.spawnParticle(EnumParticleTypes.SMOKE_NORMAL,positions[0],positions[1],positions[2],speeds[0],speeds[1],speeds[2]);
    int blocksInFront=0;
    boolean blocked=false;
    for (int i=1; i < range; i++) {
      int x=pos.getX() + dir.getFrontOffsetX() * i;
      int y=pos.getY() + dir.getFrontOffsetY() * i;
      int z=pos.getZ() + dir.getFrontOffsetZ() * i;
      BlockPos offsetPos=new BlockPos(x,y,z);
      IBlockState offsetState=worldObj.getBlockState(offsetPos);
      Block offsetBlock=offsetState.getBlock();
      if (!worldObj.isRemote && worldObj.rand.nextInt(20) == 0 && !blocked && offsetBlock != Blocks.AIR && offsetBlock.isReplaceable(worldObj,offsetPos) || offsetBlock instanceof BlockCrops) {
        if (offsetBlock instanceof BlockFluidBase) {
          for (int v=0; v < 5; v++) {
            Steamcraft.proxy.spawnBreakParticles(worldObj,x + 0.5F,y + 0.5F,z + 0.5F,offsetBlock,0F,0F,0F);
          }
        }
        worldObj.setBlockToAir(offsetPos);
      }
      if (!blocked && (offsetBlock.isReplaceable(worldObj,offsetPos) || worldObj.isAirBlock(offsetPos) || offsetBlock instanceof BlockTrapDoor|| offsetState.getCollisionBoundingBox(worldObj,offsetPos) == null)) {
        blocksInFront=i;
        if (i != range - 1) {
          worldObj.spawnParticle(EnumParticleTypes.SMOKE_NORMAL,x + getRandomOrSlight(dir.getFrontOffsetX()),y + getRandomOrSlight(dir.getFrontOffsetY()),z + getRandomOrSlight(dir.getFrontOffsetZ()),speeds[0],speeds[1],speeds[2]);
        }
      }
 else {
        blocked=true;
      }
    }
    List<Entity> entities=worldObj.getEntitiesWithinAABB(Entity.class,new AxisAlignedBB(pos.getX() + (dir.getFrontOffsetX() < 0 ? dir.getFrontOffsetX() * blocksInFront : 0),pos.getY() + (dir.getFrontOffsetY() < 0 ? dir.getFrontOffsetY() * blocksInFront : 0),pos.getZ() + (dir.getFrontOffsetZ() < 0 ? dir.getFrontOffsetZ() * blocksInFront : 0),pos.getX() + 1 + (dir.getFrontOffsetX() > 0 ? dir.getFrontOffsetX() * blocksInFront : 0),pos.getY() + 1 + (dir.getFrontOffsetY() > 0 ? dir.getFrontOffsetY() * blocksInFront : 0),pos.getZ() + 1 + (dir.getFrontOffsetZ() > 0 ? dir.getFrontOffsetZ() * blocksInFront : 0)));
    for (    Object obj : entities) {
      Entity entity=(Entity)obj;
      if (!(entity instanceof EntityPlayer) || !(((EntityPlayer)entity).capabilities.isFlying && ((EntityPlayer)entity).capabilities.isCreativeMode)) {
        if (entity instanceof EntityPlayer && entity.isSneaking()) {
          entity.motionX+=dir.getFrontOffsetX() * 0.025F;
          entity.motionY+=dir.getFrontOffsetY() * 0.05F;
          entity.motionZ+=dir.getFrontOffsetZ() * 0.025F;
        }
 else {
          entity.motionX+=dir.getFrontOffsetX() * 0.075F;
          entity.motionY+=dir.getFrontOffsetY() * 0.1F;
          entity.motionZ+=dir.getFrontOffsetZ() * 0.075F;
        }
        entity.fallDistance=0.0F;
      }
    }
  }
}

Fixed version (ground truth):
@Override public void update(){
  if (lastSteam != getSteamShare() >= STEAM_CONSUMPTION) {
    markForResync();
  }
  lastSteam=getSteamShare() > STEAM_CONSUMPTION;
  if (!lastSteam && !worldObj.isRemote && active) {
    markForResync();
  }
  if (!isInitialized) {
    powered=worldObj.isBlockPowered(pos);
    setDistributionDirections(new EnumFacing[]{worldObj.getBlockState(pos).getValue(BlockFan.FACING).getOpposite()});
    isInitialized=true;
  }
  super.update();
  if (active && worldObj.isRemote) {
    rotateTicks++;
  }
  if (active && worldObj.isRemote || (getSteamShare() >= STEAM_CONSUMPTION && !powered)) {
    if (!worldObj.isRemote) {
      decrSteam(STEAM_CONSUMPTION);
    }
    EnumFacing dir=worldObj.getBlockState(pos).getValue(BlockFan.FACING);
    double[] positions=getSmokePositions(dir);
    double[] speeds=getSmokeSpeeds(dir);
    worldObj.spawnParticle(EnumParticleTypes.SMOKE_NORMAL,positions[0],positions[1],positions[2],speeds[0],speeds[1],speeds[2]);
    int blocksInFront=0;
    boolean blocked=false;
    for (int i=1; i < range; i++) {
      int x=pos.getX() + dir.getFrontOffsetX() * i;
      int y=pos.getY() + dir.getFrontOffsetY() * i;
      int z=pos.getZ() + dir.getFrontOffsetZ() * i;
      BlockPos offsetPos=new BlockPos(x,y,z);
      IBlockState offsetState=worldObj.getBlockState(offsetPos);
      Block offsetBlock=offsetState.getBlock();
      if (!worldObj.isRemote && worldObj.rand.nextInt(20) == 0 && !blocked && offsetBlock != Blocks.AIR && offsetBlock.isReplaceable(worldObj,offsetPos) || offsetBlock instanceof BlockCrops) {
        if (offsetBlock instanceof BlockFluidBase) {
          for (int v=0; v < 5; v++) {
            Steamcraft.proxy.spawnBreakParticles(worldObj,x + 0.5F,y + 0.5F,z + 0.5F,offsetBlock,0F,0F,0F);
          }
        }
        worldObj.setBlockToAir(offsetPos);
      }
      if (!blocked && (offsetBlock.isReplaceable(worldObj,offsetPos) || worldObj.isAirBlock(offsetPos) || offsetBlock instanceof BlockTrapDoor|| offsetState.getCollisionBoundingBox(worldObj,offsetPos) == null)) {
        blocksInFront=i;
        if (i != range - 1) {
          worldObj.spawnParticle(EnumParticleTypes.SMOKE_NORMAL,x + getRandomOrSlight(dir.getFrontOffsetX()),y + getRandomOrSlight(dir.getFrontOffsetY()),z + getRandomOrSlight(dir.getFrontOffsetZ()),speeds[0],speeds[1],speeds[2]);
        }
      }
 else {
        blocked=true;
      }
    }
    List<Entity> entities=worldObj.getEntitiesWithinAABB(Entity.class,new AxisAlignedBB(pos.getX() + (dir.getFrontOffsetX() < 0 ? dir.getFrontOffsetX() * blocksInFront : 0),pos.getY() + (dir.getFrontOffsetY() < 0 ? dir.getFrontOffsetY() * blocksInFront : 0),pos.getZ() + (dir.getFrontOffsetZ() < 0 ? dir.getFrontOffsetZ() * blocksInFront : 0),pos.getX() + 1 + (dir.getFrontOffsetX() > 0 ? dir.getFrontOffsetX() * blocksInFront : 0),pos.getY() + 1 + (dir.getFrontOffsetY() > 0 ? dir.getFrontOffsetY() * blocksInFront : 0),pos.getZ() + 1 + (dir.getFrontOffsetZ() > 0 ? dir.getFrontOffsetZ() * blocksInFront : 0)));
    for (    Entity entity : entities) {
      if (!(entity instanceof EntityPlayer) || !(((EntityPlayer)entity).capabilities.isFlying && ((EntityPlayer)entity).capabilities.isCreativeMode)) {
        if (entity instanceof EntityPlayer && entity.isSneaking()) {
          entity.motionX+=dir.getFrontOffsetX() * 0.025F;
          entity.motionY+=dir.getFrontOffsetY() * 0.05F;
          entity.motionZ+=dir.getFrontOffsetZ() * 0.025F;
        }
 else {
          entity.motionX+=dir.getFrontOffsetX() * 0.075F;
          entity.motionY+=dir.getFrontOffsetY() * 0.1F;
          entity.motionZ+=dir.getFrontOffsetZ() * 0.075F;
        }
        entity.fallDistance=0.0F;
      }
    }
  }
}