Exemplo n.º 1
0
        private void Func_27035_f(net.minecraft.src.World world, int i, int j, int k, int
                                  l)
        {
            bool          flag  = (l & 8) != 0;
            bool          flag1 = false;
            float         f     = 0.125F;
            List <Entity> list  = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType
                                                                  (typeof(net.minecraft.src.EntityMinecart)), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool
                                                                  ((float)i + f, j, (float)k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k
                                                                                                                                                 + 1) - f));

            if (list.Count > 0)
            {
                flag1 = true;
            }
            if (flag1 && !flag)
            {
                world.SetBlockMetadataWithNotify(i, j, k, l | 8);
                world.NotifyBlocksOfNeighborChange(i, j, k, ID);
                world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                world.MarkBlocksDirty(i, j, k, i, j, k);
            }
            if (!flag1 && flag)
            {
                world.SetBlockMetadataWithNotify(i, j, k, l & 7);
                world.NotifyBlocksOfNeighborChange(i, j, k, ID);
                world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                world.MarkBlocksDirty(i, j, k, i, j, k);
            }
            if (flag1)
            {
                world.ScheduleUpdateTick(i, j, k, ID, TickRate());
            }
        }
Exemplo n.º 2
0
 public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     base.OnBlockAdded(world, i, j, k);
     if (world.GetBlockId(i, j, k) == ID)
     {
         world.ScheduleUpdateTick(i, j, k, ID, TickRate());
     }
 }
Exemplo n.º 3
0
        private void Func_30005_i(net.minecraft.src.World world, int i, int j, int k)
        {
            int l = world.GetBlockMetadata(i, j, k);

            world.editingBlocks = true;
            world.SetBlockAndMetadata(i, j, k, ID - 1, l);
            world.MarkBlocksDirty(i, j, k, i, j, k);
            world.ScheduleUpdateTick(i, j, k, ID - 1, TickRate());
            world.editingBlocks = false;
        }
Exemplo n.º 4
0
        private void SetStateIfMobInteractsWithPlate(net.minecraft.src.World world, int i
                                                     , int j, int k)
        {
            bool          flag  = world.GetBlockMetadata(i, j, k) == 1;
            bool          flag1 = false;
            float         f     = 0.125F;
            List <Entity> list  = null;

            if (triggerMobType == net.minecraft.src.EnumMobType.everything)
            {
                list = world.GetEntitiesWithinAABBExcludingEntity(null, net.minecraft.src.AxisAlignedBB
                                                                  .GetBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (double
                                                                                                                                              )j + 0.25D, (float)(k + 1) - f));
            }
            if (triggerMobType == net.minecraft.src.EnumMobType.mobs)
            {
                list = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType(typeof(net.minecraft.src.EntityLiving
                                                                                          )), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool((float)i + f, j, (float
                                                                                                                                                                       )k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k + 1) - f));
            }
            if (triggerMobType == net.minecraft.src.EnumMobType.players)
            {
                list = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType(typeof(net.minecraft.src.EntityPlayer
                                                                                          )), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool((float)i + f, j, (float
                                                                                                                                                                       )k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k + 1) - f));
            }
            if (list.Count > 0)
            {
                flag1 = true;
            }
            if (flag1 && !flag)
            {
                world.SetBlockMetadataWithNotify(i, j, k, 1);
                world.NotifyBlocksOfNeighborChange(i, j, k, ID);
                world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                world.MarkBlocksDirty(i, j, k, i, j, k);
                world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.10000000000000001D, (double
                                                                                           )k + 0.5D, "random.click", 0.3F, 0.6F);
            }
            if (!flag1 && flag)
            {
                world.SetBlockMetadataWithNotify(i, j, k, 0);
                world.NotifyBlocksOfNeighborChange(i, j, k, ID);
                world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                world.MarkBlocksDirty(i, j, k, i, j, k);
                world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.10000000000000001D, (double
                                                                                           )k + 0.5D, "random.click", 0.3F, 0.5F);
            }
            if (flag1)
            {
                world.ScheduleUpdateTick(i, j, k, ID, TickRate());
            }
        }
Exemplo n.º 5
0
 public override void OnNeighborBlockChange(net.minecraft.src.World world, int i,
                                            int j, int k, int l)
 {
     if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower())
     {
         bool flag = world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered
                         (i, j + 1, k);
         if (flag)
         {
             world.ScheduleUpdateTick(i, j, k, ID, TickRate());
         }
     }
 }
Exemplo n.º 6
0
        public override bool BlockActivated(net.minecraft.src.World world, int i, int j,
                                            int k, net.minecraft.src.EntityPlayer entityplayer)
        {
            int l  = world.GetBlockMetadata(i, j, k);
            int i1 = l & 7;
            int j1 = 8 - (l & 8);

            if (j1 == 0)
            {
                return(true);
            }
            world.SetBlockMetadataWithNotify(i, j, k, i1 + j1);
            world.MarkBlocksDirty(i, j, k, i, j, k);
            world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "random.click"
                                  , 0.3F, 0.6F);
            world.NotifyBlocksOfNeighborChange(i, j, k, ID);
            if (i1 == 1)
            {
                world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID);
            }
            else
            {
                if (i1 == 2)
                {
                    world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID);
                }
                else
                {
                    if (i1 == 3)
                    {
                        world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID);
                    }
                    else
                    {
                        if (i1 == 4)
                        {
                            world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID);
                        }
                        else
                        {
                            world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                        }
                    }
                }
            }
            world.ScheduleUpdateTick(i, j, k, ID, TickRate());
            return(true);
        }
Exemplo n.º 7
0
 public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     if (world.GetBlockId(i, j - 1, k) == net.minecraft.src.Block.OBSIDIAN.ID &&
         net.minecraft.src.Block.PORTAL.TryToCreatePortal(world, i, j, k))
     {
         return;
     }
     if (!world.IsBlockNormalCube(i, j - 1, k) && !Func_268_g(world, i, j, k))
     {
         world.SetBlockWithNotify(i, j, k, 0);
         return;
     }
     else
     {
         world.ScheduleUpdateTick(i, j, k, ID, TickRate());
         return;
     }
 }
Exemplo n.º 8
0
 // Referenced classes of package net.minecraft.src:
 //            Block, Material, World, EntityFallingSand,
 //            BlockFire
 public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     world.ScheduleUpdateTick(i, j, k, ID, TickRate());
 }
Exemplo n.º 9
0
        public override void UpdateTick(net.minecraft.src.World world, int i, int j, int
                                        k, SharpBukkitLive.SharpBukkit.SharpRandom random)
        {
            bool flag = world.GetBlockId(i, j - 1, k) == net.minecraft.src.Block.NETHERRACK.ID;

            if (!CanPlaceBlockAt(world, i, j, k))
            {
                world.SetBlockWithNotify(i, j, k, 0);
            }
            if (!flag && world.Func_27068_v() && (world.CanLightningStrikeAt(i, j, k) || world
                                                  .CanLightningStrikeAt(i - 1, j, k) || world.CanLightningStrikeAt(i + 1, j, k) ||
                                                  world.CanLightningStrikeAt(i, j, k - 1) || world.CanLightningStrikeAt(i, j, k +
                                                                                                                        1)))
            {
                world.SetBlockWithNotify(i, j, k, 0);
                return;
            }
            int l = world.GetBlockMetadata(i, j, k);

            if (l < 15)
            {
                world.SetBlockMetadata(i, j, k, l + random.Next(3) / 2);
            }
            world.ScheduleUpdateTick(i, j, k, ID, TickRate());
            if (!flag && !Func_268_g(world, i, j, k))
            {
                if (!world.IsBlockNormalCube(i, j - 1, k) || l > 3)
                {
                    world.SetBlockWithNotify(i, j, k, 0);
                }
                return;
            }
            if (!flag && !CanBlockCatchFire(world, i, j - 1, k) && l == 15 && random.Next(
                    4) == 0)
            {
                world.SetBlockWithNotify(i, j, k, 0);
                return;
            }
            TryToCatchBlockOnFire(world, i + 1, j, k, 300, random, l);
            TryToCatchBlockOnFire(world, i - 1, j, k, 300, random, l);
            TryToCatchBlockOnFire(world, i, j - 1, k, 250, random, l);
            TryToCatchBlockOnFire(world, i, j + 1, k, 250, random, l);
            TryToCatchBlockOnFire(world, i, j, k - 1, 300, random, l);
            TryToCatchBlockOnFire(world, i, j, k + 1, 300, random, l);
            for (int i1 = i - 1; i1 <= i + 1; i1++)
            {
                for (int j1 = k - 1; j1 <= k + 1; j1++)
                {
                    for (int k1 = j - 1; k1 <= j + 4; k1++)
                    {
                        if (i1 == i && k1 == j && j1 == k)
                        {
                            continue;
                        }
                        int l1 = 100;
                        if (k1 > j + 1)
                        {
                            l1 += (k1 - (j + 1)) * 100;
                        }
                        int i2 = GetChanceOfNeighborsEncouragingFire(world, i1, k1, j1);
                        if (i2 <= 0)
                        {
                            continue;
                        }
                        int j2 = (i2 + 40) / (l + 30);
                        if (j2 <= 0 || random.Next(l1) > j2 || world.Func_27068_v() && world.CanLightningStrikeAt
                                (i1, k1, j1) || world.CanLightningStrikeAt(i1 - 1, k1, k) || world.CanLightningStrikeAt
                                (i1 + 1, k1, j1) || world.CanLightningStrikeAt(i1, k1, j1 - 1) || world.CanLightningStrikeAt
                                (i1, k1, j1 + 1))
                        {
                            continue;
                        }
                        int k2 = l + random.Next(5) / 4;
                        if (k2 > 15)
                        {
                            k2 = 15;
                        }
                        world.SetBlockAndMetadataWithNotify(i1, k1, j1, ID, k2);
                    }
                }
            }
        }
Exemplo n.º 10
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);
                    }
                }
            }
        }