Exemplo n.º 1
0
  /** This method attempts to create a wither at the given location and skull */
  public void makeWither(
      World par1World, int par2, int par3, int par4, TileEntitySkull par5TileEntitySkull) {
    if (par5TileEntitySkull.func_82117_a() == 1 && par3 >= 2 && par1World.difficultySetting > 0) {
      int var6 = Block.slowSand.blockID;
      int var7;
      EntityWither var8;
      int var9;

      for (var7 = -2; var7 <= 0; ++var7) {
        if (par1World.getBlockId(par2, par3 - 1, par4 + var7) == var6
            && par1World.getBlockId(par2, par3 - 1, par4 + var7 + 1) == var6
            && par1World.getBlockId(par2, par3 - 2, par4 + var7 + 1) == var6
            && par1World.getBlockId(par2, par3 - 1, par4 + var7 + 2) == var6
            && this.func_82528_d(par1World, par2, par3, par4 + var7, 1)
            && this.func_82528_d(par1World, par2, par3, par4 + var7 + 1, 1)
            && this.func_82528_d(par1World, par2, par3, par4 + var7 + 2, 1)) {
          par1World.setBlockMetadata(par2, par3, par4 + var7, 8);
          par1World.setBlockMetadata(par2, par3, par4 + var7 + 1, 8);
          par1World.setBlockMetadata(par2, par3, par4 + var7 + 2, 8);
          par1World.setBlock(par2, par3, par4 + var7, 0);
          par1World.setBlock(par2, par3, par4 + var7 + 1, 0);
          par1World.setBlock(par2, par3, par4 + var7 + 2, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7 + 1, 0);
          par1World.setBlock(par2, par3 - 1, par4 + var7 + 2, 0);
          par1World.setBlock(par2, par3 - 2, par4 + var7 + 1, 0);

          if (!par1World.isRemote) {
            var8 = new EntityWither(par1World);
            var8.setLocationAndAngles(
                (double) par2 + 0.5D,
                (double) par3 - 1.45D,
                (double) (par4 + var7) + 1.5D,
                90.0F,
                0.0F);
            var8.renderYawOffset = 90.0F;
            var8.func_82206_m();
            par1World.spawnEntityInWorld(var8);
          }

          for (var9 = 0; var9 < 120; ++var9) {
            par1World.spawnParticle(
                "snowballpoof",
                (double) par2 + par1World.rand.nextDouble(),
                (double) (par3 - 2) + par1World.rand.nextDouble() * 3.9D,
                (double) (par4 + var7 + 1) + par1World.rand.nextDouble(),
                0.0D,
                0.0D,
                0.0D);
          }

          par1World.notifyBlockChange(par2, par3, par4 + var7, 0);
          par1World.notifyBlockChange(par2, par3, par4 + var7 + 1, 0);
          par1World.notifyBlockChange(par2, par3, par4 + var7 + 2, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7 + 1, 0);
          par1World.notifyBlockChange(par2, par3 - 1, par4 + var7 + 2, 0);
          par1World.notifyBlockChange(par2, par3 - 2, par4 + var7 + 1, 0);
          return;
        }
      }

      for (var7 = -2; var7 <= 0; ++var7) {
        if (par1World.getBlockId(par2 + var7, par3 - 1, par4) == var6
            && par1World.getBlockId(par2 + var7 + 1, par3 - 1, par4) == var6
            && par1World.getBlockId(par2 + var7 + 1, par3 - 2, par4) == var6
            && par1World.getBlockId(par2 + var7 + 2, par3 - 1, par4) == var6
            && this.func_82528_d(par1World, par2 + var7, par3, par4, 1)
            && this.func_82528_d(par1World, par2 + var7 + 1, par3, par4, 1)
            && this.func_82528_d(par1World, par2 + var7 + 2, par3, par4, 1)) {
          par1World.setBlockMetadata(par2 + var7, par3, par4, 8);
          par1World.setBlockMetadata(par2 + var7 + 1, par3, par4, 8);
          par1World.setBlockMetadata(par2 + var7 + 2, par3, par4, 8);
          par1World.setBlock(par2 + var7, par3, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3, par4, 0);
          par1World.setBlock(par2 + var7 + 2, par3, par4, 0);
          par1World.setBlock(par2 + var7, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 2, par3 - 1, par4, 0);
          par1World.setBlock(par2 + var7 + 1, par3 - 2, par4, 0);

          if (!par1World.isRemote) {
            var8 = new EntityWither(par1World);
            var8.setLocationAndAngles(
                (double) (par2 + var7) + 1.5D,
                (double) par3 - 1.45D,
                (double) par4 + 0.5D,
                0.0F,
                0.0F);
            var8.func_82206_m();
            par1World.spawnEntityInWorld(var8);
          }

          for (var9 = 0; var9 < 120; ++var9) {
            par1World.spawnParticle(
                "snowballpoof",
                (double) (par2 + var7 + 1) + par1World.rand.nextDouble(),
                (double) (par3 - 2) + par1World.rand.nextDouble() * 3.9D,
                (double) par4 + par1World.rand.nextDouble(),
                0.0D,
                0.0D,
                0.0D);
          }

          par1World.notifyBlockChange(par2 + var7, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 2, par3, par4, 0);
          par1World.notifyBlockChange(par2 + var7, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 2, par3 - 1, par4, 0);
          par1World.notifyBlockChange(par2 + var7 + 1, par3 - 2, par4, 0);
          return;
        }
      }
    }
  }