Exemple #1
0
 public EntityLightningBolt(net.minecraft.src.World world, double d, double d1, double
                            d2)
     : base(world)
 {
     // Referenced classes of package net.minecraft.src:
     //            EntityWeatherEffect, World, MathHelper, Block,
     //            BlockFire, AxisAlignedBB, Entity, NBTTagCompound
     field_27019_a = 0L;
     SetLocationAndAngles(d, d1, d2, 0.0F, 0.0F);
     field_27018_b = 2;
     field_27019_a = rand.NextLong();
     field_27020_c = rand.Next(3) + 1;
     if (world.difficultySetting >= 2 && world.DoChunksNearChunkExist(net.minecraft.src.MathHelper
                                                                      .Floor_double(d), net.minecraft.src.MathHelper.Floor_double(d1), net.minecraft.src.MathHelper
                                                                      .Floor_double(d2), 10))
     {
         int i  = net.minecraft.src.MathHelper.Floor_double(d);
         int k  = net.minecraft.src.MathHelper.Floor_double(d1);
         int i1 = net.minecraft.src.MathHelper.Floor_double(d2);
         if (world.GetBlockId(i, k, i1) == 0 && net.minecraft.src.Block.FIRE.CanPlaceBlockAt
                 (world, i, k, i1))
         {
             world.SetBlockWithNotify(i, k, i1, net.minecraft.src.Block.FIRE.ID);
         }
         for (int j = 0; j < 4; j++)
         {
             int l  = (net.minecraft.src.MathHelper.Floor_double(d) + rand.Next(3)) - 1;
             int j1 = (net.minecraft.src.MathHelper.Floor_double(d1) + rand.Next(3)) - 1;
             int k1 = (net.minecraft.src.MathHelper.Floor_double(d2) + rand.Next(3)) - 1;
             if (world.GetBlockId(l, j1, k1) == 0 && net.minecraft.src.Block.FIRE.CanPlaceBlockAt
                     (world, l, j1, k1))
             {
                 world.SetBlockWithNotify(l, j1, k1, net.minecraft.src.Block.FIRE.ID);
             }
         }
     }
 }
Exemple #2
0
        public virtual void Func_4107_a(net.minecraft.src.World world)
        {
            int i = (field_960_e - field_956_b) + 1;
            int j = (field_959_f - field_962_c) + 1;
            int k = (field_958_g - field_961_d) + 1;
            int l = i * j * k;

            if (l > 32768)
            {
                System.Console.Out.WriteLine("Light too large, skipping!");
                return;
            }
            int  i1    = 0;
            int  j1    = 0;
            bool flag  = false;
            bool flag1 = false;

            for (int k1 = field_956_b; k1 <= field_960_e; k1++)
            {
                for (int l1 = field_961_d; l1 <= field_958_g; l1++)
                {
                    int  i2    = k1 >> 4;
                    int  j2    = l1 >> 4;
                    bool flag2 = false;
                    if (flag && i2 == i1 && j2 == j1)
                    {
                        flag2 = flag1;
                    }
                    else
                    {
                        flag2 = world.DoChunksNearChunkExist(k1, 0, l1, 1);
                        if (flag2)
                        {
                            net.minecraft.src.Chunk chunk = world.GetChunkFromChunkCoords(k1 >> 4, l1 >> 4);
                            if (chunk.Func_21101_g())
                            {
                                flag2 = false;
                            }
                        }
                        flag1 = flag2;
                        i1    = i2;
                        j1    = j2;
                    }
                    if (!flag2)
                    {
                        continue;
                    }
                    if (field_962_c < 0)
                    {
                        field_962_c = 0;
                    }
                    if (field_959_f >= 128)
                    {
                        field_959_f = 127;
                    }
                    for (int k2 = field_962_c; k2 <= field_959_f; k2++)
                    {
                        int l2 = world.GetSavedLightValue(field_957_a, k1, k2, l1);
                        int i3 = 0;
                        int j3 = world.GetBlockId(k1, k2, l1);
                        int k3 = net.minecraft.src.Block.lightOpacity[j3];
                        if (k3 == 0)
                        {
                            k3 = 1;
                        }
                        int l3 = 0;
                        if (field_957_a == net.minecraft.src.EnumSkyBlock.Sky)
                        {
                            if (world.CanExistingBlockSeeTheSky(k1, k2, l1))
                            {
                                l3 = 15;
                            }
                        }
                        else
                        {
                            if (field_957_a == net.minecraft.src.EnumSkyBlock.Block)
                            {
                                l3 = net.minecraft.src.Block.lightValue[j3];
                            }
                        }
                        if (k3 >= 15 && l3 == 0)
                        {
                            i3 = 0;
                        }
                        else
                        {
                            int i4 = world.GetSavedLightValue(field_957_a, k1 - 1, k2, l1);
                            int k4 = world.GetSavedLightValue(field_957_a, k1 + 1, k2, l1);
                            int l4 = world.GetSavedLightValue(field_957_a, k1, k2 - 1, l1);
                            int i5 = world.GetSavedLightValue(field_957_a, k1, k2 + 1, l1);
                            int j5 = world.GetSavedLightValue(field_957_a, k1, k2, l1 - 1);
                            int k5 = world.GetSavedLightValue(field_957_a, k1, k2, l1 + 1);
                            i3 = i4;
                            if (k4 > i3)
                            {
                                i3 = k4;
                            }
                            if (l4 > i3)
                            {
                                i3 = l4;
                            }
                            if (i5 > i3)
                            {
                                i3 = i5;
                            }
                            if (j5 > i3)
                            {
                                i3 = j5;
                            }
                            if (k5 > i3)
                            {
                                i3 = k5;
                            }
                            i3 -= k3;
                            if (i3 < 0)
                            {
                                i3 = 0;
                            }
                            if (l3 > i3)
                            {
                                i3 = l3;
                            }
                        }
                        if (l2 == i3)
                        {
                            continue;
                        }
                        world.SetLightValue(field_957_a, k1, k2, l1, i3);
                        int j4 = i3 - 1;
                        if (j4 < 0)
                        {
                            j4 = 0;
                        }
                        world.NeighborLightPropagationChanged(field_957_a, k1 - 1, k2, l1, j4);
                        world.NeighborLightPropagationChanged(field_957_a, k1, k2 - 1, l1, j4);
                        world.NeighborLightPropagationChanged(field_957_a, k1, k2, l1 - 1, j4);
                        if (k1 + 1 >= field_960_e)
                        {
                            world.NeighborLightPropagationChanged(field_957_a, k1 + 1, k2, l1, j4);
                        }
                        if (k2 + 1 >= field_959_f)
                        {
                            world.NeighborLightPropagationChanged(field_957_a, k1, k2 + 1, l1, j4);
                        }
                        if (l1 + 1 >= field_958_g)
                        {
                            world.NeighborLightPropagationChanged(field_957_a, k1, k2, l1 + 1, j4);
                        }
                    }
                }
            }
        }