public static WorldEditBlock CreateNew(Block pBlock, Vector3i pPosition, Vector3i?pSourcePosition)
        {
            WorldEditBlock web = new WorldEditBlock();

            web.Position = pPosition;
            web.Type     = pBlock.GetType();

            var constuctor = web.Type.GetConstructor(Type.EmptyTypes);

            if (constuctor == null)
            {
                if (pBlock is PlantBlock)
                {
                    web.Data = EcoSerializer.Serialize(PlantBlock.GetPlant(pPosition)).ToArray();
                }

                if (pBlock is WorldObjectBlock)
                {
                    WorldObjectBlock wob = (WorldObjectBlock)pBlock;

                    if (wob.WorldObjectHandle.Object.Position3i == pSourcePosition)
                    {
                        web.Data = EcoSerializer.Serialize(wob.WorldObjectHandle.Object).ToArray();
                    }
                }
            }

            return(web);
        }
        public bool SaveClipboard(string pFileName)
        {
            if (mClipboard == null || mClipboard.Count <= 0)
            {
                return(false);
            }

            var stream = EcoSerializer.Serialize <List <WorldEditBlock> >(mClipboard.ToList());

            Directory.CreateDirectory(mSchematicPath);
            pFileName = new string(pFileName.Where(x => !Path.GetInvalidFileNameChars().Contains(x)).ToArray());

            File.WriteAllBytes(Path.Combine(mSchematicPath, pFileName + ".ecoschematic"), stream.ToArray());

            return(true);
        }