コード例 #1
0
        public List <Point> GetPoints()
        {
            var jeBlocknames = BlockNameLoopup.BlockNames();
            var beBlocknames = BlockNameLoopup.BlockNamesBE();
            var blocknames   = BlockNameLoopup.Lookup();
            var output       = new List <Point>();

            for (var x = 0; x < Width; x++)
            {
                for (var y = 0; y < Height; y++)
                {
                    for (var z = 0; z < Length; z++)
                    {
                        var index       = x + (y * Length + z) * Width;
                        var blockID     = Blocks[index]; //& 0xFF;
                        var meta        = Data[index] & 0xFF;
                        var blockLookup = BlockLookup(blocknames, beBlocknames, blockID);
                        //var blockName = jeBlocknames.Length>blockID? jeBlocknames[blockID]:"stone";
                        output.Add(new Point
                        {
                            BlockName = blockLookup.Name,
                            BlockId   = blockID,
                            Data      = blockLookup.BeData > 0 ? blockLookup.BeData : meta,
                            X         = x,
                            Y         = y,
                            Z         = z,
                            SortOrder = blockLookup.SortOrder
                        });
                    }
                }
            }

            return(output);
        }
コード例 #2
0
        public List <Point> GetPoints()
        {
            var jeBlocknames = BlockNameLoopup.BlockNames();
            var beBlocknames = BlockNameLoopup.BlockNamesBE();
            var blocknames   = BlockNameLoopup.Lookup();
            var output       = new List <Point>();

            //foreach (var x1 in Blocks.GroupBy(a => a & 0xFF).Select(a => new {BlockId = a.Key, Count = a.Count()})
            //    .OrderByDescending(a => a.Count))
            //    Console.WriteLine($"{x1.BlockId} {x1.Count}");

            for (var x = 0; x < Width; x++)
            {
                for (var y = 0; y < Height; y++)
                {
                    for (var z = 0; z < Length; z++)
                    {
                        var index     = x + (y * Length + z) * Width;
                        var blockID   = Blocks[index];//& 0xFF;
                        var meta      = Data[index] & 0xFF;
                        var blockName = blocknames.Where(a => a.Id == blockID).DefaultIfEmpty(new BlockLookup()
                        {
                            Name = "air"
                        }).FirstOrDefault();
                        //var blockName = jeBlocknames.Length>blockID? jeBlocknames[blockID]:"stone";
                        output.Add(new Point
                        {
                            BlockName = blockName.Name,
                            BlockId   = blockID,
                            Data      = blockName.BeData > 0? blockName.BeData:  meta,
                            X         = x,
                            Y         = y,
                            Z         = z
                        });
                    }
                }
            }

            return(output);
        }