Example #1
0
  public boolean interactWith(
      ItemStack itemstack,
      EntityHuman entityhuman,
      World world,
      BlockPosition blockposition,
      EnumDirection enumdirection,
      float f,
      float f1,
      float f2) {
    if (world.isClientSide) {
      return true;
    } else {
      blockposition = blockposition.shift(enumdirection);
      if (!entityhuman.a(blockposition, enumdirection, itemstack)) {
        return false;
      } else {
        if (world.getType(blockposition).getBlock().getMaterial() == Material.AIR) {
          world.makeSound(
              (double) blockposition.getX() + 0.5D,
              (double) blockposition.getY() + 0.5D,
              (double) blockposition.getZ() + 0.5D,
              "item.fireCharge.use",
              1.0F,
              (ItemFireball.g.nextFloat() - ItemFireball.g.nextFloat()) * 0.2F + 1.0F);
          world.setTypeUpdate(blockposition, Blocks.FIRE.getBlockData());
        }

        if (!entityhuman.abilities.canInstantlyBuild) {
          --itemstack.count;
        }

        return true;
      }
    }
  }
  public boolean generate(World world, Random random, BlockPosition blockposition) {
    while (world.isEmpty(blockposition) && blockposition.getY() > 2) {
      blockposition = blockposition.down();
    }

    if (world.getType(blockposition).getBlock() != Blocks.SNOW) {
      return false;
    } else {
      int i = random.nextInt(this.b - 2) + 2;
      byte b0 = 1;

      for (int j = blockposition.getX() - i; j <= blockposition.getX() + i; ++j) {
        for (int k = blockposition.getZ() - i; k <= blockposition.getZ() + i; ++k) {
          int l = j - blockposition.getX();
          int i1 = k - blockposition.getZ();

          if (l * l + i1 * i1 <= i * i) {
            for (int j1 = blockposition.getY() - b0; j1 <= blockposition.getY() + b0; ++j1) {
              BlockPosition blockposition1 = new BlockPosition(j, j1, k);
              Block block = world.getType(blockposition1).getBlock();

              if (block == Blocks.DIRT || block == Blocks.SNOW || block == Blocks.ICE) {
                world.setTypeAndData(blockposition1, this.a.getBlockData(), 2);
              }
            }
          }
        }
      }

      return true;
    }
  }
  public void d(World world, BlockPosition blockposition) {
    if (!world.worldProvider.o()) {
      IBlockData iblockdata = world.getType(blockposition);
      int i = world.b(EnumSkyBlock.SKY, blockposition) - world.ab();
      float f = world.d(1.0F);
      float f1 = f < 3.1415927F ? 0.0F : 6.2831855F;

      f += (f1 - f) * 0.2F;
      i = Math.round((float) i * MathHelper.cos(f));
      i = MathHelper.clamp(i, 0, 15);
      if (this.b) {
        i = 15 - i;
      }

      if (((Integer) iblockdata.get(BlockDaylightDetector.POWER)).intValue() != i) {
        i =
            org.bukkit.craftbukkit.event.CraftEventFactory.callRedstoneChange(
                    world,
                    blockposition.getX(),
                    blockposition.getY(),
                    blockposition.getZ(),
                    ((Integer) iblockdata.get(POWER)),
                    i)
                .getNewCurrent(); // CraftBukkit - Call BlockRedstoneEvent
        world.setTypeAndData(
            blockposition, iblockdata.set(BlockDaylightDetector.POWER, Integer.valueOf(i)), 3);
      }
    }
  }
Example #4
0
  public void a(
      World world, BlockPosition blockposition, IBlockData iblockdata, EntityLiving entityliving) {
    if (!world.isClientSide) {
      if (((Boolean) iblockdata.get(BlockTNT.EXPLODE)).booleanValue()) {
        EntityTNTPrimed entitytntprimed =
            new EntityTNTPrimed(
                world,
                (double) ((float) blockposition.getX() + 0.5F),
                (double) blockposition.getY(),
                (double) ((float) blockposition.getZ() + 0.5F),
                entityliving);

        world.addEntity(entitytntprimed);
        world.a(
            (EntityHuman) null,
            entitytntprimed.locX,
            entitytntprimed.locY,
            entitytntprimed.locZ,
            SoundEffects.gV,
            SoundCategory.BLOCKS,
            1.0F,
            1.0F);
      }
    }
  }
Example #5
0
 private Set<EnumDirection> f(World world, BlockPosition blockposition) {
   int i = 1000;
   EnumSet enumset = EnumSet.noneOf(EnumDirection.class);
   Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator();
   while (iterator.hasNext()) {
     EnumDirection enumdirection = (EnumDirection) iterator.next();
     BlockPosition blockposition1 = blockposition.shift(enumdirection);
     IBlockData iblockdata = world.getType(blockposition1);
     if ((!g(world, blockposition1, iblockdata))
         && ((iblockdata.getBlock().getMaterial() != this.material)
             || (((Integer) iblockdata.get(LEVEL)).intValue() > 0))) {
       int j;
       int j;
       if (g(world, blockposition1.down(), world.getType(blockposition1.down()))) {
         j = a(world, blockposition1, 1, enumdirection.opposite());
       } else {
         j = 0;
       }
       if (j < i) {
         enumset.clear();
       }
       if (j <= i) {
         enumset.add(enumdirection);
         i = j;
       }
     }
   }
   return enumset;
 }
Example #6
0
 private int a(World world, BlockPosition blockposition, int i, EnumDirection enumdirection) {
   int j = 1000;
   Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator();
   while (iterator.hasNext()) {
     EnumDirection enumdirection1 = (EnumDirection) iterator.next();
     if (enumdirection1 != enumdirection) {
       BlockPosition blockposition1 = blockposition.shift(enumdirection1);
       IBlockData iblockdata = world.getType(blockposition1);
       if ((!g(world, blockposition1, iblockdata))
           && ((iblockdata.getBlock().getMaterial() != this.material)
               || (((Integer) iblockdata.get(LEVEL)).intValue() > 0))) {
         if (!g(world, blockposition1.down(), iblockdata)) {
           return i;
         }
         if (i < 4) {
           int k = a(world, blockposition1, i + 1, enumdirection1.opposite());
           if (k < j) {
             j = k;
           }
         }
       }
     }
   }
   return j;
 }
Example #7
0
 public void setPositionRotation(BlockPosition blockposition, float f, float f1) {
   this.setPositionRotation(
       (double) blockposition.getX() + 0.5D,
       (double) blockposition.getY(),
       (double) blockposition.getZ() + 0.5D,
       f,
       f1);
 }
  private void a(boolean var1) {
    class_aqk var2 = new class_aqk(var1);

    BlockPosition var3;
    for (var3 = this.d.r(class_aqk.a).down();
        this.d.getType(var3).getBlock() == Blocks.BEDROCK && var3.getY() > this.d.G();
        var3 = var3.down()) {;
    }

    var2.generate(this.d, new Random(), var3);
  }
Example #9
0
  public float c(float f) {
    BlockPosition blockposition = new BlockPosition(this.locX, 0.0D, this.locZ);

    if (this.world.isLoaded(blockposition)) {
      double d0 = (this.getBoundingBox().e - this.getBoundingBox().b) * 0.66D;
      int i = MathHelper.floor(this.locY + d0);

      return this.world.o(blockposition.up(i));
    } else {
      return 0.0F;
    }
  }
Example #10
0
  protected void checkBlockCollisions() {
    BlockPosition blockposition =
        new BlockPosition(
            this.getBoundingBox().a + 0.001D,
            this.getBoundingBox().b + 0.001D,
            this.getBoundingBox().c + 0.001D);
    BlockPosition blockposition1 =
        new BlockPosition(
            this.getBoundingBox().d - 0.001D,
            this.getBoundingBox().e - 0.001D,
            this.getBoundingBox().f - 0.001D);

    if (this.world.areChunksLoadedBetween(blockposition, blockposition1)) {
      for (int i = blockposition.getX(); i <= blockposition1.getX(); ++i) {
        for (int j = blockposition.getY(); j <= blockposition1.getY(); ++j) {
          for (int k = blockposition.getZ(); k <= blockposition1.getZ(); ++k) {
            BlockPosition blockposition2 = new BlockPosition(i, j, k);
            IBlockData iblockdata = this.world.getType(blockposition2);

            try {
              iblockdata.getBlock().a(this.world, blockposition2, iblockdata, this);
            } catch (Throwable throwable) {
              CrashReport crashreport = CrashReport.a(throwable, "Colliding entity with block");
              CrashReportSystemDetails crashreportsystemdetails =
                  crashreport.a("Block being collided with");

              CrashReportSystemDetails.a(crashreportsystemdetails, blockposition2, iblockdata);
              throw new ReportedException(crashreport);
            }
          }
        }
      }
    }
  }
Example #11
0
  protected void k() {
    boolean flag = true;
    boolean flag1 = true;
    boolean flag2 = true;
    boolean flag3 = true;
    int i = 0;

    this.b("menu.generatingTerrain");
    byte b0 = 0;

    // CraftBukkit start - fire WorldLoadEvent and handle whether or not to keep the spawn in memory
    for (int m = 0; m < worlds.size(); m++) {
      WorldServer worldserver = this.worlds.get(m);
      LOGGER.info(
          "Preparing start region for level " + m + " (Seed: " + worldserver.getSeed() + ")");

      if (!worldserver.getWorld().getKeepSpawnInMemory()) {
        continue;
      }

      BlockPosition blockposition = worldserver.getSpawn();
      long j = ax();
      i = 0;

      for (int k = -192; k <= 192 && this.isRunning(); k += 16) {
        for (int l = -192; l <= 192 && this.isRunning(); l += 16) {
          long i1 = ax();

          if (i1 - j > 1000L) {
            this.a_("Preparing spawn area", i * 100 / 625);
            j = i1;
          }

          ++i;
          worldserver.chunkProviderServer.getChunkAt(
              blockposition.getX() + k >> 4, blockposition.getZ() + l >> 4);
        }
      }
    }

    for (WorldServer world : this.worlds) {
      this.server
          .getPluginManager()
          .callEvent(new org.bukkit.event.world.WorldLoadEvent(world.getWorld()));
    }
    // CraftBukkit end
    this.q();
  }
Example #12
0
 public IBlockData getPlacedState(
     World world,
     BlockPosition blockposition,
     EnumDirection enumdirection,
     float f,
     float f1,
     float f2,
     int i,
     EntityLiving entityliving) {
   IBlockData iblockdata = getBlockData().set(POWERED, Boolean.valueOf(false));
   if (a(world, blockposition, enumdirection.opposite())) {
     return iblockdata.set(
         FACING, EnumLeverPosition.a(enumdirection, entityliving.getDirection()));
   }
   Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator();
   EnumDirection enumdirection1;
   do {
     if (!iterator.hasNext()) {
       if (World.a(world, blockposition.down())) {
         return iblockdata.set(
             FACING, EnumLeverPosition.a(EnumDirection.UP, entityliving.getDirection()));
       }
       return iblockdata;
     }
     enumdirection1 = (EnumDirection) iterator.next();
   } while ((enumdirection1 == enumdirection)
       || (!a(world, blockposition, enumdirection1.opposite())));
   return iblockdata.set(FACING, EnumLeverPosition.a(enumdirection1, entityliving.getDirection()));
 }
Example #13
0
  public boolean a(Material material) {
    double d0 = this.locY + (double) this.getHeadHeight();
    BlockPosition blockposition = new BlockPosition(this.locX, d0, this.locZ);
    IBlockData iblockdata = this.world.getType(blockposition);
    Block block = iblockdata.getBlock();

    if (block.getMaterial() == material) {
      float f = BlockFluids.b(iblockdata.getBlock().toLegacyData(iblockdata)) - 0.11111111F;
      float f1 = (float) (blockposition.getY() + 1) - f;
      boolean flag = d0 < (double) f1;

      return !flag && this instanceof EntityHuman ? false : flag;
    } else {
      return false;
    }
  }
Example #14
0
  public boolean generate(World world, Random random, BlockPosition blockposition) {
    for (int i = 0; i < 64; ++i) {
      BlockPosition blockposition1 =
          blockposition.a(
              random.nextInt(8) - random.nextInt(8),
              random.nextInt(4) - random.nextInt(4),
              random.nextInt(8) - random.nextInt(8));

      if (world.isEmpty(blockposition1)
          && world.getType(blockposition1.down()).getBlock() == Blocks.NETHERRACK) {
        world.setTypeAndData(blockposition1, Blocks.FIRE.getBlockData(), 2);
      }
    }

    return true;
  }
Example #15
0
  public boolean interactWith(
      ItemStack itemstack,
      EntityHuman entityhuman,
      World world,
      BlockPosition blockposition,
      EnumDirection enumdirection,
      float f,
      float f1,
      float f2) {
    IBlockData iblockdata = world.getType(blockposition);
    Block block = iblockdata.getBlock();

    if (!block.a(world, blockposition)) {
      blockposition = blockposition.shift(enumdirection);
    }

    if (itemstack.count == 0) {
      return false;
    } else if (!entityhuman.a(blockposition, enumdirection, itemstack)) {
      return false;
    } else if (world.a(this.a, blockposition, false, enumdirection, (Entity) null, itemstack)) {
      int i = this.filterData(itemstack.getData());
      IBlockData iblockdata1 =
          this.a.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityhuman);

      if (world.setTypeAndData(blockposition, iblockdata1, 3)) {
        iblockdata1 = world.getType(blockposition);
        if (iblockdata1.getBlock() == this.a) {
          a(world, entityhuman, blockposition, itemstack);
          this.a.postPlace(world, blockposition, iblockdata1, entityhuman, itemstack);
        }

        world.makeSound(
            (double) ((float) blockposition.getX() + 0.5F),
            (double) ((float) blockposition.getY() + 0.5F),
            (double) ((float) blockposition.getZ() + 0.5F),
            this.a.stepSound.getPlaceSound(),
            (this.a.stepSound.getVolume1() + 1.0F) / 2.0F,
            this.a.stepSound.getVolume2() * 0.8F);
        --itemstack.count;
      }

      return true;
    } else {
      return false;
    }
  }
 protected UseResult a(
     ItemStack var1, EntityHuman var2, World var3, BlockPosition var4, IBlockData var5) {
   var3.a(
       (double) ((float) var4.getX() + 0.5F),
       (double) ((float) var4.getY() + 0.5F),
       (double) ((float) var4.getZ() + 0.5F),
       var5.getBlock().stepSound.getStepSound(),
       (var5.getBlock().stepSound.getVolume() + 1.0F) / 2.0F,
       var5.getBlock().stepSound.getPitch() * 0.8F);
   if (var3.isClientSide) {
     return UseResult.SUCCESS;
   } else {
     var3.setTypeUpdate(var4, var5);
     var1.a(1, (EntityLiving) var2);
     return UseResult.SUCCESS;
   }
 }
Example #17
0
  public void wasExploded(World world, BlockPosition blockposition, Explosion explosion) {
    if (!world.isClientSide) {
      EntityTNTPrimed entitytntprimed =
          new EntityTNTPrimed(
              world,
              (double) ((float) blockposition.getX() + 0.5F),
              (double) blockposition.getY(),
              (double) ((float) blockposition.getZ() + 0.5F),
              explosion.getSource());

      entitytntprimed.setFuseTicks(
          (short)
              (world.random.nextInt(entitytntprimed.getFuseTicks() / 4)
                  + entitytntprimed.getFuseTicks() / 8));
      world.addEntity(entitytntprimed);
    }
  }
Example #18
0
 public boolean b(World world, BlockPosition blockposition, ItemStack itemstack) {
   return itemstack.getData() == 1
           && blockposition.getY() >= 2
           && world.getDifficulty() != EnumDifficulty.PEACEFUL
           && !world.isStatic
       ? this.j().a(world, blockposition) != null
       : false;
 }
Example #19
0
  public boolean interactWith(
      ItemStack itemstack,
      EntityHuman entityhuman,
      World world,
      BlockPosition blockposition,
      EnumDirection enumdirection,
      float f,
      float f1,
      float f2) {
    if (!entityhuman.a(blockposition.shift(enumdirection), enumdirection, itemstack)) {
      return false;
    } else {
      IBlockData iblockdata = world.getType(blockposition);
      Block block = iblockdata.getBlock();

      if (enumdirection != EnumDirection.DOWN
          && world.getType(blockposition.up()).getBlock().getMaterial() == Material.AIR) {
        if (block == Blocks.GRASS) {
          return this.a(
              itemstack, entityhuman, world, blockposition, Blocks.FARMLAND.getBlockData());
        }

        if (block == Blocks.DIRT) {
          switch (ItemHoe.SyntheticClass_1.a[
              ((BlockDirt.EnumDirtVariant) iblockdata.get(BlockDirt.VARIANT)).ordinal()]) {
            case 1:
              return this.a(
                  itemstack, entityhuman, world, blockposition, Blocks.FARMLAND.getBlockData());

            case 2:
              return this.a(
                  itemstack,
                  entityhuman,
                  world,
                  blockposition,
                  Blocks.DIRT
                      .getBlockData()
                      .set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT));
          }
        }
      }

      return false;
    }
  }
Example #20
0
  public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (((Boolean) iblockdata.get(POWERED)).booleanValue()) {
      world.applyPhysics(blockposition, this);
      EnumDirection enumdirection = ((EnumLeverPosition) iblockdata.get(FACING)).c();

      world.applyPhysics(blockposition.shift(enumdirection.opposite()), this);
    }
    super.remove(world, blockposition, iblockdata);
  }
Example #21
0
  public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) {
    int i = ((Integer) iblockdata.get(AGE)).intValue();
    if ((i < 3)
        && (random.nextInt(
                Math.max(1, (int) world.growthOdds / world.spigotConfig.wartModifier * 10))
            == 0)) {
      iblockdata = iblockdata.set(AGE, Integer.valueOf(i + 1));

      CraftEventFactory.handleBlockGrowEvent(
          world,
          blockposition.getX(),
          blockposition.getY(),
          blockposition.getZ(),
          this,
          toLegacyData(iblockdata));
    }
    super.b(world, blockposition, iblockdata, random);
  }
  public void doPhysics(World var1, BlockPosition var2, IBlockData var3, Block var4) {
    EnumDirection var5 = (EnumDirection) var3.get(a);
    if (!var1.getType(var2.shift(var5.opposite())).getBlock().getMaterial().isBuildable()) {
      this.dropNaturallyForSure(var1, var2, var3, 0);
      var1.setAir(var2);
    }

    super.doPhysics(var1, var2, var3, var4);
  }
  public UseResult registerItemKey(
      ItemStack var1,
      EntityHuman var2,
      World var3,
      BlockPosition var4,
      EnumUsedHand var5,
      EnumDirection var6,
      float var7,
      float var8,
      float var9) {
    if (!var2.a(var4.shift(var6), var6, var1)) {
      return UseResult.CANT_USE;
    } else {
      IBlockData var10 = var3.getType(var4);
      Block var11 = var10.getBlock();
      if (var6 != EnumDirection.DOWN
          && var3.getType(var4.up()).getBlock().getMaterial() == Material.AIR) {
        if (var11 == Blocks.GRASS || var11 == Blocks.GRASS_PATH) {
          return this.a(var1, var2, var3, var4, Blocks.FARMLAND.getBlockData());
        }

        if (var11 == Blocks.DIRT) {
          switch (ItemHoe.SyntheticClass_1.a[
              ((BlockDirt.EnumDirtVariant) var10.get(BlockDirt.VARIANT)).ordinal()]) {
            case 1:
              return this.a(var1, var2, var3, var4, Blocks.FARMLAND.getBlockData());
            case 2:
              return this.a(
                  var1,
                  var2,
                  var3,
                  var4,
                  Blocks.DIRT
                      .getBlockData()
                      .set(BlockDirt.VARIANT, BlockDirt.EnumDirtVariant.DIRT));
          }
        }
      }

      return UseResult.CANT_USE;
    }
  }
Example #24
0
 protected boolean a(
     ItemStack itemstack,
     EntityHuman entityhuman,
     World world,
     BlockPosition blockposition,
     IBlockData iblockdata) {
   world.makeSound(
       (double) ((float) blockposition.getX() + 0.5F),
       (double) ((float) blockposition.getY() + 0.5F),
       (double) ((float) blockposition.getZ() + 0.5F),
       iblockdata.getBlock().stepSound.getStepSound(),
       (iblockdata.getBlock().stepSound.getVolume1() + 1.0F) / 2.0F,
       iblockdata.getBlock().stepSound.getVolume2() * 0.8F);
   if (world.isClientSide) {
     return true;
   } else {
     world.setTypeUpdate(blockposition, iblockdata);
     itemstack.damage(1, entityhuman);
     return true;
   }
 }
Example #25
0
  protected void a(BlockPosition blockposition, Block block) {
    StepSound stepsound = block.stepSound;

    if (this.world.getType(blockposition.up()).getBlock() == Blocks.SNOW_LAYER) {
      stepsound = Blocks.SNOW_LAYER.stepSound;
      this.makeSound(
          stepsound.getStepSound(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
    } else if (!block.getMaterial().isLiquid()) {
      this.makeSound(
          stepsound.getStepSound(), stepsound.getVolume1() * 0.15F, stepsound.getVolume2());
    }
  }
Example #26
0
  public static boolean a(
      World world, EntityHuman entityhuman, BlockPosition blockposition, ItemStack itemstack) {
    MinecraftServer minecraftserver = MinecraftServer.getServer();

    if (minecraftserver == null) {
      return false;
    } else {
      if (itemstack.hasTag() && itemstack.getTag().hasKeyOfType("BlockEntityTag", 10)) {
        TileEntity tileentity = world.getTileEntity(blockposition);

        if (tileentity != null) {
          if (!world.isClientSide
              && tileentity.F()
              && !minecraftserver.getPlayerList().isOp(entityhuman.getProfile())) {
            return false;
          }

          NBTTagCompound nbttagcompound = new NBTTagCompound();
          NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttagcompound.clone();

          tileentity.b(nbttagcompound);
          NBTTagCompound nbttagcompound2 =
              (NBTTagCompound) itemstack.getTag().get("BlockEntityTag");

          nbttagcompound.a(nbttagcompound2);
          nbttagcompound.setInt("x", blockposition.getX());
          nbttagcompound.setInt("y", blockposition.getY());
          nbttagcompound.setInt("z", blockposition.getZ());
          if (!nbttagcompound.equals(nbttagcompound1)) {
            tileentity.a(nbttagcompound);
            tileentity.update();
            return true;
          }
        }
      }

      return false;
    }
  }
Example #27
0
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + blockIndent;
   result = prime * result + ((breakBefore == null) ? 0 : breakBefore.hashCode());
   result = prime * result + ((keep == null) ? 0 : keep.hashCode());
   result = prime * result + keepWithNext;
   result = prime * result + keepWithNextSheets;
   result = prime * result + keepWithPreviousSheets;
   result = prime * result + ((listType == null) ? 0 : listType.hashCode());
   result = prime * result + ((margin == null) ? 0 : margin.hashCode());
   result = prime * result + orphans;
   result = prime * result + ((padding == null) ? 0 : padding.hashCode());
   result = prime * result + ((textBlockProps == null) ? 0 : textBlockProps.hashCode());
   result = prime * result + ((textBorderStyle == null) ? 0 : textBorderStyle.hashCode());
   result = prime * result + ((verticalPosition == null) ? 0 : verticalPosition.hashCode());
   result = prime * result + widows;
   return result;
 }
Example #28
0
  public boolean interact(
      World world,
      BlockPosition blockposition,
      IBlockData iblockdata,
      EntityHuman entityhuman,
      EnumDirection enumdirection,
      float f,
      float f1,
      float f2) {
    if (world.isClientSide) {
      return true;
    }
    boolean powered = ((Boolean) iblockdata.get(POWERED)).booleanValue();
    org.bukkit.block.Block block =
        world
            .getWorld()
            .getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
    int old = powered ? 15 : 0;
    int current = !powered ? 15 : 0;

    BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block, old, current);
    world.getServer().getPluginManager().callEvent(eventRedstone);
    if ((eventRedstone.getNewCurrent() > 0 ? 1 : 0) != (powered ? 0 : 1)) {
      return true;
    }
    iblockdata = iblockdata.a(POWERED);
    world.setTypeAndData(blockposition, iblockdata, 3);
    world.makeSound(
        blockposition.getX() + 0.5D,
        blockposition.getY() + 0.5D,
        blockposition.getZ() + 0.5D,
        "random.click",
        0.3F,
        ((Boolean) iblockdata.get(POWERED)).booleanValue() ? 0.6F : 0.5F);
    world.applyPhysics(blockposition, this);
    EnumDirection enumdirection1 = ((EnumLeverPosition) iblockdata.get(FACING)).c();

    world.applyPhysics(blockposition.shift(enumdirection1.opposite()), this);
    return true;
  }
  public boolean generate(World var1, Random var2, BlockPosition var3) {
    if (this.a == null) {
      this.a = var2.nextBoolean() ? Blocks.BROWN_MUSHROOM_BLOCK : Blocks.RED_MUSHROOM_BLOCK;
    }

    int var4 = var2.nextInt(3) + 4;
    boolean var5 = true;
    if (var3.getY() >= 1 && var3.getY() + var4 + 1 < 256) {
      int var9;
      int var10;
      for (int var6 = var3.getY(); var6 <= var3.getY() + 1 + var4; ++var6) {
        byte var7 = 3;
        if (var6 <= var3.getY() + 3) {
          var7 = 0;
        }

        BlockPosition.MutableBlockPosition var8 = new BlockPosition.MutableBlockPosition();

        for (var9 = var3.getX() - var7; var9 <= var3.getX() + var7 && var5; ++var9) {
          for (var10 = var3.getZ() - var7; var10 <= var3.getZ() + var7 && var5; ++var10) {
            if (var6 >= 0 && var6 < 256) {
              Block var11 = var1.getType(var8.setPosition(var9, var6, var10)).getBlock();
              if (var11.getMaterial() != Material.AIR && var11.getMaterial() != Material.LEAVES) {
                var5 = false;
              }
            } else {
              var5 = false;
            }
          }
        }
      }

      if (!var5) {
        return false;
      } else {
        Block var19 = var1.getType(var3.down()).getBlock();
        if (var19 != Blocks.DIRT && var19 != Blocks.GRASS && var19 != Blocks.MYCELIM) {
          return false;
        } else {
          int var20 = var3.getY() + var4;
          if (this.a == Blocks.RED_MUSHROOM_BLOCK) {
            var20 = var3.getY() + var4 - 3;
          }

          int var21;
          for (var21 = var20; var21 <= var3.getY() + var4; ++var21) {
            var9 = 1;
            if (var21 < var3.getY() + var4) {
              ++var9;
            }

            if (this.a == Blocks.BROWN_MUSHROOM_BLOCK) {
              var9 = 3;
            }

            var10 = var3.getX() - var9;
            int var23 = var3.getX() + var9;
            int var12 = var3.getZ() - var9;
            int var13 = var3.getZ() + var9;

            for (int var14 = var10; var14 <= var23; ++var14) {
              for (int var15 = var12; var15 <= var13; ++var15) {
                int var16 = 5;
                if (var14 == var10) {
                  --var16;
                } else if (var14 == var23) {
                  ++var16;
                }

                if (var15 == var12) {
                  var16 -= 3;
                } else if (var15 == var13) {
                  var16 += 3;
                }

                BlockHugeMushroom.class_a_in_class_aiw var17 =
                    BlockHugeMushroom.class_a_in_class_aiw.a(var16);
                if (this.a == Blocks.BROWN_MUSHROOM_BLOCK || var21 < var3.getY() + var4) {
                  if ((var14 == var10 || var14 == var23) && (var15 == var12 || var15 == var13)) {
                    continue;
                  }

                  if (var14 == var3.getX() - (var9 - 1) && var15 == var12) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.a;
                  }

                  if (var14 == var10 && var15 == var3.getZ() - (var9 - 1)) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.a;
                  }

                  if (var14 == var3.getX() + (var9 - 1) && var15 == var12) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.c;
                  }

                  if (var14 == var23 && var15 == var3.getZ() - (var9 - 1)) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.c;
                  }

                  if (var14 == var3.getX() - (var9 - 1) && var15 == var13) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.g;
                  }

                  if (var14 == var10 && var15 == var3.getZ() + (var9 - 1)) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.g;
                  }

                  if (var14 == var3.getX() + (var9 - 1) && var15 == var13) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.i;
                  }

                  if (var14 == var23 && var15 == var3.getZ() + (var9 - 1)) {
                    var17 = BlockHugeMushroom.class_a_in_class_aiw.i;
                  }
                }

                if (var17 == BlockHugeMushroom.class_a_in_class_aiw.e
                    && var21 < var3.getY() + var4) {
                  var17 = BlockHugeMushroom.class_a_in_class_aiw.k;
                }

                if (var3.getY() >= var3.getY() + var4 - 1
                    || var17 != BlockHugeMushroom.class_a_in_class_aiw.k) {
                  BlockPosition var18 = new BlockPosition(var14, var21, var15);
                  if (!var1.getType(var18).getBlock().isFullBlock()) {
                    this.setTypeAndData(
                        var1, var18, this.a.getBlockData().set(BlockHugeMushroom.a, var17));
                  }
                }
              }
            }
          }

          for (var21 = 0; var21 < var4; ++var21) {
            Block var22 = var1.getType(var3.up(var21)).getBlock();
            if (!var22.isFullBlock()) {
              this.setTypeAndData(
                  var1,
                  var3.up(var21),
                  this.a
                      .getBlockData()
                      .set(BlockHugeMushroom.a, BlockHugeMushroom.class_a_in_class_aiw.j));
            }
          }

          return true;
        }
      }
    } else {
      return false;
    }
  }
Example #30
0
 public double c(BlockPosition blockposition) {
   return blockposition.d(this.locX, this.locY, this.locZ);
 }