public static void StoreChunkInCompound(net.minecraft.src.Chunk chunk, net.minecraft.src.World world, net.minecraft.src.NBTTagCompound nbttagcompound) { world.CheckSessionLock(); nbttagcompound.SetInteger("xPos", chunk.xPosition); nbttagcompound.SetInteger("zPos", chunk.zPosition); nbttagcompound.SetLong("LastUpdate", world.GetWorldTime()); nbttagcompound.SetByteArray("Blocks", chunk.blocks); nbttagcompound.SetByteArray("Data", chunk.data.data); nbttagcompound.SetByteArray("SkyLight", chunk.skylightMap.data); nbttagcompound.SetByteArray("BlockLight", chunk.blocklightMap.data); nbttagcompound.SetByteArray("HeightMap", chunk.heightMap); nbttagcompound.SetBoolean("TerrainPopulated", chunk.isTerrainPopulated); chunk.hasEntities = false; net.minecraft.src.NBTTagList nbttaglist = new net.minecraft.src.NBTTagList(); for (int i = 0; i < chunk.entities.Length; i++) { System.Collections.IEnumerator iterator = chunk.entities[i].GetEnumerator(); do { if (!iterator.MoveNext()) { goto label0_continue; } net.minecraft.src.Entity entity = (net.minecraft.src.Entity)iterator.Current; chunk.hasEntities = true; net.minecraft.src.NBTTagCompound nbttagcompound1 = new net.minecraft.src.NBTTagCompound (); if (entity.AddEntityID(nbttagcompound1)) { nbttaglist.SetTag(nbttagcompound1); } }while (true); label0_continue :; } label0_break :; nbttagcompound.SetTag("Entities", nbttaglist); net.minecraft.src.NBTTagList nbttaglist1 = new net.minecraft.src.NBTTagList(); net.minecraft.src.NBTTagCompound nbttagcompound2; for (System.Collections.IEnumerator iterator1 = chunk.chunkTileEntityMap.Values.GetEnumerator (); iterator1.MoveNext(); nbttaglist1.SetTag(nbttagcompound2)) { net.minecraft.src.TileEntity tileentity = (net.minecraft.src.TileEntity)iterator1 .Current; nbttagcompound2 = new net.minecraft.src.NBTTagCompound(); tileentity.WriteToNBT(nbttagcompound2); } nbttagcompound.SetTag("TileEntities", nbttaglist1); }
private bool CheckForBurnout(net.minecraft.src.World world, int i, int j, int k, bool flag) { if (flag) { torchUpdates.Add(new net.minecraft.src.RedstoneUpdateInfo(i, j, k, world.GetWorldTime ())); } int l = 0; for (int i1 = 0; i1 < torchUpdates.Count; i1++) { net.minecraft.src.RedstoneUpdateInfo redstoneupdateinfo = (net.minecraft.src.RedstoneUpdateInfo )torchUpdates[i1]; if (redstoneupdateinfo.x == i && redstoneupdateinfo.y == j && redstoneupdateinfo. z == k && ++l >= 8) { return(true); } } return(false); }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpBukkitLive.SharpBukkit.SharpRandom random) { bool flag = Func_30003_g(world, i, j, k); for (; torchUpdates.Count > 0 && world.GetWorldTime() - ((net.minecraft.src.RedstoneUpdateInfo )torchUpdates[0]).updateTime > 100L; torchUpdates.RemoveAt(0)) { } if (torchActive) { if (flag) { world.SetBlockAndMetadataWithNotify(i, j, k, net.minecraft.src.Block.REDSTONE_TORCH_OFF .ID, world.GetBlockMetadata(i, j, k)); if (CheckForBurnout(world, i, j, k, true)) { world.PlaySoundEffect((float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, "random.fizz" , 0.5F, 2.6F + (world.rand.NextFloat() - world.rand.NextFloat()) * 0.8F); for (int l = 0; l < 5; l++) { double d = (double)i + random.NextDouble() * 0.59999999999999998D + 0.20000000000000001D; double d1 = (double)j + random.NextDouble() * 0.59999999999999998D + 0.20000000000000001D; double d2 = (double)k + random.NextDouble() * 0.59999999999999998D + 0.20000000000000001D; world.SpawnParticle("smoke", d, d1, d2, 0.0D, 0.0D, 0.0D); } } } } else { if (!flag && !CheckForBurnout(world, i, j, k, false)) { world.SetBlockAndMetadataWithNotify(i, j, k, net.minecraft.src.Block.REDSTONE_TORCH_ON .ID, world.GetBlockMetadata(i, j, k)); } } }