Beispiel #1
0
  /** Called whenever the block is added into the world. Args: world, x, y, z */
  public void onBlockAdded(World par1World, int par2, int par3, int par4) {
    super.onBlockAdded(par1World, par2, par3, par4);

    if (par1World.getBlockId(par2, par3, par4) == this.blockID) {
      par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, this.tickRate(par1World));
    }
  }
 @Override
 public void updateTick(World world, int i, int j, int k, Random random) {
   if (world.getBlockMetadata(i, j, k) < 2) {
     if (random.nextInt(5) == 2) {
       world.setBlockWithNotify(i, j, k, 0);
     } else {
       world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
     }
   }
 }
  /** Called when the block is placed in the world. */
  public void onBlockPlacedBy(
      World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving) {
    int var6 =
        ((MathHelper.floor_double((double) (par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D)
                    & 3)
                + 2)
            % 4;
    par1World.setBlockMetadataWithNotify(par2, par3, par4, var6);
    boolean var7 = this.ignoreTick(par1World, par2, par3, par4, var6);

    if (var7) {
      par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 1);
    }
  }
  /**
   * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed
   * (coordinates passed are their own) Args: x, y, z, neighbor blockID
   */
  public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) {
    if (!this.canBlockStay(par1World, par2, par3, par4)) {
      this.dropBlockAsItem(
          par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
      par1World.setBlockWithNotify(par2, par3, par4, 0);
      par1World.notifyBlocksOfNeighborChange(par2 + 1, par3, par4, this.blockID);
      par1World.notifyBlocksOfNeighborChange(par2 - 1, par3, par4, this.blockID);
      par1World.notifyBlocksOfNeighborChange(par2, par3, par4 + 1, this.blockID);
      par1World.notifyBlocksOfNeighborChange(par2, par3, par4 - 1, this.blockID);
      par1World.notifyBlocksOfNeighborChange(par2, par3 - 1, par4, this.blockID);
      par1World.notifyBlocksOfNeighborChange(par2, par3 + 1, par4, this.blockID);
    } else {
      int var6 = par1World.getBlockMetadata(par2, par3, par4);
      boolean var7 = this.ignoreTick(par1World, par2, par3, par4, var6);
      int var8 = (var6 & 12) >> 2;

      if (this.isRepeaterPowered && !var7) {
        par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, repeaterState[var8] * 2);
      } else if (!this.isRepeaterPowered && var7) {
        par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, repeaterState[var8] * 2);
      }
    }
  }
  /** Called whenever the block is added into the world. Args: world, x, y, z */
  public void onBlockAdded(World par1World, int par2, int par3, int par4) {
    if (par1World.provider.dimensionId <= 0
        && par1World.getBlockId(par2, par3 - 1, par4) == Block.obsidian.blockID
        && Block.portal.tryToCreatePortal(par1World, par2, par3, par4)) {
      return;
    }

    if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4)
        && !canNeighborBurn(par1World, par2, par3, par4)) {
      par1World.setBlockToAir(par2, par3, par4);
      return;
    } else {
      par1World.scheduleBlockUpdate(
          par2, par3, par4, blockID, tickRate(par1World) + par1World.rand.nextInt(10));
      return;
    }
  }
  /** Ticks the block if it's been scheduled */
  public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) {
    int var6 = par1World.getBlockMetadata(par2, par3, par4);
    boolean var7 = this.ignoreTick(par1World, par2, par3, par4, var6);

    if (this.isRepeaterPowered && !var7) {
      par1World.setBlockAndMetadataWithNotify(
          par2, par3, par4, Block.redstoneRepeaterIdle.blockID, var6);
    } else if (!this.isRepeaterPowered) {
      par1World.setBlockAndMetadataWithNotify(
          par2, par3, par4, Block.redstoneRepeaterActive.blockID, var6);

      if (!var7) {
        int var8 = (var6 & 12) >> 2;
        par1World.scheduleBlockUpdate(
            par2, par3, par4, Block.redstoneRepeaterActive.blockID, repeaterState[var8] * 2);
      }
    }
  }
  /** Called when the block is placed in the world. */
  public void onBlockPlacedBy(
      World par1World,
      int par2,
      int par3,
      int par4,
      EntityLiving par5EntityLiving,
      ItemStack par6ItemStack) {
    int var7 =
        ((MathHelper.floor_double((double) (par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D)
                    & 3)
                + 2)
            % 4;
    par1World.setBlockMetadata(par2, par3, par4, var7, 3);
    boolean var8 = this.func_94478_d(par1World, par2, par3, par4, var7);

    if (var8) {
      par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 1);
    }
  }
  public void onNeighborBlockChange(World world, int i, int j, int k, int l) {
    Coords coords = new Coords(i, j, k);
    if (coordsState.containsKey(coords)) return;
    int blockState = getPowerStateMetadata(world, i, j, k);

    if (disabledPower == blockState || disabledNoPower == blockState) {
      if (!isClkPowerd(world, i, j, k)) {
        if (disabledPower == blockState) coordsState.put(coords, readyToRunPower);
        else coordsState.put(coords, readyToRunNoPower);
      }

    } else {
      if (isClkPowerd(world, i, j, k)) {
        if (isInputPowerd(world, i, j, k)) coordsState.put(coords, disabledPower);
        else coordsState.put(coords, disabledNoPower);
      }
    }

    world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
  }
 /**
  * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed
  * (coordinates passed are their own) Args: x, y, z, neighbor blockID
  */
 public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) {
   par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, this.tickRate());
 }
 /** Called whenever the block is added into the world. Args: world, x, y, z */
 public void onBlockAdded(World par1World, int par2, int par3, int par4) {
   par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, this.tickRate());
 }
Beispiel #11
0
  /** Ticks the block if it's been scheduled */
  public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) {
    int var6 = this.getFlowDecay(par1World, par2, par3, par4);
    byte var7 = 1;

    if (this.blockMaterial == Material.lava && !par1World.provider.isHellWorld) {
      var7 = 2;
    }

    boolean var8 = true;
    int var9 = this.tickRate(par1World);
    int var11;

    if (var6 > 0) {
      byte var10 = -100;
      this.numAdjacentSources = 0;
      int var13 = this.getSmallestFlowDecay(par1World, par2 - 1, par3, par4, var10);
      var13 = this.getSmallestFlowDecay(par1World, par2 + 1, par3, par4, var13);
      var13 = this.getSmallestFlowDecay(par1World, par2, par3, par4 - 1, var13);
      var13 = this.getSmallestFlowDecay(par1World, par2, par3, par4 + 1, var13);
      var11 = var13 + var7;

      if (var11 >= 8 || var13 < 0) {
        var11 = -1;
      }

      if (this.getFlowDecay(par1World, par2, par3 + 1, par4) >= 0) {
        int var12 = this.getFlowDecay(par1World, par2, par3 + 1, par4);

        if (var12 >= 8) {
          var11 = var12;
        } else {
          var11 = var12 + 8;
        }
      }

      if (this.numAdjacentSources >= 2 && this.blockMaterial == Material.water) {
        if (par1World.getBlockMaterial(par2, par3 - 1, par4).isSolid()) {
          var11 = 0;
        } else if (par1World.getBlockMaterial(par2, par3 - 1, par4) == this.blockMaterial
            && par1World.getBlockMetadata(par2, par3 - 1, par4) == 0) {
          var11 = 0;
        }
      }

      if (this.blockMaterial == Material.lava
          && var6 < 8
          && var11 < 8
          && var11 > var6
          && par5Random.nextInt(4) != 0) {
        var9 *= 4;
      }

      if (var11 == var6) {
        if (var8) {
          this.updateFlow(par1World, par2, par3, par4);
        }
      } else {
        var6 = var11;

        if (var11 < 0) {
          par1World.setBlockToAir(par2, par3, par4);
        } else {
          par1World.setBlockMetadata(par2, par3, par4, var11, 2);
          par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, var9);
          par1World.notifyBlocksOfNeighborChange(par2, par3, par4, this.blockID);
        }
      }
    } else {
      this.updateFlow(par1World, par2, par3, par4);
    }

    if (this.liquidCanDisplaceBlock(par1World, par2, par3 - 1, par4)) {
      if (this.blockMaterial == Material.lava
          && par1World.getBlockMaterial(par2, par3 - 1, par4) == Material.water) {
        par1World.setBlock(par2, par3 - 1, par4, Block.stone.blockID);
        this.triggerLavaMixEffects(par1World, par2, par3 - 1, par4);
        return;
      }

      if (var6 >= 8) {
        this.flowIntoBlock(par1World, par2, par3 - 1, par4, var6);
      } else {
        this.flowIntoBlock(par1World, par2, par3 - 1, par4, var6 + 8);
      }
    } else if (var6 >= 0 && (var6 == 0 || this.blockBlocksFlow(par1World, par2, par3 - 1, par4))) {
      boolean[] var14 = this.getOptimalFlowDirections(par1World, par2, par3, par4);
      var11 = var6 + var7;

      if (var6 >= 8) {
        var11 = 1;
      }

      if (var11 >= 8) {
        return;
      }

      if (var14[0]) {
        this.flowIntoBlock(par1World, par2 - 1, par3, par4, var11);
      }

      if (var14[1]) {
        this.flowIntoBlock(par1World, par2 + 1, par3, par4, var11);
      }

      if (var14[2]) {
        this.flowIntoBlock(par1World, par2, par3, par4 - 1, var11);
      }

      if (var14[3]) {
        this.flowIntoBlock(par1World, par2, par3, par4 + 1, var11);
      }
    }
  }
 @Override
 public void onBlockAdded(World world, int i, int j, int k) {
   if (world.getBlockMetadata(i, j, k) < 2) {
     world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
   }
 }
Beispiel #13
0
 public void updateTick(World world, int i, int j, int k, Random random) {
   int l = getFlowDecay(world, i, j, k);
   byte byte0 = 1;
   if (blockMaterial == Material.lava && !world.worldProvider.isHellWorld) {
     byte0 = 2;
   }
   boolean flag = true;
   if (l > 0) {
     int i1 = -100;
     numAdjacentSources = 0;
     i1 = getSmallestFlowDecay(world, i - 1, j, k, i1);
     i1 = getSmallestFlowDecay(world, i + 1, j, k, i1);
     i1 = getSmallestFlowDecay(world, i, j, k - 1, i1);
     i1 = getSmallestFlowDecay(world, i, j, k + 1, i1);
     int j1 = i1 + byte0;
     if (j1 >= 8 || i1 < 0) {
       j1 = -1;
     }
     if (getFlowDecay(world, i, j + 1, k) >= 0) {
       int l1 = getFlowDecay(world, i, j + 1, k);
       if (l1 >= 8) {
         j1 = l1;
       } else {
         j1 = l1 + 8;
       }
     }
     if (numAdjacentSources >= 2 && blockMaterial == Material.water) {
       if (world.getBlockMaterial(i, j - 1, k).isSolid()) {
         j1 = 0;
       } else if (world.getBlockMaterial(i, j - 1, k) == blockMaterial
           && world.getBlockMetadata(i, j, k) == 0) {
         j1 = 0;
       }
     }
     if (blockMaterial == Material.lava && l < 8 && j1 < 8 && j1 > l && random.nextInt(4) != 0) {
       j1 = l;
       flag = false;
     }
     if (j1 != l) {
       l = j1;
       if (l < 0) {
         world.setBlockWithNotify(i, j, k, 0);
       } else {
         world.setBlockMetadataWithNotify(i, j, k, l);
         world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
         world.notifyBlocksOfNeighborChange(i, j, k, blockID);
       }
     } else if (flag) {
       func_30003_j(world, i, j, k);
     }
   } else {
     func_30003_j(world, i, j, k);
   }
   if (liquidCanDisplaceBlock(world, i, j - 1, k)) {
     if (l >= 8) {
       world.setBlockAndMetadataWithNotify(i, j - 1, k, blockID, l);
     } else {
       world.setBlockAndMetadataWithNotify(i, j - 1, k, blockID, l + 8);
     }
   } else if (l >= 0 && (l == 0 || blockBlocksFlow(world, i, j - 1, k))) {
     boolean aflag[] = getOptimalFlowDirections(world, i, j, k);
     int k1 = l + byte0;
     if (l >= 8) {
       k1 = 1;
     }
     if (k1 >= 8) {
       return;
     }
     if (aflag[0]) {
       flowIntoBlock(world, i - 1, j, k, k1);
     }
     if (aflag[1]) {
       flowIntoBlock(world, i + 1, j, k, k1);
     }
     if (aflag[2]) {
       flowIntoBlock(world, i, j, k - 1, k1);
     }
     if (aflag[3]) {
       flowIntoBlock(world, i, j, k + 1, k1);
     }
   }
 }
Beispiel #14
0
 public void onBlockAdded(World world, int i, int j, int k) {
   super.onBlockAdded(world, i, j, k);
   if (world.getBlockId(i, j, k) == blockID) {
     world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
   }
 }
 public void updateTickOld(World world, int i, int j, int k, Random random) {
   boolean flag = world.getBlockId(i, j - 1, k) == Block.netherrack.blockID;
   if (!flag
       && world.isRaining()
       && (world.canLightningStrikeAt(i, j, k)
           || world.canLightningStrikeAt(i - 1, j, k)
           || world.canLightningStrikeAt(i + 1, j, k)
           || world.canLightningStrikeAt(i, j, k - 1)
           || world.canLightningStrikeAt(i, j, k + 1))) {
     world.setBlockToAir(i, j, k);
     return;
   }
   int l = world.getBlockMetadata(i, j, k);
   if (l < 15) {
     world.setBlockMetadataWithNotify(i, j, k, l + 1, 3);
     world.scheduleBlockUpdate(i, j, k, blockID, tickRate(world));
   }
   if (!flag && !canNeighborBurn(world, i, j, k)) {
     if (!world.isBlockOpaqueCube(i, j - 1, k) || l > 3) {
       world.setBlockToAir(i, j, k);
     }
     return;
   }
   if (!flag && !canBlockCatchFire(world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0) {
     world.setBlockToAir(i, j, k);
     return;
   }
   if (l % 2 == 0 && l > 2) {
     tryToCatchBlockOnFire_old(world, i + 1, j, k, 300, random);
     tryToCatchBlockOnFire_old(world, i - 1, j, k, 300, random);
     tryToCatchBlockOnFire_old(world, i, j - 1, k, 250, random);
     tryToCatchBlockOnFire_old(world, i, j + 1, k, 250, random);
     tryToCatchBlockOnFire_old(world, i, j, k - 1, 300, random);
     tryToCatchBlockOnFire_old(world, i, j, k + 1, 300, random);
     for (int i1 = i - 1; i1 <= i + 1; i1++) {
       for (int j1 = k - 1; j1 <= k + 1; j1++) {
         for (int k1 = j - 1; k1 <= j + 4; k1++) {
           if (i1 == i && k1 == j && j1 == k) {
             continue;
           }
           int l1 = 100;
           if (k1 > j + 1) {
             l1 += (k1 - (j + 1)) * 100;
           }
           int i2 = getChanceOfNeighborsEncouragingFire(world, i1, k1, j1);
           if (i2 > 0
               && random.nextInt(l1) <= i2
               && (!world.isRaining() || !world.canLightningStrikeAt(i1, k1, j1))
               && !world.canLightningStrikeAt(i1 - 1, k1, k)
               && !world.canLightningStrikeAt(i1 + 1, k1, j1)
               && !world.canLightningStrikeAt(i1, k1, j1 - 1)
               && !world.canLightningStrikeAt(i1, k1, j1 + 1)) {
             world.setBlock(i1, k1, j1, blockID);
           }
         }
       }
     }
   }
   if (l == 15 && !infiniteBurn) {
     tryToCatchBlockOnFire_old(world, i + 1, j, k, 1, random);
     tryToCatchBlockOnFire_old(world, i - 1, j, k, 1, random);
     tryToCatchBlockOnFire_old(world, i, j - 1, k, 1, random);
     tryToCatchBlockOnFire_old(world, i, j + 1, k, 1, random);
     tryToCatchBlockOnFire_old(world, i, j, k - 1, 1, random);
     tryToCatchBlockOnFire_old(world, i, j, k + 1, 1, random);
   }
 }
 @Override
 public void onNeighborBlockChange(World world, int i, int j, int k, int l) {
   if (!mod_NWater.chunkPass(world, i, j, k)) {
     return;
   }
   if (world.getBlockMetadata(i, j, k) < 2) {
     world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
   }
   if (world.multiplayerWorld) {
     return;
   }
   if (BlockNWater_Ocean.noOcean) {
     return;
   }
   checkForHarden(world, i, j, k);
   int i1 = world.getBlockMetadata(i, j, k);
   boolean flag = false;
   if ((world.getBlockId(i, j - 1, k) == mod_NWater.nwater_ocean.blockID)
       & (world.getBlockMetadata(i, j - 1, k) < 2 || world.getBlockMetadata(i, j - 1, k) > 3)) {
     flag = true;
   }
   if (mod_NWater.canMoveAmt(world, i, j - 1, k, i1)) {
     flag = true;
   }
   if (checkSponge(world, i - 1, j, k)) {
     flag = true;
   }
   if (checkSponge(world, i + 1, j, k)) {
     flag = true;
   }
   if (checkSponge(world, i, j - 1, k)) {
     flag = true;
   }
   if (checkSponge(world, i, j, k - 1)) {
     flag = true;
   }
   if (checkSponge(world, i, j, k + 1)) {
     flag = true;
   }
   if ((!flag) & isWater(world, i, j - 1, k)) {
     int j1 = world.getBlockMetadata(i, j - 1, k);
     if (j1 < 15) {
       if (j1 + (1 + i1) < 16) {
         flag = true;
       } else {
         flag = true;
       }
     }
   }
   if (!flag) {
     int k1 = 1;
     int i2 = 1;
     for (int k2 = -1; k2 <= 1; k2++) {
       for (int i3 = -1; i3 <= 1; i3++) {
         int k3 = k2 * k1;
         int i4 = i3 * i2;
         if (!((!flag) & (k2 != 0 || i3 != 0) & (k2 == 0 || i3 == 0))) {
           continue;
         }
         world.getBlockId(i + k3, j, k + i4);
         world.getBlockMetadata(i + k3, j, k + i4);
         boolean flag1 = mod_NWater.canMoveAmt(world, i + k3, j, k + i4, i1);
         if (!((!flag) & flag1)) {
           continue;
         }
         world.getBlockId(i + k3, j - 1, k + i4);
         world.getBlockMetadata(i + k3, j - 1, k + i4);
         flag1 = mod_NWater.canMoveAmt(world, i + k3, j - 1, k + i4, i1);
         if ((!flag) & flag1) {
           flag = true;
         }
         if (!((!flag) & isWater(world, i + k3, j - 1, k + i4))) {
           continue;
         }
         int k5 = world.getBlockMetadata(i + k3, j - 1, k + i4);
         if (k5 >= 15) {
           continue;
         }
         if (k5 + (1 + i1) < 16) {
           flag = true;
         } else {
           flag = true;
         }
       }
     }
   }
   if ((!flag) & (i1 > 0)) {
     int l1 = 1;
     int j2 = 1;
     for (int l2 = -1; l2 <= 1; l2++) {
       for (int j3 = -1; j3 <= 1; j3++) {
         int l3 = l2 * l1;
         int j4 = j3 * j2;
         if (!((!flag) & (l2 != 0 || j3 != 0) & (l2 == 0 || j3 == 0))) {
           continue;
         }
         world.getBlockId(i + l3, j, k + j4);
         int j5 = world.getBlockMetadata(i + l3, j, k + j4);
         boolean flag2 = mod_NWater.canMoveAmt(world, i + l3, j, k + j4, i1);
         if ((!flag) & flag2) {
           flag = true;
         }
         if (!((!flag) & isWater(world, i + l3, j, k + j4))) {
           continue;
         }
         if (j5 + 1 < i1) {
           flag = true;
         }
         float f = getSurfaceMull();
         if (!((!flag)
             & (Math.pow(mod_NWater.getMetaAvg2(world, i + l3, j, k + j4), f)
                 < mod_NWater.getMetaAvg2(world, i, j, k)))) {
           continue;
         }
         int l5 = i1;
         int j6 = (i1 + j5) / 2;
         if (l5 != j6) {
           flag = true;
         }
       }
     }
   }
   if (flag) {
     world.setBlockAndMetadata(i, j, k, getMoving(), i1);
   }
 }
  /** Ticks the block if it's been scheduled */
  public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) {
    if (!par1World.getGameRules().getGameRuleBooleanValue("doFireTick")) {
      return;
    }
    if (oldFire) {
      updateTickOld(par1World, par2, par3, par4, par5Random);
      return;
    }

    boolean flag = par1World.getBlockId(par2, par3 - 1, par4) == Block.netherrack.blockID;

    if ((par1World.provider instanceof WorldProviderEnd)
        && par1World.getBlockId(par2, par3 - 1, par4) == Block.bedrock.blockID) {
      flag = true;
    }

    if (!canPlaceBlockAt(par1World, par2, par3, par4)) {
      par1World.setBlockToAir(par2, par3, par4);
    }

    if (!flag
        && par1World.isRaining()
        && (par1World.canLightningStrikeAt(par2, par3, par4)
            || par1World.canLightningStrikeAt(par2 - 1, par3, par4)
            || par1World.canLightningStrikeAt(par2 + 1, par3, par4)
            || par1World.canLightningStrikeAt(par2, par3, par4 - 1)
            || par1World.canLightningStrikeAt(par2, par3, par4 + 1))) {
      par1World.setBlockToAir(par2, par3, par4);
      return;
    }

    int i = par1World.getBlockMetadata(par2, par3, par4);

    if (i < 15) {
      par1World.setBlockMetadataWithNotify(par2, par3, par4, i + par5Random.nextInt(3) / 2, 4);
    }

    par1World.scheduleBlockUpdate(
        par2, par3, par4, blockID, tickRate(par1World) + par5Random.nextInt(10));

    if (!flag && !canNeighborBurn(par1World, par2, par3, par4)) {
      if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) || i > 3) {
        par1World.setBlockToAir(par2, par3, par4);
      }

      return;
    }

    if (!flag
        && !canBlockCatchFire(par1World, par2, par3 - 1, par4)
        && i == 15
        && par5Random.nextInt(4) == 0) {
      par1World.setBlockToAir(par2, par3, par4);
      return;
    }

    boolean flag1 = par1World.isBlockHighHumidity(par2, par3, par4);
    byte byte0 = 0;

    if (flag1) {
      byte0 = -50;
    }

    tryToCatchBlockOnFire(par1World, par2 + 1, par3, par4, 300 + byte0, par5Random, i);
    tryToCatchBlockOnFire(par1World, par2 - 1, par3, par4, 300 + byte0, par5Random, i);
    tryToCatchBlockOnFire(par1World, par2, par3 - 1, par4, 250 + byte0, par5Random, i);
    tryToCatchBlockOnFire(par1World, par2, par3 + 1, par4, 250 + byte0, par5Random, i);
    tryToCatchBlockOnFire(par1World, par2, par3, par4 - 1, 300 + byte0, par5Random, i);
    tryToCatchBlockOnFire(par1World, par2, par3, par4 + 1, 300 + byte0, par5Random, i);

    for (int j = par2 - 1; j <= par2 + 1; j++) {
      for (int k = par4 - 1; k <= par4 + 1; k++) {
        for (int l = par3 - 1; l <= par3 + 4; l++) {
          if (j == par2 && l == par3 && k == par4) {
            continue;
          }

          int i1 = 100;

          if (l > par3 + 1) {
            i1 += (l - (par3 + 1)) * 100;
          }

          int j1 = getChanceOfNeighborsEncouragingFire(par1World, j, l, k);

          if (j1 <= 0) {
            continue;
          }

          int k1 = (j1 + 40 + (fixedDamage ? 0 : par1World.difficultySetting * 7)) / (i + 30);

          if (flag1) {
            k1 /= 2;
          }

          if (k1 <= 0
              || par5Random.nextInt(i1) > k1
              || par1World.isRaining() && par1World.canLightningStrikeAt(j, l, k)
              || par1World.canLightningStrikeAt(j - 1, l, par4)
              || par1World.canLightningStrikeAt(j + 1, l, k)
              || par1World.canLightningStrikeAt(j, l, k - 1)
              || par1World.canLightningStrikeAt(j, l, k + 1)) {
            continue;
          }

          int l1 = i + par5Random.nextInt(5) / 4;

          if (l1 > 15) {
            l1 = 15;
          }

          par1World.setBlock(j, l, k, blockID, l1, 3);
        }
      }
    }
  }
 private void setStateIfMobInteractsWithPlate(World world, int i, int j, int k) {
   boolean flag = world.getBlockMetadata(i, j, k) == 1;
   boolean flag1 = false;
   float f = 0.125F;
   List list = null;
   if (triggerMobType == EnumMobType.everything) {
     list =
         world.getEntitiesWithinAABBExcludingEntity(
             null,
             AxisAlignedBB.getBoundingBoxFromPool(
                 (float) i + f,
                 j,
                 (float) k + f,
                 (float) (i + 1) - f,
                 (double) j + 0.25D,
                 (float) (k + 1) - f));
   }
   if (triggerMobType == EnumMobType.mobs) {
     list =
         world.getEntitiesWithinAABB(
             net.minecraft.src.EntityLiving.class,
             AxisAlignedBB.getBoundingBoxFromPool(
                 (float) i + f,
                 j,
                 (float) k + f,
                 (float) (i + 1) - f,
                 (double) j + 0.25D,
                 (float) (k + 1) - f));
   }
   if (triggerMobType == EnumMobType.players) {
     list =
         world.getEntitiesWithinAABB(
             net.minecraft.src.EntityPlayer.class,
             AxisAlignedBB.getBoundingBoxFromPool(
                 (float) i + f,
                 j,
                 (float) k + f,
                 (float) (i + 1) - f,
                 (double) j + 0.25D,
                 (float) (k + 1) - f));
   }
   if (list.size() > 0) {
     flag1 = true;
   }
   if (flag1 && !flag) {
     world.setBlockMetadataWithNotify(i, j, k, 1);
     world.notifyBlocksOfNeighborChange(i, j, k, blockID);
     world.notifyBlocksOfNeighborChange(i, j - 1, k, blockID);
     world.markBlocksDirty(i, j, k, i, j, k);
     world.playSoundEffect(
         (double) i + 0.5D,
         (double) j + 0.10000000000000001D,
         (double) k + 0.5D,
         "random.click",
         0.3F,
         0.6F);
   }
   if (!flag1 && flag) {
     world.setBlockMetadataWithNotify(i, j, k, 0);
     world.notifyBlocksOfNeighborChange(i, j, k, blockID);
     world.notifyBlocksOfNeighborChange(i, j - 1, k, blockID);
     world.markBlocksDirty(i, j, k, i, j, k);
     world.playSoundEffect(
         (double) i + 0.5D,
         (double) j + 0.10000000000000001D,
         (double) k + 0.5D,
         "random.click",
         0.3F,
         0.5F);
   }
   if (flag1) {
     world.scheduleBlockUpdate(i, j, k, blockID, tickRate());
   }
 }