Exemple #1
0
 /**
  * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z
  */
 public boolean canPlace(World var1, int var2, int var3, int var4) {
   int var5 = var1.getTypeId(var2, var3 - 1, var4);
   Block var6 = Block.byId[var5];
   return var6 != null && (var6.isLeaves(var1, var2, var3 - 1, var4) || Block.byId[var5].c())
       ? var1.getMaterial(var2, var3 - 1, var4).isSolid()
       : false;
 }
  public boolean a(World var1, Random var2, int var3, int var4, int var5) {
    int var6 = var2.nextInt(3) + 5;
    boolean var7 = true;

    if (var4 >= 1 && var4 + var6 + 1 <= 256) {
      int var8;
      int var9;
      int var10;
      int var11;
      Block var13;

      for (var8 = var4; var8 <= var4 + 1 + var6; ++var8) {
        byte var12 = 1;

        if (var8 == var4) {
          var12 = 0;
        }

        if (var8 >= var4 + 1 + var6 - 2) {
          var12 = 2;
        }

        for (var9 = var3 - var12; var9 <= var3 + var12 && var7; ++var9) {
          for (var10 = var5 - var12; var10 <= var5 + var12 && var7; ++var10) {
            if (var8 >= 0 && var8 < 256) {
              var11 = var1.getTypeId(var9, var8, var10);
              var13 = Block.byId[var11];

              if (var11 != 0 && var13 != null && !var13.isLeaves(var1, var9, var8, var10)) {
                var7 = false;
              }
            } else {
              var7 = false;
            }
          }
        }
      }

      if (!var7) {
        return false;
      } else {
        var8 = var1.getTypeId(var3, var4 - 1, var5);

        if ((var8 == Block.GRASS.id || var8 == Block.DIRT.id) && var4 < 256 - var6 - 1) {
          this.setType(var1, var3, var4 - 1, var5, Block.DIRT.id);
          int var17;

          for (var17 = var4 - 3 + var6; var17 <= var4 + var6; ++var17) {
            var9 = var17 - (var4 + var6);
            var10 = 1 - var9 / 2;

            for (var11 = var3 - var10; var11 <= var3 + var10; ++var11) {
              int var18 = var11 - var3;

              for (int var14 = var5 - var10; var14 <= var5 + var10; ++var14) {
                int var15 = var14 - var5;
                Block var16 = Block.byId[var1.getTypeId(var11, var17, var14)];

                if ((Math.abs(var18) != var10
                        || Math.abs(var15) != var10
                        || var2.nextInt(2) != 0 && var9 != 0)
                    && (var16 == null || var16.canBeReplacedByLeaves(var1, var11, var17, var14))) {
                  this.setTypeAndData(var1, var11, var17, var14, Block.LEAVES.id, 2);
                }
              }
            }
          }

          for (var17 = 0; var17 < var6; ++var17) {
            var9 = var1.getTypeId(var3, var4 + var17, var5);
            var13 = Block.byId[var9];

            if (var9 == 0 || var13 == null || var13.isLeaves(var1, var3, var4 + var17, var5)) {
              this.setTypeAndData(var1, var3, var4 + var17, var5, Block.LOG.id, 2);
            }
          }

          return true;
        } else {
          return false;
        }
      }
    } else {
      return false;
    }
  }
  /** Ticks the block if it's been scheduled */
  public void b(World var1, int var2, int var3, int var4, Random var5) {
    if (!var1.isStatic) {
      int var6 = var1.getData(var2, var3, var4);

      if ((var6 & 8) != 0 && (var6 & 4) == 0) {
        byte var7 = 4;
        int var8 = var7 + 1;
        byte var9 = 32;
        int var10 = var9 * var9;
        int var11 = var9 / 2;

        if (this.b == null) {
          this.b = new int[var9 * var9 * var9];
        }

        int var12;

        if (var1.d(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
          int var13;
          int var14;
          int var15;

          for (var12 = -var7; var12 <= var7; ++var12) {
            for (var13 = -var7; var13 <= var7; ++var13) {
              for (var14 = -var7; var14 <= var7; ++var14) {
                var15 = var1.getTypeId(var2 + var12, var3 + var13, var4 + var14);
                Block var16 = Block.byId[var15];

                if (var16 != null
                    && var16.canSustainLeaves(var1, var2 + var12, var3 + var13, var4 + var14)) {
                  this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
                } else if (var16 != null
                    && var16.isLeaves(var1, var2 + var12, var3 + var13, var4 + var14)) {
                  this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
                } else {
                  this.b[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1;
                }
              }
            }
          }

          for (var12 = 1; var12 <= 4; ++var12) {
            for (var13 = -var7; var13 <= var7; ++var13) {
              for (var14 = -var7; var14 <= var7; ++var14) {
                for (var15 = -var7; var15 <= var7; ++var15) {
                  if (this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11]
                      == var12 - 1) {
                    if (this.b[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11]
                        == -2) {
                      this.b[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] =
                          var12;
                    }

                    if (this.b[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11]
                        == -2) {
                      this.b[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] =
                          var12;
                    }

                    if (this.b[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11]
                        == -2) {
                      this.b[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] =
                          var12;
                    }

                    if (this.b[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11]
                        == -2) {
                      this.b[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] =
                          var12;
                    }

                    if (this.b[
                            (var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)]
                        == -2) {
                      this.b[
                              (var13 + var11) * var10
                                  + (var14 + var11) * var9
                                  + (var15 + var11 - 1)] =
                          var12;
                    }

                    if (this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1]
                        == -2) {
                      this.b[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] =
                          var12;
                    }
                  }
                }
              }
            }
          }
        }

        var12 = this.b[var11 * var10 + var11 * var9 + var11];

        if (var12 >= 0) {
          var1.setRawData(var2, var3, var4, var6 & -9);
        } else {
          this.l(var1, var2, var3, var4);
        }
      }
    }
  }