Beispiel #1
0
        public virtual void func_353_b()
        {
            int i = 127;

            for (int j = 0; j < 16; j++)
            {
                for (int l = 0; l < 16; l++)
                {
                    int j1 = 127;
                    int k1;
                    for (k1 = j << 11 | l << 7; j1 > 0 && Block.lightOpacity[blocks[(k1 + j1) - 1]] == 0; j1--)
                    {
                    }
                    heightMap[l << 4 | j] = (byte)j1;
                    if (j1 < i)
                    {
                        i = j1;
                    }
                    if (worldObj.worldProvider.field_4306_c)
                    {
                        continue;
                    }
                    int l1 = 15;
                    int i2 = 127;
                    do
                    {
                        l1 -= Block.lightOpacity[blocks[k1 + i2]];
                        if (l1 > 0)
                        {
                            skylightMap.setNibble(j, i2, l, l1);
                        }
                    } while (--i2 > 0 && l1 > 0);
                }
            }

            field_686_i = i;
            for (int k = 0; k < 16; k++)
            {
                for (int i1 = 0; i1 < 16; i1++)
                {
                    func_333_c(k, i1);
                }
            }

            isModified = true;
        }
Beispiel #2
0
        public virtual bool setBlockIDWithMetadata(int i, int j, int k, int l, int i1)
        {
            var byte0 = (byte)l;
            int j1    = heightMap[k << 4 | i] & 0xff;
            int k1    = blocks[i << 11 | k << 7 | j] & 0xff;

            if (k1 == l && data.getNibble(i, j, k) == i1)
            {
                return(false);
            }
            int l1 = xPosition * 16 + i;
            int i2 = zPosition * 16 + k;

            blocks[i << 11 | k << 7 | j] = byte0;
            if (k1 != 0 && !worldObj.singleplayerWorld)
            {
                Block.blocksList[k1].onBlockRemoval(worldObj, l1, j, i2);
            }
            data.setNibble(i, j, k, i1);
            if (!worldObj.worldProvider.field_4306_c)
            {
                if (Block.lightOpacity[byte0] != 0)
                {
                    if (j >= j1)
                    {
                        func_339_g(i, j + 1, k);
                    }
                }
                else if (j == j1 - 1)
                {
                    func_339_g(i, j, k);
                }
                worldObj.func_483_a(EnumSkyBlock.Sky, l1, j, i2, l1, j, i2);
            }
            worldObj.func_483_a(EnumSkyBlock.Block, l1, j, i2, l1, j, i2);
            func_333_c(i, k);
            data.setNibble(i, j, k, i1);
            if (l != 0)
            {
                Block.blocksList[l].onBlockAdded(worldObj, l1, j, i2);
            }
            isModified = true;
            return(true);
        }
Beispiel #3
0
 public virtual void setLightValue(EnumSkyBlock enumskyblock, int i, int j, int k, int l)
 {
     isModified = true;
     if (enumskyblock == EnumSkyBlock.Sky)
     {
         skylightMap.setNibble(i, j, k, l);
     }
     else if (enumskyblock == EnumSkyBlock.Block)
     {
         blocklightMap.setNibble(i, j, k, l);
     }
     else
     {
         return;
     }
 }