public void LavaFlow(int x, int y, int z, byte meta) { byte block = w.GetBlock(x, y, z); byte bMeta = w.GetMeta(x, y, z); if (block == 0 || block == 51 || ((block == 10 || block == 11) && (meta & 0x7) < bMeta && (bMeta & 0x8) == 0)) { AddUpdate(x, y, z, 10, meta); if (block == 51) { Player.GlobalSoundEffect(x, (byte)y, z, 1004, w); } } else if (BlockData.LiquidDestroy(block)) { AddUpdate(x, y, z, 10, meta); Player.GlobalSoundEffect(x, (byte)y, z, 2000, 4, w); short dropId = Player.BlockDropSwitch(block); if (FindBlocks.ValidItem(dropId)) { w.DropItem(x, y, z, dropId); } } }
public void WaterFlow(int x, int y, int z, byte meta) { if (SpongeCheck(x, y, z)) { return; } byte block = w.GetBlock(x, y, z); byte bMeta = w.GetMeta(x, y, z); if (block == 0 || block == 51 || ((block == 8 || block == 9) && (meta & 0x7) < bMeta && (bMeta & 0x8) == 0)) { AddUpdate(x, y, z, 8, meta); if (block == 51) { Player.GlobalSoundEffect(x, (byte)y, z, 1004, w); } } else if (BlockData.LiquidDestroy(block)) { AddUpdate(x, y, z, 8, meta); short dropId = Player.BlockDropSwitch(block); if (FindBlocks.ValidItem(dropId)) { w.DropItem(x, y, z, dropId); } } else if (block == 10 || block == 11) { if ((bMeta & 0x8) != 0) { return; } if ((bMeta & 0x7) == 0) { AddUpdate(x, y, z, 49, 0); } else { AddUpdate(x, y, z, 4, 0); } Player.GlobalSoundEffect(x, (byte)y, z, 1004, w); //Player.GlobalSoundEffect(x, (byte)y, z, 2000, 4, w); } }
public void DoExplosionB(/*bool flag*/) { Player.players.ForEach(delegate(Player pl) { if (pl.MapLoaded && pl.level == worldObj && pl.VisibleChunks.Contains(Chunk.GetChunk((int)explosionX >> 4, (int)explosionZ >> 4, pl.level).point)) { pl.SendExplosion((int)explosionX, (int)explosionY, (int)explosionZ, explosionSize, destroyedBlockPositions.ToArray()); } }); List <Point3> arraylist = new List <Point3>(); arraylist.AddRange(destroyedBlockPositions); for (int i = arraylist.Count - 1; i >= 0; i--) { Point3 chunkposition = arraylist[i]; int j = (int)chunkposition.x; int k = (int)chunkposition.y; int l = (int)chunkposition.z; int i1 = worldObj.GetBlock(j, k, l); // This is particle code, and isn't needed here. /*if (flag) * { * double d = (float)j + worldObj.rand.nextFloat(); * double d1 = (float)k + worldObj.rand.nextFloat(); * double d2 = (float)l + worldObj.rand.nextFloat(); * double d3 = d - explosionX; * double d4 = d1 - explosionY; * double d5 = d2 - explosionZ; * double d6 = MathHelper.sqrt_double(d3 * d3 + d4 * d4 + d5 * d5); * d3 /= d6; * d4 /= d6; * d5 /= d6; * double d7 = 0.5D / (d6 / (double)explosionSize + 0.10000000000000001D); * d7 *= worldObj.rand.nextFloat() * worldObj.rand.nextFloat() + 0.3F; * d3 *= d7; * d4 *= d7; * d5 *= d7; * worldObj.spawnParticle("explode", (d + explosionX * 1.0D) / 2D, (d1 + explosionY * 1.0D) / 2D, (d2 + explosionZ * 1.0D) / 2D, d3, d4, d5); * worldObj.spawnParticle("smoke", d, d1, d2, d3, d4, d5); * }*/ if (i1 > 0) { if (ExplosionRNG.Next(10) < 3) { short block = Player.BlockDropSwitch((short)i1); if (block != 0) { worldObj.DropItem(j, k, l, block); } } worldObj.BlockChange(j, k, l, 0, 0); } } if (isFlaming) { for (int l2 = arraylist.Count - 1; l2 >= 0; l2--) { Point3 chunkposition = arraylist[l2]; int i3 = (int)chunkposition.x; int j3 = (int)chunkposition.y; int k3 = (int)chunkposition.z; int l3 = worldObj.GetBlock(i3, j3, k3); int i4 = worldObj.GetBlock(i3, j3 - 1, k3); if (l3 == 0 && i4 != 20 && BlockData.CanPlaceAgainst((byte)i4) && ExplosionRNG.Next(3) == 0) { worldObj.BlockChange(i3, j3, k3, (byte)Blocks.Fire, 0); } } } }