public override bool CanBlockStay(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockMaterial(i - 1, j, k).IsSolid()) { return(false); } if (world.GetBlockMaterial(i + 1, j, k).IsSolid()) { return(false); } if (world.GetBlockMaterial(i, j, k - 1).IsSolid()) { return(false); } if (world.GetBlockMaterial(i, j, k + 1).IsSolid()) { return(false); } else { int l = world.GetBlockId(i, j - 1, k); return(l == net.minecraft.src.Block.CACTUS.ID || l == net.minecraft.src.Block .SAND.ID); } }
public override bool CanPlaceBlockAt(net.minecraft.src.World world, int i, int j, int k) { int l = world.GetBlockId(i, j - 1, k); if (l == ID) { return(true); } if (l != net.minecraft.src.Block.GRASS.ID && l != net.minecraft.src.Block.DIRT .ID) { return(false); } if (world.GetBlockMaterial(i - 1, j - 1, k) == net.minecraft.src.Material.water) { return(true); } if (world.GetBlockMaterial(i + 1, j - 1, k) == net.minecraft.src.Material.water) { return(true); } if (world.GetBlockMaterial(i, j - 1, k - 1) == net.minecraft.src.Material.water) { return(true); } return(world.GetBlockMaterial(i, j - 1, k + 1) == net.minecraft.src.Material.water); }
// Referenced classes of package net.minecraft.src: // WorldGenerator, World, Material, Block public override bool Generate(net.minecraft.src.World world, SharpBukkitLive.SharpBukkit.SharpRandom random , int i, int j, int k) { for (int l = 0; l < 20; l++) { int i1 = (i + random.Next(4)) - random.Next(4); int j1 = j; int k1 = (k + random.Next(4)) - random.Next(4); if (!world.IsAirBlock(i1, j1, k1) || world.GetBlockMaterial(i1 - 1, j1 - 1, k1) != net.minecraft.src.Material.water && world.GetBlockMaterial(i1 + 1, j1 - 1, k1) != net.minecraft.src.Material.water && world.GetBlockMaterial(i1, j1 - 1, k1 - 1 ) != net.minecraft.src.Material.water && world.GetBlockMaterial(i1, j1 - 1, k1 + 1) != net.minecraft.src.Material.water) { continue; } int l1 = 2 + random.Next(random.Next(3) + 1); for (int i2 = 0; i2 < l1; i2++) { if (net.minecraft.src.Block.SUGAR_CANE_BLOCK.CanBlockStay(world, i1, j1 + i2, k1)) { world.SetBlock(i1, j1 + i2, k1, net.minecraft.src.Block.SUGAR_CANE_BLOCK.ID); } } } return(true); }
public virtual void TriggerNote(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockMaterial(i, j + 1, k) != net.minecraft.src.Material.air) { return; } net.minecraft.src.Material material = world.GetBlockMaterial(i, j - 1, k); byte byte0 = 0; if (material == net.minecraft.src.Material.rock) { byte0 = 1; } if (material == net.minecraft.src.Material.sand) { byte0 = 2; } if (material == net.minecraft.src.Material.glass) { byte0 = 3; } if (material == net.minecraft.src.Material.wood) { byte0 = 4; } world.PlayNoteAt(i, j, k, byte0, note); }
private static bool Func_21167_a(net.minecraft.src.EnumCreatureType enumcreaturetype , net.minecraft.src.World world, int i, int j, int k) { if (enumcreaturetype.GetCreatureMaterial() == net.minecraft.src.Material.water) { return(world.GetBlockMaterial(i, j, k).GetIsLiquid() && !world.IsBlockNormalCube( i, j + 1, k)); } else { return(world.IsBlockNormalCube(i, j - 1, k) && !world.IsBlockNormalCube(i, j, k) && !world.GetBlockMaterial(i, j, k).GetIsLiquid() && !world.IsBlockNormalCube(i, j + 1, k)); } }
private void CheckForHarden(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockId(i, j, k) != ID) { return; } if (blockMaterial == net.minecraft.src.Material.lava) { bool flag = false; if (flag || world.GetBlockMaterial(i, j, k - 1) == net.minecraft.src.Material.water) { flag = true; } if (flag || world.GetBlockMaterial(i, j, k + 1) == net.minecraft.src.Material.water) { flag = true; } if (flag || world.GetBlockMaterial(i - 1, j, k) == net.minecraft.src.Material.water) { flag = true; } if (flag || world.GetBlockMaterial(i + 1, j, k) == net.minecraft.src.Material.water) { flag = true; } if (flag || world.GetBlockMaterial(i, j + 1, k) == net.minecraft.src.Material.water) { flag = true; } if (flag) { int l = world.GetBlockMetadata(i, j, k); if (l == 0) { world.SetBlockWithNotify(i, j, k, net.minecraft.src.Block.OBSIDIAN.ID); } else { if (l <= 4) { world.SetBlockWithNotify(i, j, k, net.minecraft.src.Block.COBBLESTONE.ID); } } Func_300_h(world, i, j, k); } } }
public override bool Generate(net.minecraft.src.World world, SharpBukkitLive.SharpBukkit.SharpRandom random , int i, int j, int k) { if (world.GetBlockMaterial(i, j, k) != net.minecraft.src.Material.water) { return(false); } float f = ((float)random.NextDouble()) * 3.141593F; double d = (float)(i + 8) + (net.minecraft.src.MathHelper.Sin(f) * (float)numberOfBlocks ) / 8F; double d1 = (float)(i + 8) - (net.minecraft.src.MathHelper.Sin(f) * (float)numberOfBlocks ) / 8F; double d2 = (float)(k + 8) + (net.minecraft.src.MathHelper.Cos(f) * (float)numberOfBlocks ) / 8F; double d3 = (float)(k + 8) - (net.minecraft.src.MathHelper.Cos(f) * (float)numberOfBlocks ) / 8F; double d4 = j + random.Next(3) + 2; double d5 = j + random.Next(3) + 2; for (int l = 0; l <= numberOfBlocks; l++) { double d6 = d + ((d1 - d) * (double)l) / (double)numberOfBlocks; double d7 = d4 + ((d5 - d4) * (double)l) / (double)numberOfBlocks; double d8 = d2 + ((d3 - d2) * (double)l) / (double)numberOfBlocks; double d9 = (random.NextDouble() * (double)numberOfBlocks) / 16D; double d10 = (double)(net.minecraft.src.MathHelper.Sin(((float)l * 3.141593F) / ( float)numberOfBlocks) + 1.0F) * d9 + 1.0D; double d11 = (double)(net.minecraft.src.MathHelper.Sin(((float)l * 3.141593F) / ( float)numberOfBlocks) + 1.0F) * d9 + 1.0D; int i1 = net.minecraft.src.MathHelper.Floor_double(d6 - d10 / 2D); int j1 = net.minecraft.src.MathHelper.Floor_double(d6 + d10 / 2D); int k1 = net.minecraft.src.MathHelper.Floor_double(d7 - d11 / 2D); int l1 = net.minecraft.src.MathHelper.Floor_double(d7 + d11 / 2D); int i2 = net.minecraft.src.MathHelper.Floor_double(d8 - d10 / 2D); int j2 = net.minecraft.src.MathHelper.Floor_double(d8 + d10 / 2D); for (int k2 = i1; k2 <= j1; k2++) { for (int l2 = k1; l2 <= l1; l2++) { for (int i3 = i2; i3 <= j2; i3++) { double d12 = (((double)k2 + 0.5D) - d6) / (d10 / 2D); double d13 = (((double)l2 + 0.5D) - d7) / (d11 / 2D); double d14 = (((double)i3 + 0.5D) - d8) / (d10 / 2D); if (d12 * d12 + d13 * d13 + d14 * d14 >= 1.0D) { continue; } int j3 = world.GetBlockId(k2, l2, i3); if (j3 == net.minecraft.src.Block.SAND.ID) { world.SetBlock(k2, l2, i3, clayBlockId); } } } } } return(true); }
public override void HarvestBlock(net.minecraft.src.World world, net.minecraft.src.EntityPlayer entityplayer, int i, int j, int k, int l) { base.HarvestBlock(world, entityplayer, i, j, k, l); net.minecraft.src.Material material = world.GetBlockMaterial(i, j - 1, k); if (material.GetIsSolid() || material.GetIsLiquid()) { world.SetBlockWithNotify(i, j, k, net.minecraft.src.Block.WATER.ID); } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { base.OnNeighborBlockChange(world, i, j, k, l); net.minecraft.src.Material material = world.GetBlockMaterial(i, j + 1, k); if (material.IsSolid()) { world.SetBlockWithNotify(i, j, k, net.minecraft.src.Block.DIRT.ID); } }
public override bool OnItemUse(net.minecraft.src.ItemStack itemstack, net.minecraft.src.EntityPlayer entityplayer, net.minecraft.src.World world, int i, int j, int k, int l) { if (l == 0) { return(false); } if (!world.GetBlockMaterial(i, j, k).IsSolid()) { return(false); } if (l == 1) { j++; } if (l == 2) { k--; } if (l == 3) { k++; } if (l == 4) { i--; } if (l == 5) { i++; } if (!net.minecraft.src.Block.SIGN_POST.CanPlaceBlockAt(world, i, j, k)) { return(false); } if (l == 1) { world.SetBlockAndMetadataWithNotify( i, j, k, net.minecraft.src.Block.SIGN_POST.ID, net.minecraft.src.MathHelper.Floor_double((double)(((entityplayer.rotationYaw + 180F) * 16F) / 360F) + 0.5D) & 0xf); } else { world.SetBlockAndMetadataWithNotify(i, j, k, net.minecraft.src.Block.WALL_SIGN.ID, l); } itemstack.stackSize--; net.minecraft.src.TileEntitySign tileentitysign = (net.minecraft.src.TileEntitySign )world.GetBlockTileEntity(i, j, k); if (tileentitysign != null) { entityplayer.DisplayGUIEditSign(tileentitysign); } return(true); }
private bool[] Func_4035_j(net.minecraft.src.World world, int i, int j, int k) { for (int l = 0; l < 4; l++) { field_660_c[l] = 1000; int j1 = i; int i2 = j; int j2 = k; if (l == 0) { j1--; } if (l == 1) { j1++; } if (l == 2) { j2--; } if (l == 3) { j2++; } if (Func_309_k(world, j1, i2, j2) || world.GetBlockMaterial(j1, i2, j2) == blockMaterial && world.GetBlockMetadata(j1, i2, j2) == 0) { continue; } if (!Func_309_k(world, j1, i2 - 1, j2)) { field_660_c[l] = 0; } else { field_660_c[l] = Func_4034_a(world, j1, i2, j2, 1, l); } } int i1 = field_660_c[0]; for (int k1 = 1; k1 < 4; k1++) { if (field_660_c[k1] < i1) { i1 = field_660_c[k1]; } } for (int l1 = 0; l1 < 4; l1++) { field_658_b[l1] = field_660_c[l1] == i1; } return(field_658_b); }
protected internal virtual int Func_301_g(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockMaterial(i, j, k) != blockMaterial) { return(-1); } else { return(world.GetBlockMetadata(i, j, k)); } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { bool flag = false; if (isFreestanding) { if (!world.GetBlockMaterial(i, j - 1, k).IsSolid()) { flag = true; } } else { int i1 = world.GetBlockMetadata(i, j, k); flag = true; if (i1 == 2 && world.GetBlockMaterial(i, j, k + 1).IsSolid()) { flag = false; } if (i1 == 3 && world.GetBlockMaterial(i, j, k - 1).IsSolid()) { flag = false; } if (i1 == 4 && world.GetBlockMaterial(i + 1, j, k).IsSolid()) { flag = false; } if (i1 == 5 && world.GetBlockMaterial(i - 1, j, k).IsSolid()) { flag = false; } } if (flag) { DropBlockAsItem(world, i, j, k, world.GetBlockMetadata(i, j, k)); world.SetBlockWithNotify(i, j, k, 0); } base.OnNeighborBlockChange(world, i, j, k, l); }
private int Func_4034_a(net.minecraft.src.World world, int i, int j, int k, int l , int i1) { int j1 = 1000; for (int k1 = 0; k1 < 4; k1++) { if (k1 == 0 && i1 == 1 || k1 == 1 && i1 == 0 || k1 == 2 && i1 == 3 || k1 == 3 && i1 == 2) { continue; } int l1 = i; int i2 = j; int j2 = k; if (k1 == 0) { l1--; } if (k1 == 1) { l1++; } if (k1 == 2) { j2--; } if (k1 == 3) { j2++; } if (Func_309_k(world, l1, i2, j2) || world.GetBlockMaterial(l1, i2, j2) == blockMaterial && world.GetBlockMetadata(l1, i2, j2) == 0) { continue; } if (!Func_309_k(world, l1, i2 - 1, j2)) { return(l); } if (l >= 4) { continue; } int k2 = Func_4034_a(world, l1, i2, j2, l + 1, k1); if (k2 < j1) { j1 = k2; } } return(j1); }
public override bool CanPlaceBlockAt(net.minecraft.src.World world, int i, int j, int k) { int l = world.GetBlockId(i, j - 1, k); if (l == 0 || !net.minecraft.src.Block.blocksList[l].IsOpaqueCube()) { return(false); } else { return(world.GetBlockMaterial(i, j - 1, k).GetIsSolid()); } }
private bool Func_312_l(net.minecraft.src.World world, int i, int j, int k) { net.minecraft.src.Material material = world.GetBlockMaterial(i, j, k); if (material == blockMaterial) { return(false); } if (material == net.minecraft.src.Material.lava) { return(false); } else { return(!Func_309_k(world, i, j, k)); } }
// Referenced classes of package net.minecraft.src: // Block, Material, World, AxisAlignedBB public override bool CanPlaceBlockAt(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockId(i, j - 1, k) == ID) { return(true); } if (!world.GetBlockMaterial(i, j - 1, k).IsSolid()) { return(false); } else { return(base.CanPlaceBlockAt(world, i, j, k)); } }
private bool IsWaterNearby(net.minecraft.src.World world, int i, int j, int k) { for (int l = i - 4; l <= i + 4; l++) { for (int i1 = j; i1 <= j + 1; i1++) { for (int j1 = k - 4; j1 <= k + 4; j1++) { if (world.GetBlockMaterial(l, i1, j1) == net.minecraft.src.Material.water) { return(true); } } } } return(false); }
public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int k) { byte byte0 = 2; for (int l = i - byte0; l <= i + byte0; l++) { for (int i1 = j - byte0; i1 <= j + byte0; i1++) { for (int j1 = k - byte0; j1 <= k + byte0; j1++) { if (world.GetBlockMaterial(l, i1, j1) != net.minecraft.src.Material.water) { } } } } }
// Referenced classes of package net.minecraft.src: // WorldGenerator, World, Material, Block, // TileEntityChest, TileEntityMobSpawner, ItemStack, Item public override bool Generate(net.minecraft.src.World world, SharpBukkitLive.SharpBukkit.SharpRandom random , int i, int j, int k) { byte byte0 = 3; int l = random.Next(2) + 2; int i1 = random.Next(2) + 2; int j1 = 0; for (int k1 = i - l - 1; k1 <= i + l + 1; k1++) { for (int j2 = j - 1; j2 <= j + byte0 + 1; j2++) { for (int i3 = k - i1 - 1; i3 <= k + i1 + 1; i3++) { net.minecraft.src.Material material = world.GetBlockMaterial(k1, j2, i3); if (j2 == j - 1 && !material.IsSolid()) { return(false); } if (j2 == j + byte0 + 1 && !material.IsSolid()) { return(false); } if ((k1 == i - l - 1 || k1 == i + l + 1 || i3 == k - i1 - 1 || i3 == k + i1 + 1) && j2 == j && world.IsAirBlock(k1, j2, i3) && world.IsAirBlock(k1, j2 + 1, i3)) { j1++; } } } } if (j1 < 1 || j1 > 5) { return(false); } for (int l1 = i - l - 1; l1 <= i + l + 1; l1++) { for (int k2 = j + byte0; k2 >= j - 1; k2--) { for (int j3 = k - i1 - 1; j3 <= k + i1 + 1; j3++) { if (l1 == i - l - 1 || k2 == j - 1 || j3 == k - i1 - 1 || l1 == i + l + 1 || k2 == j + byte0 + 1 || j3 == k + i1 + 1) { if (k2 >= 0 && !world.GetBlockMaterial(l1, k2 - 1, j3).IsSolid()) { world.SetBlockWithNotify(l1, k2, j3, 0); continue; } if (!world.GetBlockMaterial(l1, k2, j3).IsSolid()) { continue; } if (k2 == j - 1 && random.Next(4) != 0) { world.SetBlockWithNotify(l1, k2, j3, net.minecraft.src.Block.MOSSY_COBBLESTONE.ID ); } else { world.SetBlockWithNotify(l1, k2, j3, net.minecraft.src.Block.COBBLESTONE.ID); } } else { world.SetBlockWithNotify(l1, k2, j3, 0); } } } } for (int i2 = 0; i2 < 2; i2++) { for (int l2 = 0; l2 < 3; l2++) { int k3 = (i + random.Next(l * 2 + 1)) - l; int l3 = j; int i4 = (k + random.Next(i1 * 2 + 1)) - i1; if (!world.IsAirBlock(k3, l3, i4)) { continue; } int j4 = 0; if (world.GetBlockMaterial(k3 - 1, l3, i4).IsSolid()) { j4++; } if (world.GetBlockMaterial(k3 + 1, l3, i4).IsSolid()) { j4++; } if (world.GetBlockMaterial(k3, l3, i4 - 1).IsSolid()) { j4++; } if (world.GetBlockMaterial(k3, l3, i4 + 1).IsSolid()) { j4++; } if (j4 != 1) { continue; } world.SetBlockWithNotify(k3, l3, i4, net.minecraft.src.Block.CHEST.ID); net.minecraft.src.TileEntityChest tileentitychest = (net.minecraft.src.TileEntityChest )world.GetBlockTileEntity(k3, l3, i4); int k4 = 0; do { if (k4 >= 8) { goto label0_break; } net.minecraft.src.ItemStack itemstack = PickCheckLootItem(random); if (itemstack != null) { tileentitychest.SetInventorySlotContents(random.Next(tileentitychest.GetSizeInventory ()), itemstack); } k4++; }while (true); label0_continue :; } label0_break :; } world.SetBlockWithNotify(i, j, k, net.minecraft.src.Block.MOB_SPAWNER.ID); net.minecraft.src.TileEntityMobSpawner tileentitymobspawner = (net.minecraft.src.TileEntityMobSpawner )world.GetBlockTileEntity(i, j, k); tileentitymobspawner.SetMobID(PickMobSpawner(random)); return(true); }
public override net.minecraft.src.ItemStack OnItemRightClick(net.minecraft.src.ItemStack itemstack, net.minecraft.src.World world, net.minecraft.src.EntityPlayer entityplayer ) { float f = 1.0F; float f1 = entityplayer.prevRotationPitch + (entityplayer.rotationPitch - entityplayer .prevRotationPitch) * f; float f2 = entityplayer.prevRotationYaw + (entityplayer.rotationYaw - entityplayer .prevRotationYaw) * f; double d = entityplayer.prevPosX + (entityplayer.posX - entityplayer.prevPosX) * (double)f; double d1 = (entityplayer.prevPosY + (entityplayer.posY - entityplayer.prevPosY) * (double)f + 1.6200000000000001D) - (double)entityplayer.yOffset; double d2 = entityplayer.prevPosZ + (entityplayer.posZ - entityplayer.prevPosZ) * (double)f; net.minecraft.src.Vec3D vec3d = net.minecraft.src.Vec3D.CreateVector(d, d1, d2); float f3 = net.minecraft.src.MathHelper.Cos(-f2 * 0.01745329F - 3.141593F); float f4 = net.minecraft.src.MathHelper.Sin(-f2 * 0.01745329F - 3.141593F); float f5 = -net.minecraft.src.MathHelper.Cos(-f1 * 0.01745329F); float f6 = net.minecraft.src.MathHelper.Sin(-f1 * 0.01745329F); float f7 = f4 * f5; float f8 = f6; float f9 = f3 * f5; double d3 = 5D; net.minecraft.src.Vec3D vec3d1 = vec3d.AddVector((double)f7 * d3, (double)f8 * d3 , (double)f9 * d3); net.minecraft.src.MovingObjectPosition movingobjectposition = world.RayTraceBlocks_do (vec3d, vec3d1, isFull == 0); if (movingobjectposition == null) { return(itemstack); } if (movingobjectposition.typeOfHit == net.minecraft.src.EnumMovingObjectType.TILE) { int i = movingobjectposition.blockX; int j = movingobjectposition.blockY; int k = movingobjectposition.blockZ; if (!world.CanMineBlock(entityplayer, i, j, k)) { return(itemstack); } if (isFull == 0) { if (world.GetBlockMaterial(i, j, k) == net.minecraft.src.Material.water && world. GetBlockMetadata(i, j, k) == 0) { world.SetBlockWithNotify(i, j, k, 0); return(new net.minecraft.src.ItemStack(net.minecraft.src.Item.WATER_BUCKET)); } if (world.GetBlockMaterial(i, j, k) == net.minecraft.src.Material.lava && world.GetBlockMetadata (i, j, k) == 0) { world.SetBlockWithNotify(i, j, k, 0); return(new net.minecraft.src.ItemStack(net.minecraft.src.Item.LAVA_BUCKET)); } } else { if (isFull < 0) { return(new net.minecraft.src.ItemStack(net.minecraft.src.Item.BUCKET)); } if (movingobjectposition.sideHit == 0) { j--; } if (movingobjectposition.sideHit == 1) { j++; } if (movingobjectposition.sideHit == 2) { k--; } if (movingobjectposition.sideHit == 3) { k++; } if (movingobjectposition.sideHit == 4) { i--; } if (movingobjectposition.sideHit == 5) { i++; } if (world.IsAirBlock(i, j, k) || !world.GetBlockMaterial(i, j, k).IsSolid()) { if (world.worldProvider.isHellWorld && isFull == net.minecraft.src.Block.WATER .ID) { world.PlaySoundEffect(d + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.rand.NextFloat() - world.rand.NextFloat()) * 0.8F); for (int l = 0; l < 8; l++) { world.SpawnParticle("largesmoke", (double)i + SharpRandom.NextDouble(), (double)j + SharpRandom.NextDouble(), (double)k + SharpRandom.NextDouble(), 0.0D, 0.0D, 0.0D); } } else { world.SetBlockAndMetadataWithNotify(i, j, k, isFull, 0); } return(new net.minecraft.src.ItemStack(net.minecraft.src.Item.BUCKET)); } } } else { if (isFull == 0 && (movingobjectposition.entityHit is net.minecraft.src.EntityCow )) { return(new net.minecraft.src.ItemStack(net.minecraft.src.Item.MILK_BUCKET)); } } return(itemstack); }
public virtual bool CreateExitLocation(net.minecraft.src.World world, net.minecraft.src.Entity entity) { byte byte0 = 16; double d = -1D; int i = net.minecraft.src.MathHelper.Floor_double(entity.posX); int j = net.minecraft.src.MathHelper.Floor_double(entity.posY); int k = net.minecraft.src.MathHelper.Floor_double(entity.posZ); int l = i; int i1 = j; int j1 = k; int k1 = 0; int l1 = field_28117_a.NextInt(4); for (int i2 = i - byte0; i2 <= i + byte0; i2++) { double d1 = ((double)i2 + 0.5D) - entity.posX; for (int j3 = k - byte0; j3 <= k + byte0; j3++) { double d3 = ((double)j3 + 0.5D) - entity.posZ; for (int k4 = 127; k4 >= 0; k4--) { if (!world.IsAirBlock(i2, k4, j3)) { continue; } for (; k4 > 0 && world.IsAirBlock(i2, k4 - 1, j3); k4--) { } for (int k5 = l1; k5 < l1 + 4; k5++) { int l6 = k5 % 2; int i8 = 1 - l6; if (k5 % 4 >= 2) { l6 = -l6; i8 = -i8; } for (int j9 = 0; j9 < 3; j9++) { for (int k10 = 0; k10 < 4; k10++) { for (int l11 = -1; l11 < 4; l11++) { int j12 = i2 + (k10 - 1) * l6 + j9 * i8; int l12 = k4 + l11; int j13 = (j3 + (k10 - 1) * i8) - j9 * l6; if (l11 < 0 && !world.GetBlockMaterial(j12, l12, j13).IsSolid() || l11 >= 0 && !world .IsAirBlock(j12, l12, j13)) { goto label0_break; } } } } double d5 = ((double)k4 + 0.5D) - entity.posY; double d7 = d1 * d1 + d5 * d5 + d3 * d3; if (d < 0.0D || d7 < d) { d = d7; l = i2; i1 = k4; j1 = j3; k1 = k5 % 4; } label0_continue :; } label0_break :; } } } if (d < 0.0D) { for (int j2 = i - byte0; j2 <= i + byte0; j2++) { double d2 = ((double)j2 + 0.5D) - entity.posX; for (int k3 = k - byte0; k3 <= k + byte0; k3++) { double d4 = ((double)k3 + 0.5D) - entity.posZ; for (int l4 = 127; l4 >= 0; l4--) { if (!world.IsAirBlock(j2, l4, k3)) { continue; } for (; world.IsAirBlock(j2, l4 - 1, k3); l4--) { } for (int l5 = l1; l5 < l1 + 2; l5++) { int i7 = l5 % 2; int j8 = 1 - i7; for (int k9 = 0; k9 < 4; k9++) { for (int l10 = -1; l10 < 4; l10++) { int i12 = j2 + (k9 - 1) * i7; int k12 = l4 + l10; int i13 = k3 + (k9 - 1) * j8; if (l10 < 0 && !world.GetBlockMaterial(i12, k12, i13).IsSolid() || l10 >= 0 && !world .IsAirBlock(i12, k12, i13)) { goto label1_break; } } } double d6 = ((double)l4 + 0.5D) - entity.posY; double d8 = d2 * d2 + d6 * d6 + d4 * d4; if (d < 0.0D || d8 < d) { d = d8; l = j2; i1 = l4; j1 = k3; k1 = l5 % 2; } label1_continue :; } label1_break :; } } } } int k2 = k1; int l2 = l; int i3 = i1; int l3 = j1; int i4 = k2 % 2; int j4 = 1 - i4; if (k2 % 4 >= 2) { i4 = -i4; j4 = -j4; } if (d < 0.0D) { if (i1 < 70) { i1 = 70; } if (i1 > 118) { i1 = 118; } i3 = i1; for (int i5 = -1; i5 <= 1; i5++) { for (int i6 = 1; i6 < 3; i6++) { for (int j7 = -1; j7 < 3; j7++) { int k8 = l2 + (i6 - 1) * i4 + i5 * j4; int l9 = i3 + j7; int i11 = (l3 + (i6 - 1) * j4) - i5 * i4; bool flag = j7 < 0; world.SetBlockWithNotify(k8, l9, i11, flag ? net.minecraft.src.Block.OBSIDIAN.ID : 0); } } } } for (int j5 = 0; j5 < 4; j5++) { world.editingBlocks = true; for (int j6 = 0; j6 < 4; j6++) { for (int k7 = -1; k7 < 4; k7++) { int l8 = l2 + (j6 - 1) * i4; int i10 = i3 + k7; int j11 = l3 + (j6 - 1) * j4; bool flag1 = j6 == 0 || j6 == 3 || k7 == -1 || k7 == 3; world.SetBlockWithNotify(l8, i10, j11, flag1 ? net.minecraft.src.Block.OBSIDIAN.ID : net.minecraft.src.Block.PORTAL.ID); } } world.editingBlocks = false; for (int k6 = 0; k6 < 4; k6++) { for (int l7 = -1; l7 < 4; l7++) { int i9 = l2 + (k6 - 1) * i4; int j10 = i3 + l7; int k11 = l3 + (k6 - 1) * j4; world.NotifyBlocksOfNeighborChange(i9, j10, k11, world.GetBlockId(i9, j10, k11)); } } } return(true); }
public override bool Generate(net.minecraft.src.World world, SharpBukkitLive.SharpBukkit.SharpRandom random , int i, int j, int k) { i -= 8; for (k -= 8; j > 0 && world.IsAirBlock(i, j, k); j--) { } j -= 4; bool[] aflag = new bool[2048]; int l = random.Next(4) + 4; for (int i1 = 0; i1 < l; i1++) { double d = random.NextDouble() * 6D + 3D; double d1 = random.NextDouble() * 4D + 2D; double d2 = random.NextDouble() * 6D + 3D; double d3 = random.NextDouble() * (16D - d - 2D) + 1.0D + d / 2D; double d4 = random.NextDouble() * (8D - d1 - 4D) + 2D + d1 / 2D; double d5 = random.NextDouble() * (16D - d2 - 2D) + 1.0D + d2 / 2D; for (int j4 = 1; j4 < 15; j4++) { for (int k4 = 1; k4 < 15; k4++) { for (int l4 = 1; l4 < 7; l4++) { double d6 = ((double)j4 - d3) / (d / 2D); double d7 = ((double)l4 - d4) / (d1 / 2D); double d8 = ((double)k4 - d5) / (d2 / 2D); double d9 = d6 * d6 + d7 * d7 + d8 * d8; if (d9 < 1.0D) { aflag[(j4 * 16 + k4) * 8 + l4] = true; } } } } } for (int j1 = 0; j1 < 16; j1++) { for (int j2 = 0; j2 < 16; j2++) { for (int j3 = 0; j3 < 8; j3++) { bool flag = !aflag[(j1 * 16 + j2) * 8 + j3] && (j1 < 15 && aflag[((j1 + 1) * 16 + j2) * 8 + j3] || j1 > 0 && aflag[((j1 - 1) * 16 + j2) * 8 + j3] || j2 < 15 && aflag [(j1 * 16 + (j2 + 1)) * 8 + j3] || j2 > 0 && aflag[(j1 * 16 + (j2 - 1)) * 8 + j3 ] || j3 < 7 && aflag[(j1 * 16 + j2) * 8 + (j3 + 1)] || j3 > 0 && aflag[(j1 * 16 + j2) * 8 + (j3 - 1)]); if (!flag) { continue; } net.minecraft.src.Material material = world.GetBlockMaterial(i + j1, j + j3, k + j2); if (j3 >= 4 && material.GetIsLiquid()) { return(false); } if (j3 < 4 && !material.IsSolid() && world.GetBlockId(i + j1, j + j3, k + j2) != field_15005_a) { return(false); } } } } for (int k1 = 0; k1 < 16; k1++) { for (int k2 = 0; k2 < 16; k2++) { for (int k3 = 0; k3 < 8; k3++) { if (aflag[(k1 * 16 + k2) * 8 + k3]) { world.SetBlock(i + k1, j + k3, k + k2, k3 < 4 ? field_15005_a : 0); } } } } for (int l1 = 0; l1 < 16; l1++) { for (int l2 = 0; l2 < 16; l2++) { for (int l3 = 4; l3 < 8; l3++) { if (aflag[(l1 * 16 + l2) * 8 + l3] && world.GetBlockId(i + l1, (j + l3) - 1, k + l2) == net.minecraft.src.Block.DIRT.ID && world.GetSavedLightValue(net.minecraft.src.EnumSkyBlock .Sky, i + l1, j + l3, k + l2) > 0) { world.SetBlock(i + l1, (j + l3) - 1, k + l2, net.minecraft.src.Block.GRASS.ID ); } } } } if (net.minecraft.src.Block.blocksList[field_15005_a].blockMaterial == net.minecraft.src.Material .lava) { for (int i2 = 0; i2 < 16; i2++) { for (int i3 = 0; i3 < 16; i3++) { for (int i4 = 0; i4 < 8; i4++) { bool flag1 = !aflag[(i2 * 16 + i3) * 8 + i4] && (i2 < 15 && aflag[((i2 + 1) * 16 + i3) * 8 + i4] || i2 > 0 && aflag[((i2 - 1) * 16 + i3) * 8 + i4] || i3 < 15 && aflag[(i2 * 16 + (i3 + 1)) * 8 + i4] || i3 > 0 && aflag[(i2 * 16 + (i3 - 1)) * 8 + i4] || i4 < 7 && aflag[(i2 * 16 + i3) * 8 + (i4 + 1)] || i4 > 0 && aflag[(i2 * 16 + i3) * 8 + (i4 - 1)]); if (flag1 && (i4 < 4 || random.Next(2) != 0) && world.GetBlockMaterial(i + i2, j + i4, k + i3).IsSolid()) { world.SetBlock(i + i2, j + i4, k + i3, net.minecraft.src.Block.STONE.ID); } } } } } return(true); }
private bool Func_4033_j(net.minecraft.src.World world, int i, int j, int k) { return(world.GetBlockMaterial(i, j, k).GetBurning()); }
public override bool CanBlockStay(net.minecraft.src.World world, int i, int j, int k) { return(world.GetBlockMaterial(i, j - 1, k).IsSolid()); }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpBukkitLive.SharpBukkit.SharpRandom random) { int l = Func_301_g(world, i, j, k); byte byte0 = 1; if (blockMaterial == net.minecraft.src.Material.lava && !world.worldProvider.isHellWorld) { byte0 = 2; } bool flag = true; if (l > 0) { int i1 = -100; field_659_a = 0; i1 = Func_307_e(world, i - 1, j, k, i1); i1 = Func_307_e(world, i + 1, j, k, i1); i1 = Func_307_e(world, i, j, k - 1, i1); i1 = Func_307_e(world, i, j, k + 1, i1); int j1 = i1 + byte0; if (j1 >= 8 || i1 < 0) { j1 = -1; } if (Func_301_g(world, i, j + 1, k) >= 0) { int l1 = Func_301_g(world, i, j + 1, k); if (l1 >= 8) { j1 = l1; } else { j1 = l1 + 8; } } if (field_659_a >= 2 && blockMaterial == net.minecraft.src.Material.water) { if (world.GetBlockMaterial(i, j - 1, k).IsSolid()) { j1 = 0; } else { if (world.GetBlockMaterial(i, j - 1, k) == blockMaterial && world.GetBlockMetadata (i, j, k) == 0) { j1 = 0; } } } if (blockMaterial == net.minecraft.src.Material.lava && l < 8 && j1 < 8 && j1 > l && random.Next(4) != 0) { j1 = l; flag = false; } if (j1 != l) { l = j1; if (l < 0) { world.SetBlockWithNotify(i, j, k, 0); } else { world.SetBlockMetadataWithNotify(i, j, k, l); world.ScheduleUpdateTick(i, j, k, ID, TickRate()); world.NotifyBlocksOfNeighborChange(i, j, k, ID); } } else { if (flag) { Func_30004_i(world, i, j, k); } } } else { Func_30004_i(world, i, j, k); } if (Func_312_l(world, i, j - 1, k)) { if (l >= 8) { world.SetBlockAndMetadataWithNotify(i, j - 1, k, ID, l); } else { world.SetBlockAndMetadataWithNotify(i, j - 1, k, ID, l + 8); } } else { if (l >= 0 && (l == 0 || Func_309_k(world, i, j - 1, k))) { bool[] aflag = Func_4035_j(world, i, j, k); int k1 = l + byte0; if (l >= 8) { k1 = 1; } if (k1 >= 8) { return; } if (aflag[0]) { Func_311_f(world, i - 1, j, k, k1); } if (aflag[1]) { Func_311_f(world, i + 1, j, k, k1); } if (aflag[2]) { Func_311_f(world, i, j, k - 1, k1); } if (aflag[3]) { Func_311_f(world, i, j, k + 1, k1); } } } }
public static int PerformSpawning(net.minecraft.src.World var0, bool var1, bool var2 ) { if (!var1 && !var2) { return(0); } else { eligibleChunksForSpawning.Clear(); int var3; int var6; for (var3 = 0; var3 < var0.playerEntities.Count; ++var3) { net.minecraft.src.EntityPlayer var4 = (net.minecraft.src.EntityPlayer)var0.playerEntities [var3]; int var5 = net.minecraft.src.MathHelper.Floor_double(var4.posX / 16.0D); var6 = net.minecraft.src.MathHelper.Floor_double(var4.posZ / 16.0D); byte var7 = 8; for (int var8 = -var7; var8 <= var7; ++var8) { for (int var9 = -var7; var9 <= var7; ++var9) { eligibleChunksForSpawning.Add(new net.minecraft.src.ChunkCoordIntPair(var8 + var5, var9 + var6)); } } } var3 = 0; net.minecraft.src.ChunkCoordinates var35 = var0.GetSpawnPoint(); net.minecraft.src.EnumCreatureType[] var36 = net.minecraft.src.EnumCreatureType.Values(); var6 = var36.Length; for (int var37 = 0; var37 < var6; ++var37) { net.minecraft.src.EnumCreatureType var38 = var36[var37]; if ((!var38.Func_21103_d() || var2) && (var38.Func_21103_d() || var1) && var0.CountEntities (var38.GetCreatureClass()) <= var38.GetMaxNumberOfCreature() * eligibleChunksForSpawning .Count / 256) { System.Collections.IEnumerator var39 = eligibleChunksForSpawning.GetEnumerator(); while (var39.MoveNext()) { net.minecraft.src.ChunkCoordIntPair var10 = (net.minecraft.src.ChunkCoordIntPair) var39.Current; net.minecraft.src.BiomeGenBase var11 = var0.GetWorldChunkManager().Func_4066_a(var10 ); System.Collections.IList var12 = var11.GetSpawnableList(var38); if (var12 != null && var12.Count > 0) { int var13 = 0; net.minecraft.src.SpawnListEntry var15; for (System.Collections.IEnumerator var14 = var12.GetEnumerator(); var14.MoveNext (); var13 += var15.spawnRarityRate) { var15 = (net.minecraft.src.SpawnListEntry)var14.Current; } int var40 = var0.rand.Next(var13); var15 = (net.minecraft.src.SpawnListEntry)var12[0]; System.Collections.IEnumerator var16 = var12.GetEnumerator(); while (var16.MoveNext()) { net.minecraft.src.SpawnListEntry var17 = (net.minecraft.src.SpawnListEntry)var16. Current; var40 -= var17.spawnRarityRate; if (var40 < 0) { var15 = var17; break; } } net.minecraft.src.ChunkPosition var41 = GetRandomSpawningPointInChunk(var0, var10 .X * 16, var10.Z * 16); int var42 = var41.x; int var18 = var41.y; int var19 = var41.z; if (!var0.IsBlockNormalCube(var42, var18, var19) && var0.GetBlockMaterial(var42, var18, var19) == var38.GetCreatureMaterial()) { int var20 = 0; for (int var21 = 0; var21 < 3; ++var21) { int var22 = var42; int var23 = var18; int var24 = var19; byte var25 = 6; for (int var26 = 0; var26 < 4; ++var26) { var22 += var0.rand.Next(var25) - var0.rand.Next(var25); var23 += var0.rand.Next(1) - var0.rand.Next(1); var24 += var0.rand.Next(var25) - var0.rand.Next(var25); if (Func_21167_a(var38, var0, var22, var23, var24)) { float var27 = (float)var22 + 0.5F; float var28 = (float)var23; float var29 = (float)var24 + 0.5F; if (var0.GetClosestPlayer((double)var27, (double)var28, (double)var29, 24.0D) == null) { float var30 = var27 - (float)var35.posX; float var31 = var28 - (float)var35.posY; float var32 = var29 - (float)var35.posZ; float var33 = var30 * var30 + var31 * var31 + var32 * var32; if (var33 >= 576.0F) { net.minecraft.src.EntityLiving var43; try { var43 = (net.minecraft.src.EntityLiving)(var15.entityClass.GetConstructor(new System.Type[] { typeof(net.minecraft.src.World) }).Invoke(new object[] { var0 })); } catch (System.Exception var34) { Sharpen.Runtime.PrintStackTrace(var34); return(var3); } var43.SetLocationAndAngles((double)var27, (double)var28, (double)var29, var0.rand .NextFloat() * 360.0F, 0.0F); if (var43.GetCanSpawnHere()) { ++var20; var0.AddEntity(var43); Func_21166_a(var43, var0, var27, var28, var29); if (var20 >= var43.GetMaxSpawnedInChunk()) { goto label113_continue; } } var3 += var20; } } } } } } } label113_continue :; } label113_break :; } } return(var3); } }