Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 // 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);
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 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));
     }
 }
Exemplo n.º 6
0
 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);
         }
     }
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 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);
     }
 }
Exemplo n.º 9
0
 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);
     }
 }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
 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));
     }
 }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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());
            }
        }
Exemplo n.º 16
0
 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));
     }
 }
Exemplo n.º 17
0
 // 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));
     }
 }
Exemplo n.º 18
0
 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);
 }
Exemplo n.º 19
0
        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)
                        {
                        }
                    }
                }
            }
        }
Exemplo n.º 20
0
        // 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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
 private bool Func_4033_j(net.minecraft.src.World world, int i, int j, int k)
 {
     return(world.GetBlockMaterial(i, j, k).GetBurning());
 }
Exemplo n.º 25
0
 public override bool CanBlockStay(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     return(world.GetBlockMaterial(i, j - 1, k).IsSolid());
 }
Exemplo n.º 26
0
        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);
                    }
                }
            }
        }
Exemplo n.º 27
0
 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);
     }
 }