Пример #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());
            }
        }
Пример #2
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());
            }
        }
Пример #3
0
        public virtual void Func_272_a(net.minecraft.src.World world, int i, int j, int k
                                       , bool flag)
        {
            int l = world.GetBlockMetadata(i, j, k);

            if ((l & 8) != 0)
            {
                if (world.GetBlockId(i, j - 1, k) == ID)
                {
                    Func_272_a(world, i, j - 1, k, flag);
                }
                return;
            }
            bool flag1 = (world.GetBlockMetadata(i, j, k) & 4) > 0;

            if (flag1 == flag)
            {
                return;
            }
            if (world.GetBlockId(i, j + 1, k) == ID)
            {
                world.SetBlockMetadataWithNotify(i, j + 1, k, (l ^ 4) + 8);
            }
            world.SetBlockMetadataWithNotify(i, j, k, l ^ 4);
            world.MarkBlocksDirty(i, j - 1, k, i, j, k);
            world.SendSoundEffectToAllPlayersWithin64(null, 1003, i, j, k, 0);
        }
Пример #4
0
        public override bool BlockActivated(net.minecraft.src.World world, int i, int j,
                                            int k, net.minecraft.src.EntityPlayer entityplayer)
        {
            if (blockMaterial == net.minecraft.src.Material.iron)
            {
                return(true);
            }
            int l = world.GetBlockMetadata(i, j, k);

            if ((l & 8) != 0)
            {
                if (world.GetBlockId(i, j - 1, k) == ID)
                {
                    BlockActivated(world, i, j - 1, k, entityplayer);
                }
                return(true);
            }
            if (world.GetBlockId(i, j + 1, k) == ID)
            {
                world.SetBlockMetadataWithNotify(i, j + 1, k, (l ^ 4) + 8);
            }
            world.SetBlockMetadataWithNotify(i, j, k, l ^ 4);
            world.MarkBlocksDirty(i, j - 1, k, i, j, k);
            world.SendSoundEffectToAllPlayersWithin64(entityplayer, 1003, i, j, k, 0);
            return(true);
        }
Пример #5
0
        private void Func_30004_i(net.minecraft.src.World world, int i, int j, int k)
        {
            int l = world.GetBlockMetadata(i, j, k);

            world.SetBlockAndMetadata(i, j, k, ID + 1, l);
            world.MarkBlocksDirty(i, j, k, i, j, k);
            world.MarkBlockNeedsUpdate(i, j, k);
        }
Пример #6
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;
        }
Пример #7
0
        public override void UpdateTick(net.minecraft.src.World world, int i, int j, int
                                        k, SharpRandom random)
        {
            if (world.singleplayerWorld)
            {
                return;
            }
            int l = world.GetBlockMetadata(i, j, k);

            if ((l & 8) == 0)
            {
                return;
            }
            world.SetBlockMetadataWithNotify(i, j, k, l & 7);
            world.NotifyBlocksOfNeighborChange(i, j, k, ID);
            int i1 = l & 7;

            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.PlaySoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "random.click"
                                  , 0.3F, 0.5F);
            world.MarkBlocksDirty(i, j, k, i, j, k);
        }
Пример #8
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);
        }
Пример #9
0
        private void Func_21031_a(net.minecraft.src.World world, int i, int j, int k, int
                                  l, int i1, int j1)
        {
            int k1 = world.GetBlockMetadata(i, j, k);
            int l1 = 0;

            wiresProvidePower = false;
            bool flag = world.IsBlockIndirectlyGettingPowered(i, j, k);

            wiresProvidePower = true;
            if (flag)
            {
                l1 = 15;
            }
            else
            {
                for (int i2 = 0; i2 < 4; i2++)
                {
                    int k2 = i;
                    int i3 = k;
                    if (i2 == 0)
                    {
                        k2--;
                    }
                    if (i2 == 1)
                    {
                        k2++;
                    }
                    if (i2 == 2)
                    {
                        i3--;
                    }
                    if (i2 == 3)
                    {
                        i3++;
                    }
                    if (k2 != l || j != i1 || i3 != j1)
                    {
                        l1 = GetMaxCurrentStrength(world, k2, j, i3, l1);
                    }
                    if (world.IsBlockNormalCube(k2, j, i3) && !world.IsBlockNormalCube(i, j + 1, k))
                    {
                        if (k2 != l || j + 1 != i1 || i3 != j1)
                        {
                            l1 = GetMaxCurrentStrength(world, k2, j + 1, i3, l1);
                        }
                        continue;
                    }
                    if (!world.IsBlockNormalCube(k2, j, i3) && (k2 != l || j - 1 != i1 || i3 != j1))
                    {
                        l1 = GetMaxCurrentStrength(world, k2, j - 1, i3, l1);
                    }
                }
                if (l1 > 0)
                {
                    l1--;
                }
                else
                {
                    l1 = 0;
                }
            }
            if (k1 != l1)
            {
                world.editingBlocks = true;
                world.SetBlockMetadataWithNotify(i, j, k, l1);
                world.MarkBlocksDirty(i, j, k, i, j, k);
                world.editingBlocks = false;
                for (int j2 = 0; j2 < 4; j2++)
                {
                    int l2 = i;
                    int j3 = k;
                    int k3 = j - 1;
                    if (j2 == 0)
                    {
                        l2--;
                    }
                    if (j2 == 1)
                    {
                        l2++;
                    }
                    if (j2 == 2)
                    {
                        j3--;
                    }
                    if (j2 == 3)
                    {
                        j3++;
                    }
                    if (world.IsBlockNormalCube(l2, j, j3))
                    {
                        k3 += 2;
                    }
                    int l3 = 0;
                    l3 = GetMaxCurrentStrength(world, l2, j, j3, -1);
                    l1 = world.GetBlockMetadata(i, j, k);
                    if (l1 > 0)
                    {
                        l1--;
                    }
                    if (l3 >= 0 && l3 != l1)
                    {
                        Func_21031_a(world, l2, j, j3, i, j, k);
                    }
                    l3 = GetMaxCurrentStrength(world, l2, k3, j3, -1);
                    l1 = world.GetBlockMetadata(i, j, k);
                    if (l1 > 0)
                    {
                        l1--;
                    }
                    if (l3 >= 0 && l3 != l1)
                    {
                        Func_21031_a(world, l2, k3, j3, i, j, k);
                    }
                }
                if (k1 == 0 || l1 == 0)
                {
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i - 1, j, k));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i + 1, j, k));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j - 1, k));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j + 1, k));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k - 1));
                    field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k + 1));
                }
            }
        }