public void onNeighborBlockChange(World world, int i, int j, int k, int l) { int dir = world.getBlockMetadata(i, j, k); if (dir == 0) { if (!world.isBlockOpaqueCube(i, j, k + 1)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 1) { if (!world.isBlockOpaqueCube(i - 1, j, k)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 2) { if (!world.isBlockOpaqueCube(i, j, k - 1)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } else if (dir == 3) { if (!world.isBlockOpaqueCube(i + 1, j, k)) { this.breakBlock(world, i, j, k, blockID, dir); world.setBlock(i, j, k, 0); } } }
public void onBlockRemoval(World world, int i, int j, int k) { super.onBlockRemoval(world, i, j, k); if (world.multiplayerWorld) { return; } world.notifyBlocksOfNeighborChange(i, j + 1, k, blockID); world.notifyBlocksOfNeighborChange(i, j - 1, k, blockID); updateAndPropagateCurrentStrength(world, i, j, k); notifyWireNeighborsOfNeighborChange(world, i - 1, j, k); notifyWireNeighborsOfNeighborChange(world, i + 1, j, k); notifyWireNeighborsOfNeighborChange(world, i, j, k - 1); notifyWireNeighborsOfNeighborChange(world, i, j, k + 1); if (world.isBlockOpaqueCube(i - 1, j, k)) { notifyWireNeighborsOfNeighborChange(world, i - 1, j + 1, k); } else { notifyWireNeighborsOfNeighborChange(world, i - 1, j - 1, k); } if (world.isBlockOpaqueCube(i + 1, j, k)) { notifyWireNeighborsOfNeighborChange(world, i + 1, j + 1, k); } else { notifyWireNeighborsOfNeighborChange(world, i + 1, j - 1, k); } if (world.isBlockOpaqueCube(i, j, k - 1)) { notifyWireNeighborsOfNeighborChange(world, i, j + 1, k - 1); } else { notifyWireNeighborsOfNeighborChange(world, i, j - 1, k - 1); } if (world.isBlockOpaqueCube(i, j, k + 1)) { notifyWireNeighborsOfNeighborChange(world, i, j + 1, k + 1); } else { notifyWireNeighborsOfNeighborChange(world, i, j - 1, k + 1); } }
@Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k) { if (world.getBlockId(i, j - 1, k) == this.blockID || world.isBlockOpaqueCube(i, j - 1, k)) { return AxisAlignedBB.getBoundingBox(i + 0.3, j, k + 0.3, i + 0.7, j + 1, k + 0.7); } return AxisAlignedBB.getBoundingBox(i, j + 0.4, k, i + 1, j + 0.6, k + 1); }
public void onNeighborBlockChange(World world, int i, int j, int k, int l) { if (!world.isBlockOpaqueCube(i, j - 1, k) && !func_263_h(world, i, j, k)) { world.setBlockWithNotify(i, j, k, 0); return; } else { return; } }
private void func_319_i(World world, int i, int j, int k) { Random random = world.rand; double d = 0.0625D; for (int l = 0; l < 6; l++) { double d1 = (float) i + random.nextFloat(); double d2 = (float) j + random.nextFloat(); double d3 = (float) k + random.nextFloat(); if (l == 0 && !world.isBlockOpaqueCube(i, j + 1, k)) { d2 = (double) (j + 1) + d; } if (l == 1 && !world.isBlockOpaqueCube(i, j - 1, k)) { d2 = (double) (j + 0) - d; } if (l == 2 && !world.isBlockOpaqueCube(i, j, k + 1)) { d3 = (double) (k + 1) + d; } if (l == 3 && !world.isBlockOpaqueCube(i, j, k - 1)) { d3 = (double) (k + 0) - d; } if (l == 4 && !world.isBlockOpaqueCube(i + 1, j, k)) { d1 = (double) (i + 1) + d; } if (l == 5 && !world.isBlockOpaqueCube(i - 1, j, k)) { d1 = (double) (i + 0) - d; } if (d1 < (double) i || d1 > (double) (i + 1) || d2 < 0.0D || d2 > (double) (j + 1) || d3 < (double) k || d3 > (double) (k + 1)) { world.spawnParticle("reddust", d1, d2, d3, 0.0D, 0.0D, 0.0D); } } }
public void onBlockAdded(World world, int i, int j, int k) { if (world.getBlockId(i, j - 1, k) == Block.obsidian.blockID && Block.portal.tryToCreatePortal(world, i, j, k)) { return; } if (!world.isBlockOpaqueCube(i, j - 1, k) && !func_263_h(world, i, j, k)) { world.setBlockWithNotify(i, j, k, 0); return; } else { world.func_22136_c(i, j, k, blockID, tickRate()); return; } }
@Override public void updateTick(World world, int i, int j, int k, Random rand) { if (!world.isRemote) { if (!world.isBlockOpaqueCube(i, j - 1, k)) { if (world.getBlockId(i + 1, j, k) != blockID && world.getBlockId(i - 1, j, k) != blockID && world.getBlockId(i, j, k + 1) != blockID && world.getBlockId(i, j, k - 1) != blockID && world.getBlockId(i + 1, j, k + 1) != blockID && world.getBlockId(i + 1, j, k - 1) != blockID && world.getBlockId(i - 1, j, k + 1) != blockID && world.getBlockId(i - 1, j, k - 1) != blockID) { world.setBlock(i, j, k, 0); } } } }
public void updateTick(World world, int i, int j, int k, Random random) { boolean flag = world.getBlockId(i, j - 1, k) == Block.bloodStone.blockID; int l = world.getBlockMetadata(i, j, k); if (l < 15) { world.setBlockMetadataWithNotify(i, j, k, l + 1); world.func_22136_c(i, j, k, blockID, tickRate()); } if (!flag && !func_263_h(world, i, j, k)) { if (!world.isBlockOpaqueCube(i, j - 1, k) || l > 3) { world.setBlockWithNotify(i, j, k, 0); } return; } if (!flag && !canBlockCatchFire(world, i, j - 1, k) && l == 15 && random.nextInt(4) == 0) { world.setBlockWithNotify(i, j, k, 0); return; } if (l % 2 == 0 && l > 2) { tryToCatchBlockOnFire(world, i + 1, j, k, 300, random); tryToCatchBlockOnFire(world, i - 1, j, k, 300, random); tryToCatchBlockOnFire(world, i, j - 1, k, 250, random); tryToCatchBlockOnFire(world, i, j + 1, k, 250, random); tryToCatchBlockOnFire(world, i, j, k - 1, 300, random); tryToCatchBlockOnFire(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.setBlockWithNotify(i1, k1, j1, blockID); } } } } } }
public void randomDisplayTick(World world, int i, int j, int k, Random random) { if (random.nextInt(24) == 0) { world.playSoundEffect( (float) i + 0.5F, (float) j + 0.5F, (float) k + 0.5F, "fire.fire", 1.0F + random.nextFloat(), random.nextFloat() * 0.7F + 0.3F); } if (world.isBlockOpaqueCube(i, j - 1, k) || Block.fire.canBlockCatchFire(world, i, j - 1, k)) { for (int l = 0; l < 3; l++) { float f = (float) i + random.nextFloat(); float f6 = (float) j + random.nextFloat() * 0.5F + 0.5F; float f12 = (float) k + random.nextFloat(); world.spawnParticle("largesmoke", f, f6, f12, 0.0D, 0.0D, 0.0D); } } else { if (Block.fire.canBlockCatchFire(world, i - 1, j, k)) { for (int i1 = 0; i1 < 2; i1++) { float f1 = (float) i + random.nextFloat() * 0.1F; float f7 = (float) j + random.nextFloat(); float f13 = (float) k + random.nextFloat(); world.spawnParticle("largesmoke", f1, f7, f13, 0.0D, 0.0D, 0.0D); } } if (Block.fire.canBlockCatchFire(world, i + 1, j, k)) { for (int j1 = 0; j1 < 2; j1++) { float f2 = (float) (i + 1) - random.nextFloat() * 0.1F; float f8 = (float) j + random.nextFloat(); float f14 = (float) k + random.nextFloat(); world.spawnParticle("largesmoke", f2, f8, f14, 0.0D, 0.0D, 0.0D); } } if (Block.fire.canBlockCatchFire(world, i, j, k - 1)) { for (int k1 = 0; k1 < 2; k1++) { float f3 = (float) i + random.nextFloat(); float f9 = (float) j + random.nextFloat(); float f15 = (float) k + random.nextFloat() * 0.1F; world.spawnParticle("largesmoke", f3, f9, f15, 0.0D, 0.0D, 0.0D); } } if (Block.fire.canBlockCatchFire(world, i, j, k + 1)) { for (int l1 = 0; l1 < 2; l1++) { float f4 = (float) i + random.nextFloat(); float f10 = (float) j + random.nextFloat(); float f16 = (float) (k + 1) - random.nextFloat() * 0.1F; world.spawnParticle("largesmoke", f4, f10, f16, 0.0D, 0.0D, 0.0D); } } if (Block.fire.canBlockCatchFire(world, i, j + 1, k)) { for (int i2 = 0; i2 < 2; i2++) { float f5 = (float) i + random.nextFloat(); float f11 = (float) (j + 1) - random.nextFloat() * 0.1F; float f17 = (float) k + random.nextFloat(); world.spawnParticle("largesmoke", f5, f11, f17, 0.0D, 0.0D, 0.0D); } } } }
public boolean canPlaceBlockAt(World world, int i, int j, int k) { return world.isBlockOpaqueCube(i, j - 1, k) || func_263_h(world, i, j, k); }
/** A randomly called display update to be able to add particles or other items for display */ public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random) { int var6; if (this.blockMaterial == Material.water) { if (par5Random.nextInt(10) == 0) { var6 = par1World.getBlockMetadata(par2, par3, par4); if (var6 <= 0 || var6 >= 8) { par1World.spawnParticle( "suspended", (double) ((float) par2 + par5Random.nextFloat()), (double) ((float) par3 + par5Random.nextFloat()), (double) ((float) par4 + par5Random.nextFloat()), 0.0D, 0.0D, 0.0D); } } for (var6 = 0; var6 < 0; ++var6) { int var7 = par5Random.nextInt(4); int var8 = par2; int var9 = par4; if (var7 == 0) { var8 = par2 - 1; } if (var7 == 1) { ++var8; } if (var7 == 2) { var9 = par4 - 1; } if (var7 == 3) { ++var9; } if (par1World.getBlockMaterial(var8, par3, var9) == Material.air && (par1World.getBlockMaterial(var8, par3 - 1, var9).blocksMovement() || par1World.getBlockMaterial(var8, par3 - 1, var9).isLiquid())) { float var10 = 0.0625F; double var11 = (double) ((float) par2 + par5Random.nextFloat()); double var13 = (double) ((float) par3 + par5Random.nextFloat()); double var15 = (double) ((float) par4 + par5Random.nextFloat()); if (var7 == 0) { var11 = (double) ((float) par2 - var10); } if (var7 == 1) { var11 = (double) ((float) (par2 + 1) + var10); } if (var7 == 2) { var15 = (double) ((float) par4 - var10); } if (var7 == 3) { var15 = (double) ((float) (par4 + 1) + var10); } double var17 = 0.0D; double var19 = 0.0D; if (var7 == 0) { var17 = (double) (-var10); } if (var7 == 1) { var17 = (double) var10; } if (var7 == 2) { var19 = (double) (-var10); } if (var7 == 3) { var19 = (double) var10; } par1World.spawnParticle("splash", var11, var13, var15, var17, 0.0D, var19); } } } if (this.blockMaterial == Material.water && par5Random.nextInt(64) == 0) { var6 = par1World.getBlockMetadata(par2, par3, par4); if (var6 > 0 && var6 < 8) { par1World.playSound( (double) ((float) par2 + 0.5F), (double) ((float) par3 + 0.5F), (double) ((float) par4 + 0.5F), "liquid.water", par5Random.nextFloat() * 0.25F + 0.75F, par5Random.nextFloat() * 1.0F + 0.5F); } } double var21; double var23; double var22; if (this.blockMaterial == Material.lava && par1World.getBlockMaterial(par2, par3 + 1, par4) == Material.air && !par1World.isBlockOpaqueCube(par2, par3 + 1, par4)) { if (par5Random.nextInt(100) == 0) { var21 = (double) ((float) par2 + par5Random.nextFloat()); var22 = (double) par3 + this.maxY; var23 = (double) ((float) par4 + par5Random.nextFloat()); par1World.spawnParticle("lava", var21, var22, var23, 0.0D, 0.0D, 0.0D); par1World.playSound( var21, var22, var23, "liquid.lavapop", 0.2F + par5Random.nextFloat() * 0.2F, 0.9F + par5Random.nextFloat() * 0.15F); } if (par5Random.nextInt(200) == 0) { par1World.playSound( (double) par2, (double) par3, (double) par4, "liquid.lava", 0.2F + par5Random.nextFloat() * 0.2F, 0.9F + par5Random.nextFloat() * 0.15F); } } if (par5Random.nextInt(10) == 0 && par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && !par1World.getBlockMaterial(par2, par3 - 2, par4).blocksMovement()) { var21 = (double) ((float) par2 + par5Random.nextFloat()); var22 = (double) par3 - 1.05D; var23 = (double) ((float) par4 + par5Random.nextFloat()); if (this.blockMaterial == Material.water) { par1World.spawnParticle("dripWater", var21, var22, var23, 0.0D, 0.0D, 0.0D); } else { par1World.spawnParticle("dripLava", var21, var22, var23, 0.0D, 0.0D, 0.0D); } } }
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); } }
private void func_21030_a(World world, int i, int j, int k, int l, int i1, int j1) { int k1 = world.getBlockMetadata(i, j, k); int l1 = 0; wiresProvidePower = false; boolean flag = world.isBlockIndirectlyGettingPowered(i, j, k); wiresProvidePower = true; if (flag) { l1 = 15; } else { for (int i2 = 0; i2 < 4; i2++) { int k2 = i; int i3 = k; if (i2 == 0) { k2--; } if (i2 == 1) { k2++; } if (i2 == 2) { i3--; } if (i2 == 3) { i3++; } if (k2 != l || j != i1 || i3 != j1) { l1 = getMaxCurrentStrength(world, k2, j, i3, l1); } if (world.isBlockOpaqueCube(k2, j, i3) && !world.isBlockOpaqueCube(i, j + 1, k)) { if (k2 != l || j + 1 != i1 || i3 != j1) { l1 = getMaxCurrentStrength(world, k2, j + 1, i3, l1); } continue; } if (!world.isBlockOpaqueCube(k2, j, i3) && (k2 != l || j - 1 != i1 || i3 != j1)) { l1 = getMaxCurrentStrength(world, k2, j - 1, i3, l1); } } if (l1 > 0) { l1--; } else { l1 = 0; } } if (k1 != l1) { world.field_1043_h = true; world.setBlockMetadataWithNotify(i, j, k, l1); world.markBlocksDirty(i, j, k, i, j, k); world.field_1043_h = false; for (int j2 = 0; j2 < 4; j2++) { int l2 = i; int j3 = k; int k3 = j - 1; if (j2 == 0) { l2--; } if (j2 == 1) { l2++; } if (j2 == 2) { j3--; } if (j2 == 3) { j3++; } if (world.isBlockOpaqueCube(l2, j, j3)) { k3 += 2; } int l3 = 0; l3 = getMaxCurrentStrength(world, l2, j, j3, -1); l1 = world.getBlockMetadata(i, j, k); if (l1 > 0) { l1--; } if (l3 >= 0 && l3 != l1) { func_21030_a(world, l2, j, j3, i, j, k); } l3 = getMaxCurrentStrength(world, l2, k3, j3, -1); l1 = world.getBlockMetadata(i, j, k); if (l1 > 0) { l1--; } if (l3 >= 0 && l3 != l1) { func_21030_a(world, l2, k3, j3, i, j, k); } } if (k1 == 0 || l1 == 0) { field_21031_b.add(new ChunkPosition(i, j, k)); field_21031_b.add(new ChunkPosition(i - 1, j, k)); field_21031_b.add(new ChunkPosition(i + 1, j, k)); field_21031_b.add(new ChunkPosition(i, j - 1, k)); field_21031_b.add(new ChunkPosition(i, j + 1, k)); field_21031_b.add(new ChunkPosition(i, j, k - 1)); field_21031_b.add(new ChunkPosition(i, j, k + 1)); } } }