public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) {
   if (!world.isStatic) {
     if (entityhuman.bx() != null && entityhuman.bx().id == Item.SHEARS.id) {
       world.setData(i, j, k, l | 8, 4);
     }
   }
 }
Exemple #2
0
  private boolean g(World world, int i, int j, int k) {
    int l = world.getData(i, j, k);
    int i1 = l;

    if (l > 0) {
      for (int j1 = 0; j1 <= 3; ++j1) {
        int k1 = 1 << j1;

        if ((l & k1) != 0
            && !this.c(world.getTypeId(i + Direction.a[j1], j, k + Direction.b[j1]))
            && (world.getTypeId(i, j + 1, k) != this.id
                || (world.getData(i, j + 1, k) & k1) == 0)) {
          i1 &= ~k1;
        }
      }
    }

    if (i1 == 0 && !this.c(world.getTypeId(i, j + 1, k))) {
      return false;
    } else {
      if (i1 != l) {
        world.setData(i, j, k, i1);
      }

      return true;
    }
  }
  private void g(World world, int i, int j, int k) {
    if (!world.isStatic) {
      int l = world.getTypeId(i, j, k - 1);
      int i1 = world.getTypeId(i, j, k + 1);
      int j1 = world.getTypeId(i - 1, j, k);
      int k1 = world.getTypeId(i + 1, j, k);
      byte b0 = 3;

      if (Block.n[l] && !Block.n[i1]) {
        b0 = 3;
      }

      if (Block.n[i1] && !Block.n[l]) {
        b0 = 2;
      }

      if (Block.n[j1] && !Block.n[k1]) {
        b0 = 5;
      }

      if (Block.n[k1] && !Block.n[j1]) {
        b0 = 4;
      }

      world.setData(i, j, k, b0);
    }
  }
Exemple #4
0
  public void dropRecord(World world, int i, int j, int k) {
    if (!world.isStatic) {
      TileEntityRecordPlayer tileentityrecordplayer =
          (TileEntityRecordPlayer) world.getTileEntity(i, j, k);

      if (tileentityrecordplayer != null) {
        ItemStack itemstack = tileentityrecordplayer.record;

        if (itemstack != null) {
          world.triggerEffect(1005, i, j, k, 0);
          world.a((String) null, i, j, k);
          tileentityrecordplayer.record = null;
          tileentityrecordplayer.update();
          world.setData(i, j, k, 0);
          float f = 0.7F;
          double d0 = (double) (world.random.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
          double d1 = (double) (world.random.nextFloat() * f) + (double) (1.0F - f) * 0.2D + 0.6D;
          double d2 = (double) (world.random.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
          ItemStack itemstack1 = itemstack.cloneItemStack();
          EntityItem entityitem =
              new EntityItem(world, (double) i + d0, (double) j + d1, (double) k + d2, itemstack1);

          entityitem.pickupDelay = 10;
          world.addEntity(entityitem);
        }
      }
    }
  }
Exemple #5
0
  /** Ticks the block if it's been scheduled */
  public void b(World var1, int var2, int var3, int var4, Random var5) {
    super.b(var1, var2, var3, var4, var5);

    if (var1.getLightLevel(var2, var3 + 1, var4) >= 9) {
      float var6 = this.n(var1, var2, var3, var4);

      if (var5.nextInt((int) (25.0F / var6) + 1) == 0) {
        int var7 = var1.getData(var2, var3, var4);

        if (var7 < 7) {
          ++var7;
          var1.setData(var2, var3, var4, var7);
        } else {
          if (var1.getTypeId(var2 - 1, var3, var4) == this.blockFruit.id) {
            return;
          }

          if (var1.getTypeId(var2 + 1, var3, var4) == this.blockFruit.id) {
            return;
          }

          if (var1.getTypeId(var2, var3, var4 - 1) == this.blockFruit.id) {
            return;
          }

          if (var1.getTypeId(var2, var3, var4 + 1) == this.blockFruit.id) {
            return;
          }

          int var8 = var5.nextInt(4);
          int var9 = var2;
          int var10 = var4;

          if (var8 == 0) {
            var9 = var2 - 1;
          }

          if (var8 == 1) {
            ++var9;
          }

          if (var8 == 2) {
            var10 = var4 - 1;
          }

          if (var8 == 3) {
            ++var10;
          }

          int var11 = var1.getTypeId(var9, var3 - 1, var10);

          if (var1.getTypeId(var9, var3, var10) == 0
              && (var11 == Block.SOIL.id || var11 == Block.DIRT.id || var11 == Block.GRASS.id)) {
            var1.setTypeId(var9, var3, var10, this.blockFruit.id);
          }
        }
      }
    }
  }
  public void grow(World world, int i, int j, int k, Random random) {
    int l = world.getData(i, j, k);

    if ((l & 8) == 0) {
      world.setData(i, j, k, l | 8, 4);
    } else {
      this.d(world, i, j, k, random);
    }
  }
  public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {
    int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;

    if (l == 0) {
      world.setData(i, j, k, 2);
    }

    if (l == 1) {
      world.setData(i, j, k, 5);
    }

    if (l == 2) {
      world.setData(i, j, k, 3);
    }

    if (l == 3) {
      world.setData(i, j, k, 4);
    }
  }
Exemple #8
0
  public void a(World world, int i, int j, int k, ItemStack itemstack) {
    if (!world.isStatic) {
      TileEntityRecordPlayer tileentityrecordplayer =
          (TileEntityRecordPlayer) world.getTileEntity(i, j, k);

      if (tileentityrecordplayer != null) {
        tileentityrecordplayer.record = itemstack.cloneItemStack();
        tileentityrecordplayer.update();
        world.setData(i, j, k, 1);
      }
    }
  }
Exemple #9
0
  public void postPlace(
      World world, int i, int j, int k, EntityLiving entityliving, ItemStack itemstack) {
    int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
    int i1 = world.getData(i, j, k) >> 2;

    ++l;
    l %= 4;
    if (l == 0) {
      world.setData(i, j, k, 2 | i1 << 2, 2);
    }

    if (l == 1) {
      world.setData(i, j, k, 3 | i1 << 2, 2);
    }

    if (l == 2) {
      world.setData(i, j, k, 0 | i1 << 2, 2);
    }

    if (l == 3) {
      world.setData(i, j, k, 1 | i1 << 2, 2);
    }
  }
Exemple #10
0
  public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {
    int l = world.getTypeId(i, j, k - 1);
    int i1 = world.getTypeId(i, j, k + 1);
    int j1 = world.getTypeId(i - 1, j, k);
    int k1 = world.getTypeId(i + 1, j, k);
    byte b0 = 0;
    int l1 = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;

    if (l1 == 0) {
      b0 = 2;
    }

    if (l1 == 1) {
      b0 = 5;
    }

    if (l1 == 2) {
      b0 = 3;
    }

    if (l1 == 3) {
      b0 = 4;
    }

    if (l != this.id && i1 != this.id && j1 != this.id && k1 != this.id) {
      world.setData(i, j, k, b0);
    } else {
      if ((l == this.id || i1 == this.id) && (b0 == 4 || b0 == 5)) {
        if (l == this.id) {
          world.setData(i, j, k - 1, b0);
        } else {
          world.setData(i, j, k + 1, b0);
        }

        world.setData(i, j, k, b0);
      }

      if ((j1 == this.id || k1 == this.id) && (b0 == 2 || b0 == 3)) {
        if (j1 == this.id) {
          world.setData(i - 1, j, k, b0);
        } else {
          world.setData(i + 1, j, k, b0);
        }

        world.setData(i, j, k, b0);
      }
    }
  }
Exemple #11
0
  public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) {
    byte b0 = 0;
    int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;

    if (l == 0) {
      b0 = 2;
    }

    if (l == 1) {
      b0 = 5;
    }

    if (l == 2) {
      b0 = 3;
    }

    if (l == 3) {
      b0 = 4;
    }

    world.setData(i, j, k, b0);
  }
Exemple #12
0
  public void postPlace(World world, int i, int j, int k, int l) {
    byte b0 = 0;

    switch (l) {
      case 2:
        b0 = 1;
        break;

      case 3:
        b0 = 4;
        break;

      case 4:
        b0 = 8;
        break;

      case 5:
        b0 = 2;
    }

    if (b0 != 0) {
      world.setData(i, j, k, b0);
    }
  }
  private void a(World world, int i, int j, int k, int l, int i1, int j1) {
    int k1 = world.getData(i, j, k);
    int l1 = 0;

    this.a = false;
    boolean flag = world.isBlockIndirectlyPowered(i, j, k);

    this.a = true;

    if (flag) {
      l1 = 15;
    } else {
      for (int i2 = 0; i2 < 4; i2++) {
        int j2 = i;
        int k2 = k;
        if (i2 == 0) {
          j2 = i - 1;
        }

        if (i2 == 1) {
          j2++;
        }

        if (i2 == 2) {
          k2 = k - 1;
        }

        if (i2 == 3) {
          k2++;
        }

        if ((j2 != l) || (j != i1) || (k2 != j1)) {
          l1 = getPower(world, j2, j, k2, l1);
        }

        if ((world.s(j2, j, k2)) && (!world.s(i, j + 1, k))) {
          if ((j2 != l) || (j + 1 != i1) || (k2 != j1)) l1 = getPower(world, j2, j + 1, k2, l1);
        } else if ((!world.s(j2, j, k2)) && ((j2 != l) || (j - 1 != i1) || (k2 != j1))) {
          l1 = getPower(world, j2, j - 1, k2, l1);
        }
      }

      if (l1 > 0) l1--;
      else {
        l1 = 0;
      }
    }

    if (k1 != l1) {
      BlockRedstoneEvent event =
          new BlockRedstoneEvent(world.getWorld().getBlockAt(i, j, k), k1, l1);
      world.getServer().getPluginManager().callEvent(event);

      l1 = event.getNewCurrent();
    }

    if (k1 != l1) {
      world.suppressPhysics = true;
      world.setData(i, j, k, l1);
      world.d(i, j, k, i, j, k);
      world.suppressPhysics = false;

      for (int i2 = 0; i2 < 4; i2++) {
        int j2 = i;
        int k2 = k;
        int l2 = j - 1;

        if (i2 == 0) {
          j2 = i - 1;
        }

        if (i2 == 1) {
          j2++;
        }

        if (i2 == 2) {
          k2 = k - 1;
        }

        if (i2 == 3) {
          k2++;
        }

        if (world.s(j2, j, k2)) {
          l2 += 2;
        }

        boolean flag1 = false;
        int i3 = getPower(world, j2, j, k2, -1);

        l1 = world.getData(i, j, k);
        if (l1 > 0) {
          l1--;
        }

        if ((i3 >= 0) && (i3 != l1)) {
          a(world, j2, j, k2, i, j, k);
        }

        i3 = getPower(world, j2, l2, k2, -1);
        l1 = world.getData(i, j, k);
        if (l1 > 0) {
          l1--;
        }

        if ((i3 >= 0) && (i3 != l1)) {
          a(world, j2, l2, k2, i, j, k);
        }
      }

      if ((k1 < l1) || (l1 == 0)) {
        this.b.add(new ChunkPosition(i, j, k));
        this.b.add(new ChunkPosition(i - 1, j, k));
        this.b.add(new ChunkPosition(i + 1, j, k));
        this.b.add(new ChunkPosition(i, j - 1, k));
        this.b.add(new ChunkPosition(i, j + 1, k));
        this.b.add(new ChunkPosition(i, j, k - 1));
        this.b.add(new ChunkPosition(i, j, k + 1));
      }
    }
  }
Exemple #14
0
  public void b(World world, int i, int j, int k) {
    if (!world.isStatic) {
      int l = world.getTypeId(i, j, k - 1);
      int i1 = world.getTypeId(i, j, k + 1);
      int j1 = world.getTypeId(i - 1, j, k);
      int k1 = world.getTypeId(i + 1, j, k);
      boolean flag = true;
      int l1;
      int i2;
      boolean flag1;
      byte b0;
      int j2;

      if (l != this.id && i1 != this.id) {
        if (j1 != this.id && k1 != this.id) {
          b0 = 3;
          if (Block.o[l] && !Block.o[i1]) {
            b0 = 3;
          }

          if (Block.o[i1] && !Block.o[l]) {
            b0 = 2;
          }

          if (Block.o[j1] && !Block.o[k1]) {
            b0 = 5;
          }

          if (Block.o[k1] && !Block.o[j1]) {
            b0 = 4;
          }
        } else {
          l1 = world.getTypeId(j1 == this.id ? i - 1 : i + 1, j, k - 1);
          i2 = world.getTypeId(j1 == this.id ? i - 1 : i + 1, j, k + 1);
          b0 = 3;
          flag1 = true;
          if (j1 == this.id) {
            j2 = world.getData(i - 1, j, k);
          } else {
            j2 = world.getData(i + 1, j, k);
          }

          if (j2 == 2) {
            b0 = 2;
          }

          if ((Block.o[l] || Block.o[l1]) && !Block.o[i1] && !Block.o[i2]) {
            b0 = 3;
          }

          if ((Block.o[i1] || Block.o[i2]) && !Block.o[l] && !Block.o[l1]) {
            b0 = 2;
          }
        }
      } else {
        l1 = world.getTypeId(i - 1, j, l == this.id ? k - 1 : k + 1);
        i2 = world.getTypeId(i + 1, j, l == this.id ? k - 1 : k + 1);
        b0 = 5;
        flag1 = true;
        if (l == this.id) {
          j2 = world.getData(i, j, k - 1);
        } else {
          j2 = world.getData(i, j, k + 1);
        }

        if (j2 == 4) {
          b0 = 4;
        }

        if ((Block.o[j1] || Block.o[l1]) && !Block.o[k1] && !Block.o[i2]) {
          b0 = 5;
        }

        if ((Block.o[k1] || Block.o[i2]) && !Block.o[j1] && !Block.o[l1]) {
          b0 = 4;
        }
      }

      world.setData(i, j, k, b0);
    }
  }
Exemple #15
0
  public boolean interactWith(
      ItemStack itemstack,
      EntityHuman entityhuman,
      World world,
      int i,
      int j,
      int k,
      int l,
      float f,
      float f1,
      float f2) {
    if (!entityhuman.a(i, j, k, l, itemstack)) {
      return false;
    } else {
      int i1;
      int j1;
      int k1;

      if (itemstack.getData() == 15) {
        i1 = world.getTypeId(i, j, k);
        if (i1 == Block.SAPLING.id) {
          if (!world.isStatic) {
            // CraftBukkit start
            Player player =
                (entityhuman instanceof EntityPlayer)
                    ? (Player) entityhuman.getBukkitEntity()
                    : null;
            ((BlockSapling) Block.SAPLING)
                .grow(world, i, j, k, world.random, true, player, itemstack);
            // --itemstack.count; - called later if the bonemeal attempt was succesful
            // CraftBukkit end
          }

          return true;
        }

        if (i1 == Block.BROWN_MUSHROOM.id || i1 == Block.RED_MUSHROOM.id) {
          // CraftBukkit start
          if (!world.isStatic) {
            Player player =
                (entityhuman instanceof EntityPlayer)
                    ? (Player) entityhuman.getBukkitEntity()
                    : null;
            ((BlockMushroom) Block.byId[i1])
                .grow(world, i, j, k, world.random, true, player, itemstack);
            // --itemstack.count; - called later if the bonemeal attempt was succesful
            // CraftBukkit end
          }

          return true;
        }

        if (i1 == Block.MELON_STEM.id || i1 == Block.PUMPKIN_STEM.id) {
          if (world.getData(i, j, k) == 7) {
            return false;
          }

          if (!world.isStatic) {
            ((BlockStem) Block.byId[i1]).l(world, i, j, k);
            --itemstack.count;
          }

          return true;
        }

        if (i1 > 0 && Block.byId[i1] instanceof BlockCrops) {
          if (world.getData(i, j, k) == 7) {
            return false;
          }

          if (!world.isStatic) {
            ((BlockCrops) Block.byId[i1]).c_(world, i, j, k);
            --itemstack.count;
          }

          return true;
        }

        if (i1 == Block.COCOA.id) {
          if (!world.isStatic) {
            world.setData(i, j, k, 8 | BlockDirectional.e(world.getData(i, j, k)));
            --itemstack.count;
          }

          return true;
        }

        if (i1 == Block.GRASS.id) {
          if (!world.isStatic) {
            --itemstack.count;

            label133:
            for (j1 = 0; j1 < 128; ++j1) {
              k1 = i;
              int l1 = j + 1;
              int i2 = k;

              for (int j2 = 0; j2 < j1 / 16; ++j2) {
                k1 += d.nextInt(3) - 1;
                l1 += (d.nextInt(3) - 1) * d.nextInt(3) / 2;
                i2 += d.nextInt(3) - 1;
                if (world.getTypeId(k1, l1 - 1, i2) != Block.GRASS.id || world.t(k1, l1, i2)) {
                  continue label133;
                }
              }

              if (world.getTypeId(k1, l1, i2) == 0) {
                if (d.nextInt(10) != 0) {
                  if (Block.LONG_GRASS.d(world, k1, l1, i2)) {
                    world.setTypeIdAndData(k1, l1, i2, Block.LONG_GRASS.id, 1);
                  }
                } else if (d.nextInt(3) != 0) {
                  if (Block.YELLOW_FLOWER.d(world, k1, l1, i2)) {
                    world.setTypeId(k1, l1, i2, Block.YELLOW_FLOWER.id);
                  }
                } else if (Block.RED_ROSE.d(world, k1, l1, i2)) {
                  world.setTypeId(k1, l1, i2, Block.RED_ROSE.id);
                }
              }
            }
          }

          return true;
        }
      } else if (itemstack.getData() == 3) {
        i1 = world.getTypeId(i, j, k);
        j1 = world.getData(i, j, k);
        if (i1 == Block.LOG.id && BlockLog.e(j1) == 3) {
          if (l == 0) {
            return false;
          }

          if (l == 1) {
            return false;
          }

          if (l == 2) {
            --k;
          }

          if (l == 3) {
            ++k;
          }

          if (l == 4) {
            --i;
          }

          if (l == 5) {
            ++i;
          }

          if (world.isEmpty(i, j, k)) {
            k1 = Block.byId[Block.COCOA.id].getPlacedData(world, i, j, k, l, f, f1, f2, 0);
            world.setTypeIdAndData(i, j, k, Block.COCOA.id, k1);
            if (!entityhuman.abilities.canInstantlyBuild) {
              --itemstack.count;
            }
          }

          return true;
        }
      }

      return false;
    }
  }
  public void onPlace(World world, int i, int j, int k) {
    int l = world.w(i, j - 1, k) ? 0 : 2;

    world.setData(i, j, k, l, 3);
    this.d(world, i, j, k, l);
  }
Exemple #17
0
 public void l(World var1, int var2, int var3, int var4) {
   var1.setData(var2, var3, var4, 7);
 }
  private void a(World world, int i, int j, int k, int l, int i1, int j1) {
    int k1 = world.getData(i, j, k);
    int l1 = 0;

    this.a = false;
    boolean flag = world.isBlockIndirectlyPowered(i, j, k);

    this.a = true;
    int i2;
    int j2;
    int k2;

    if (flag) {
      l1 = 15;
    } else {
      for (i2 = 0; i2 < 4; ++i2) {
        j2 = i;
        k2 = k;
        if (i2 == 0) {
          j2 = i - 1;
        }

        if (i2 == 1) {
          ++j2;
        }

        if (i2 == 2) {
          k2 = k - 1;
        }

        if (i2 == 3) {
          ++k2;
        }

        if (j2 != l || j != i1 || k2 != j1) {
          l1 = this.getPower(world, j2, j, k2, l1);
        }

        if (world.t(j2, j, k2) && !world.t(i, j + 1, k)) {
          if (j2 != l || j + 1 != i1 || k2 != j1) {
            l1 = this.getPower(world, j2, j + 1, k2, l1);
          }
        } else if (!world.t(j2, j, k2) && (j2 != l || j - 1 != i1 || k2 != j1)) {
          l1 = this.getPower(world, j2, j - 1, k2, l1);
        }
      }

      if (l1 > 0) {
        --l1;
      } else {
        l1 = 0;
      }
    }

    // CraftBukkit start
    if (k1 != l1) {
      BlockRedstoneEvent event =
          new BlockRedstoneEvent(world.getWorld().getBlockAt(i, j, k), k1, l1);
      world.getServer().getPluginManager().callEvent(event);

      l1 = event.getNewCurrent();
    }
    // CraftBukkit end

    if (k1 != l1) {
      world.suppressPhysics = true;
      world.setData(i, j, k, l1);
      world.e(i, j, k, i, j, k);
      world.suppressPhysics = false;

      for (i2 = 0; i2 < 4; ++i2) {
        j2 = i;
        k2 = k;
        int l2 = j - 1;

        if (i2 == 0) {
          j2 = i - 1;
        }

        if (i2 == 1) {
          ++j2;
        }

        if (i2 == 2) {
          k2 = k - 1;
        }

        if (i2 == 3) {
          ++k2;
        }

        if (world.t(j2, j, k2)) {
          l2 += 2;
        }

        boolean flag1 = false;
        int i3 = this.getPower(world, j2, j, k2, -1);

        l1 = world.getData(i, j, k);
        if (l1 > 0) {
          --l1;
        }

        if (i3 >= 0 && i3 != l1) {
          this.a(world, j2, j, k2, i, j, k);
        }

        i3 = this.getPower(world, j2, l2, k2, -1);
        l1 = world.getData(i, j, k);
        if (l1 > 0) {
          --l1;
        }

        if (i3 >= 0 && i3 != l1) {
          this.a(world, j2, l2, k2, i, j, k);
        }
      }

      if (k1 < l1 || l1 == 0) {
        this.b.add(new ChunkPosition(i, j, k));
        this.b.add(new ChunkPosition(i - 1, j, k));
        this.b.add(new ChunkPosition(i + 1, j, k));
        this.b.add(new ChunkPosition(i, j - 1, k));
        this.b.add(new ChunkPosition(i, j + 1, k));
        this.b.add(new ChunkPosition(i, j, k - 1));
        this.b.add(new ChunkPosition(i, j, k + 1));
      }
    }
  }
  private void k(World world, int i, int j, int k) {
    int l = world.getData(i, j, k);
    boolean flag = (l & 1) == 1;
    boolean flag1 = false;
    List list =
        world.getEntities(
            (Entity) null,
            AxisAlignedBB.a()
                .a(
                    (double) i + this.minX,
                    (double) j + this.minY,
                    (double) k + this.minZ,
                    (double) i + this.maxX,
                    (double) j + this.maxY,
                    (double) k + this.maxZ));

    if (!list.isEmpty()) {
      Iterator iterator = list.iterator();

      while (iterator.hasNext()) {
        Entity entity = (Entity) iterator.next();

        if (!entity.at()) {
          flag1 = true;
          break;
        }
      }
    }

    // CraftBukkit start - Call interact even when triggering connected tripwire
    if (flag != flag1 && flag1 && (world.getData(i, j, k) & 4) == 4) {
      org.bukkit.World bworld = world.getWorld();
      org.bukkit.plugin.PluginManager manager = world.getServer().getPluginManager();
      org.bukkit.block.Block block = bworld.getBlockAt(i, j, k);
      boolean allowed = false;

      // If all of the events are cancelled block the tripwire trigger, else allow
      for (Object object : list) {
        if (object != null) {
          org.bukkit.event.Cancellable cancellable;

          if (object instanceof EntityHuman) {
            cancellable =
                org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(
                    (EntityHuman) object,
                    org.bukkit.event.block.Action.PHYSICAL,
                    i,
                    j,
                    k,
                    -1,
                    null);
          } else if (object instanceof Entity) {
            cancellable = new EntityInteractEvent(((Entity) object).getBukkitEntity(), block);
            manager.callEvent((EntityInteractEvent) cancellable);
          } else {
            continue;
          }

          if (!cancellable.isCancelled()) {
            allowed = true;
            break;
          }
        }
      }

      if (!allowed) {
        return;
      }
    }
    // CraftBukkit end

    if (flag1 && !flag) {
      l |= 1;
    }

    if (!flag1 && flag) {
      l &= -2;
    }

    if (flag1 != flag) {
      world.setData(i, j, k, l, 3);
      this.d(world, i, j, k, l);
    }

    if (flag1) {
      world.a(i, j, k, this.id, this.a(world));
    }
  }
Exemple #20
0
  public void a(World world, int i, int j, int k, Random random) {
    if (!world.isStatic && world.random.nextInt(16) == 0) {
      byte b0 = 4;
      int l = 5;
      boolean flag = false;

      int i1;
      int j1;
      int k1;

      label138:
      for (i1 = i - b0; i1 <= i + b0; ++i1) {
        for (j1 = k - b0; j1 <= k + b0; ++j1) {
          for (k1 = j - 1; k1 <= j + 1; ++k1) {
            if (world.getTypeId(i1, k1, j1) == this.id) {
              --l;
              if (l <= 0) {
                flag = true;
                break label138;
              }
            }
          }
        }
      }

      i1 = world.getData(i, j, k);
      j1 = world.random.nextInt(6);
      k1 = Direction.d[j1];
      int l1;
      int i2;

      if (j1 == 1) {
        world.getClass();
        if (j < 128 - 1 && world.isEmpty(i, j + 1, k)) {
          if (flag) {
            return;
          }

          l1 = world.random.nextInt(16) & i1;
          if (l1 > 0) {
            for (i2 = 0; i2 <= 3; ++i2) {
              if (!this.c(world.getTypeId(i + Direction.a[i2], j + 1, k + Direction.b[i2]))) {
                l1 &= ~(1 << i2);
              }
            }

            if (l1 > 0) {
              world.setTypeIdAndData(i, j + 1, k, this.id, l1);
              return;
            }
          }

          return;
        }
      }

      int j2;

      if (j1 >= 2 && j1 <= 5 && (i1 & 1 << k1) == 0) {
        if (flag) {
          return;
        }

        l1 = world.getTypeId(i + Direction.a[k1], j, k + Direction.b[k1]);
        if (l1 != 0 && Block.byId[l1] != null) {
          if (Block.byId[l1].material.j() && Block.byId[l1].b()) {
            world.setData(i, j, k, i1 | 1 << k1);
          }
        } else {
          i2 = k1 + 1 & 3;
          j2 = k1 + 3 & 3;
          if ((i1 & 1 << i2) != 0
              && this.c(
                  world.getTypeId(
                      i + Direction.a[k1] + Direction.a[i2],
                      j,
                      k + Direction.b[k1] + Direction.b[i2]))) {
            world.setTypeIdAndData(i + Direction.a[k1], j, k + Direction.b[k1], this.id, 1 << i2);
          } else if ((i1 & 1 << j2) != 0
              && this.c(
                  world.getTypeId(
                      i + Direction.a[k1] + Direction.a[j2],
                      j,
                      k + Direction.b[k1] + Direction.b[j2]))) {
            world.setTypeIdAndData(i + Direction.a[k1], j, k + Direction.b[k1], this.id, 1 << j2);
          } else if ((i1 & 1 << i2) != 0
              && world.isEmpty(
                  i + Direction.a[k1] + Direction.a[i2], j, k + Direction.b[k1] + Direction.b[i2])
              && this.c(world.getTypeId(i + Direction.a[i2], j, k + Direction.b[i2]))) {
            world.setTypeIdAndData(
                i + Direction.a[k1] + Direction.a[i2],
                j,
                k + Direction.b[k1] + Direction.b[i2],
                this.id,
                1 << (k1 + 2 & 3));
          } else if ((i1 & 1 << j2) != 0
              && world.isEmpty(
                  i + Direction.a[k1] + Direction.a[j2], j, k + Direction.b[k1] + Direction.b[j2])
              && this.c(world.getTypeId(i + Direction.a[j2], j, k + Direction.b[j2]))) {
            world.setTypeIdAndData(
                i + Direction.a[k1] + Direction.a[j2],
                j,
                k + Direction.b[k1] + Direction.b[j2],
                this.id,
                1 << (k1 + 2 & 3));
          } else if (this.c(world.getTypeId(i + Direction.a[k1], j + 1, k + Direction.b[k1]))) {
            world.setTypeIdAndData(i + Direction.a[k1], j, k + Direction.b[k1], this.id, 0);
          }
        }
      } else if (j > 1) {
        l1 = world.getTypeId(i, j - 1, k);
        if (l1 == 0) {
          i2 = world.random.nextInt(16) & i1;
          if (i2 > 0) {
            world.setTypeIdAndData(i, j - 1, k, this.id, i2);
          }
        } else if (l1 == this.id) {
          i2 = world.random.nextInt(16) & i1;
          j2 = world.getData(i, j - 1, k);
          if (j2 != (j2 | i2)) {
            world.setData(i, j - 1, k, j2 | i2);
          }
        }
      }
    }
  }
 public void g(World world, int i, int j, int k) {
   world.setData(i, j, k, 7);
 }
  private void g(World world, int i, int j, int k) {
    boolean flag = world.getData(i, j, k) == 1;
    boolean flag1 = false;
    float f = 0.125F;
    List list = null;

    if (this.a == EnumMobType.EVERYTHING) {
      list =
          world.b(
              (Entity) null,
              AxisAlignedBB.b(
                  (double) ((float) i + f),
                  (double) j,
                  (double) ((float) k + f),
                  (double) ((float) (i + 1) - f),
                  (double) j + 0.25D,
                  (double) ((float) (k + 1) - f)));
    }

    if (this.a == EnumMobType.MOBS) {
      list =
          world.a(
              EntityLiving.class,
              AxisAlignedBB.b(
                  (double) ((float) i + f),
                  (double) j,
                  (double) ((float) k + f),
                  (double) ((float) (i + 1) - f),
                  (double) j + 0.25D,
                  (double) ((float) (k + 1) - f)));
    }

    if (this.a == EnumMobType.PLAYERS) {
      list =
          world.a(
              EntityHuman.class,
              AxisAlignedBB.b(
                  (double) ((float) i + f),
                  (double) j,
                  (double) ((float) k + f),
                  (double) ((float) (i + 1) - f),
                  (double) j + 0.25D,
                  (double) ((float) (k + 1) - f)));
    }

    if (list.size() > 0) {
      flag1 = true;
    }

    // CraftBukkit start - Interact Pressure Plate
    org.bukkit.World bworld = world.getWorld();
    org.bukkit.plugin.PluginManager manager = world.getServer().getPluginManager();

    if (flag != flag1) {
      if (flag1) {
        for (Object object : list) {
          if (object != null) {
            org.bukkit.event.Cancellable cancellable;

            if (object instanceof EntityHuman) {
              cancellable =
                  CraftEventFactory.callPlayerInteractEvent(
                      (EntityHuman) object,
                      org.bukkit.event.block.Action.PHYSICAL,
                      i,
                      j,
                      k,
                      -1,
                      null);
            } else if (object instanceof Entity) {
              cancellable =
                  new EntityInteractEvent(
                      ((Entity) object).getBukkitEntity(), bworld.getBlockAt(i, j, k));
              manager.callEvent((EntityInteractEvent) cancellable);
            } else {
              continue;
            }
            if (cancellable.isCancelled()) {
              return;
            }
          }
        }
      }

      BlockRedstoneEvent eventRedstone =
          new BlockRedstoneEvent(bworld.getBlockAt(i, j, k), flag ? 1 : 0, flag1 ? 1 : 0);
      manager.callEvent(eventRedstone);

      flag1 = eventRedstone.getNewCurrent() > 0;
    }
    // CraftBukkit end

    if (flag1 && !flag) {
      world.setData(i, j, k, 1);
      world.applyPhysics(i, j, k, this.id);
      world.applyPhysics(i, j - 1, k, this.id);
      world.b(i, j, k, i, j, k);
      world.makeSound(
          (double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.6F);
    }

    if (!flag1 && flag) {
      world.setData(i, j, k, 0);
      world.applyPhysics(i, j, k, this.id);
      world.applyPhysics(i, j - 1, k, this.id);
      world.b(i, j, k, i, j, k);
      world.makeSound(
          (double) i + 0.5D, (double) j + 0.1D, (double) k + 0.5D, "random.click", 0.3F, 0.5F);
    }

    if (flag1) {
      world.c(i, j, k, this.id, this.d());
    }
  }