Example #1
0
        public override void RemoveInvalidBlocks()
        {
            this._blockRefCount = 0;
            this._tickRefCount  = 0;

            for (int x = 0; x < 16; x++)
            {
                for (int y = 0; y < 16; y++)
                {
                    for (int z = 0; z < 16; z++)
                    {
                        var idx = GetCoordinateIndex(x, y, z);

                        var blockstate = this.Get(x, y, z, 0);//.Block;
                        if (blockstate == null)
                        {
                            continue;
                        }

                        var block = blockstate.Block;
                        TransparentBlocks.Set(idx, block.Transparent);
                        SolidBlocks.Set(idx, block.Solid);

                        if (!(block is Air))
                        {
                            ++this._blockRefCount;

                            if (block.RandomTicked)
                            {
                                ++this._tickRefCount;
                            }

                            if (block.BlockMaterial.IsWatterLoggable)
                            {
                                Set(1, x, y, z, BlockFactory.GetBlockState("minecraft:water"));
                            }
                        }

                        if (block.LightValue > 0)
                        {
                            var coords = new BlockCoordinates(x, y, z);

                            if (!LightSources.Contains(coords))
                            {
                                LightSources.Add(coords);
                            }

                            if (GetBlocklight(x, y, z) != block.LightValue)
                            {
                                SetBlocklight(x, y, z, (byte)block.LightValue);
                                SetBlockLightScheduled(x, y, z, true);
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        static BlockFactory()
        {
            for (byte i = 0; i < byte.MaxValue; i++)
            {
                var block = GetBlockById(i);
                if (block != null && block.IsTransparent)
                {
                    TransparentBlocks.Add(block.Id);
                }
                if (block != null && block.LightLevel > 0)
                {
                    LuminousBlocks.Add(block.Id, block.LightLevel);
                }
            }

            NameToId = BuildNameToId();
        }