Ejemplo 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());
            }
        }
Ejemplo n.º 2
0
        public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j,
                                            int k)
        {
            int l = world.GetBlockMetadata(i, j, k);

            if (l > 0)
            {
                world.NotifyBlocksOfNeighborChange(i, j, k, ID);
                world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
            }
            base.OnBlockRemoval(world, i, j, k);
        }
Ejemplo n.º 3
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());
            }
        }
Ejemplo n.º 4
0
 public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j,
                                     int k)
 {
     base.OnBlockRemoval(world, i, j, k);
     if (world.singleplayerWorld)
     {
         return;
     }
     world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
     world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
     UpdateAndPropagateCurrentStrength(world, i, j, k);
     NotifyWireNeighborsOfNeighborChange(world, i - 1, j, k);
     NotifyWireNeighborsOfNeighborChange(world, i + 1, j, k);
     NotifyWireNeighborsOfNeighborChange(world, i, j, k - 1);
     NotifyWireNeighborsOfNeighborChange(world, i, j, k + 1);
     if (world.IsBlockNormalCube(i - 1, j, k))
     {
         NotifyWireNeighborsOfNeighborChange(world, i - 1, j + 1, k);
     }
     else
     {
         NotifyWireNeighborsOfNeighborChange(world, i - 1, j - 1, k);
     }
     if (world.IsBlockNormalCube(i + 1, j, k))
     {
         NotifyWireNeighborsOfNeighborChange(world, i + 1, j + 1, k);
     }
     else
     {
         NotifyWireNeighborsOfNeighborChange(world, i + 1, j - 1, k);
     }
     if (world.IsBlockNormalCube(i, j, k - 1))
     {
         NotifyWireNeighborsOfNeighborChange(world, i, j + 1, k - 1);
     }
     else
     {
         NotifyWireNeighborsOfNeighborChange(world, i, j - 1, k - 1);
     }
     if (world.IsBlockNormalCube(i, j, k + 1))
     {
         NotifyWireNeighborsOfNeighborChange(world, i, j + 1, k + 1);
     }
     else
     {
         NotifyWireNeighborsOfNeighborChange(world, i, j - 1, k + 1);
     }
 }
Ejemplo n.º 5
0
        private void UpdateAndPropagateCurrentStrength(net.minecraft.src.World world, int
                                                       i, int j, int k)
        {
            Func_21031_a(world, i, j, k, i, j, k);
            List <ChunkPosition> arraylist = new List <ChunkPosition>(field_21032_b);

            field_21032_b.Clear();
            for (int l = 0; l < arraylist.Count; l++)
            {
                net.minecraft.src.ChunkPosition chunkposition = (net.minecraft.src.ChunkPosition)
                                                                arraylist[l];
                world.NotifyBlocksOfNeighborChange(chunkposition.x, chunkposition.y, chunkposition
                                                   .z, ID);
            }
        }
Ejemplo n.º 6
0
 public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID);
     world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID);
     world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID);
     world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID);
     world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
     world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
 }
Ejemplo n.º 7
0
        public override void OnBlockRemoval(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++)
                    {
                        world.NotifyBlocksOfNeighborChange(l, i1, j1, world.GetBlockId(l, i1, j1));
                    }
                }
            }
        }
Ejemplo n.º 8
0
 public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j,
                                     int k)
 {
     if (torchActive)
     {
         world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
         world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID);
     }
 }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 10
0
 private void NotifyWireNeighborsOfNeighborChange(net.minecraft.src.World world, int
                                                  i, int j, int k)
 {
     if (world.GetBlockId(i, j, k) != ID)
     {
         return;
     }
     else
     {
         world.NotifyBlocksOfNeighborChange(i, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID);
         world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
         return;
     }
 }
Ejemplo n.º 11
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);
        }
Ejemplo n.º 12
0
 public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int
                                   k)
 {
     if (world.GetBlockMetadata(i, j, k) == 0)
     {
         base.OnBlockAdded(world, i, j, k);
     }
     if (torchActive)
     {
         world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
         world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID);
         world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID);
     }
 }
Ejemplo n.º 13
0
        public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j,
                                            int k)
        {
            int l = world.GetBlockMetadata(i, j, k);

            if ((l & 8) > 0)
            {
                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);
                            }
                        }
                    }
                }
            }
            base.OnBlockRemoval(world, i, j, k);
        }
Ejemplo n.º 14
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);
                    }
                }
            }
        }
Ejemplo n.º 15
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);
        }
Ejemplo n.º 16
0
        public override void OnNeighborBlockChange(net.minecraft.src.World world, int i,
                                                   int j, int k, int l)
        {
            if (world.singleplayerWorld)
            {
                return;
            }
            int i1 = world.GetBlockMetadata(i, j, k);
            int j1 = i1;

            if (field_27034_a)
            {
                j1 &= 7;
            }
            bool flag = false;

            if (!world.IsBlockNormalCube(i, j - 1, k))
            {
                flag = true;
            }
            if (j1 == 2 && !world.IsBlockNormalCube(i + 1, j, k))
            {
                flag = true;
            }
            if (j1 == 3 && !world.IsBlockNormalCube(i - 1, j, k))
            {
                flag = true;
            }
            if (j1 == 4 && !world.IsBlockNormalCube(i, j, k - 1))
            {
                flag = true;
            }
            if (j1 == 5 && !world.IsBlockNormalCube(i, j, k + 1))
            {
                flag = true;
            }
            if (flag)
            {
                DropBlockAsItem(world, i, j, k, world.GetBlockMetadata(i, j, k));
                world.SetBlockWithNotify(i, j, k, 0);
            }
            else
            {
                if (ID == net.minecraft.src.Block.GOLDEN_RAIL.ID)
                {
                    bool flag1 = world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered
                                     (i, j + 1, k);
                    flag1 = flag1 || Func_27032_a(world, i, j, k, i1, true, 0) || Func_27032_a(world,
                                                                                               i, j, k, i1, false, 0);
                    bool flag2 = false;
                    if (flag1 && (i1 & 8) == 0)
                    {
                        world.SetBlockMetadataWithNotify(i, j, k, j1 | 8);
                        flag2 = true;
                    }
                    else
                    {
                        if (!flag1 && (i1 & 8) != 0)
                        {
                            world.SetBlockMetadataWithNotify(i, j, k, j1);
                            flag2 = true;
                        }
                    }
                    if (flag2)
                    {
                        world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID);
                        if (j1 == 2 || j1 == 3 || j1 == 4 || j1 == 5)
                        {
                            world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID);
                        }
                    }
                }
                else
                {
                    if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower() && !field_27034_a &&
                        net.minecraft.src.RailLogic.GetNAdjacentTracks(new net.minecraft.src.RailLogic
                                                                           (this, world, i, j, k)) == 3)
                    {
                        Func_4038_g(world, i, j, k, false);
                    }
                }
            }
        }
Ejemplo n.º 17
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 != 1)
            {
                return(false);
            }
            j++;
            net.minecraft.src.Block block;
            if (field_260_a == net.minecraft.src.Material.wood)
            {
                block = net.minecraft.src.Block.WOODEN_DOOR;
            }
            else
            {
                block = net.minecraft.src.Block.IRON_DOOR_BLOCK;
            }
            if (!block.CanPlaceBlockAt(world, i, j, k))
            {
                return(false);
            }
            int i1 = net.minecraft.src.MathHelper.Floor_double((double)(((entityplayer.rotationYaw
                                                                          + 180F) * 4F) / 360F) - 0.5D) & 3;
            byte byte0 = 0;
            byte byte1 = 0;

            if (i1 == 0)
            {
                byte1 = 1;
            }
            if (i1 == 1)
            {
                byte0 = unchecked ((byte)(-1));
            }
            if (i1 == 2)
            {
                byte1 = unchecked ((byte)(-1));
            }
            if (i1 == 3)
            {
                byte0 = 1;
            }
            int j1 = (world.IsBlockNormalCube(i - byte0, j, k - byte1) ? 1 : 0) + (world.IsBlockNormalCube
                                                                                       (i - byte0, j + 1, k - byte1) ? 1 : 0);
            int k1 = (world.IsBlockNormalCube(i + byte0, j, k + byte1) ? 1 : 0) + (world.IsBlockNormalCube
                                                                                       (i + byte0, j + 1, k + byte1) ? 1 : 0);
            bool flag = world.GetBlockId(i - byte0, j, k - byte1) == block.ID || world.GetBlockId
                            (i - byte0, j + 1, k - byte1) == block.ID;
            bool flag1 = world.GetBlockId(i + byte0, j, k + byte1) == block.ID || world.
                         GetBlockId(i + byte0, j + 1, k + byte1) == block.ID;
            bool flag2 = false;

            if (flag && !flag1)
            {
                flag2 = true;
            }
            else
            {
                if (k1 > j1)
                {
                    flag2 = true;
                }
            }
            if (flag2)
            {
                i1  = i1 - 1 & 3;
                i1 += 4;
            }
            world.editingBlocks = true;
            world.SetBlockAndMetadataWithNotify(i, j, k, block.ID, i1);
            world.SetBlockAndMetadataWithNotify(i, j + 1, k, block.ID, i1 + 8);
            world.editingBlocks = false;
            world.NotifyBlocksOfNeighborChange(i, j, k, block.ID);
            world.NotifyBlocksOfNeighborChange(i, j + 1, k, block.ID);
            itemstack.stackSize--;
            return(true);
        }