private Traffic GetTerrain_CMD(string args) { ResponseType responseType = ResponseType.Failed; int seed = 0; int width = 0; int height = 0; IModule module = null; List <GradientPresets.GradientKeyData> gradient = new List <GradientPresets.GradientKeyData>(); MapData mdata; MessageTypes type = MessageTypes.None; string[] TextureFiles = new string[0]; string message = string.Empty; if (_server.WorldLoaded) { if (_server.Users.SessionKeyExists(args)) { string user = _server.Users.GetConnectedUser(args).Name; TerrainBuilder builder = _server.Worlds.CurrentWorld.Terrain; responseType = ResponseType.Successfull; seed = builder.Seed; width = builder.Width; height = builder.Height; module = builder.NoiseModule; gradient = new List <GradientPresets.GradientKeyData>(builder.GradientPreset); TextureFiles = new List <string>(GradientCreator.TextureFiles.Keys).ToArray(); message = "success"; // make sure images are cleared. They will be sent seperatly. for (int i = 0; i < gradient.Count; i++) { gradient[i].images.Clear(); } mdata = new MapData(responseType, seed, width, height, gradient, TextureFiles, message); string sendStr = JsonConvert.SerializeObject(mdata); string moduleStr = JsonConvert.SerializeObject(module, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }); _server.SockServ.Send(user, "setterrainmodule", moduleStr); _server.SockServ.Send(user, "setterraindata", sendStr); System.Threading.ManualResetEvent reset = new System.Threading.ManualResetEvent(false); foreach (string imageName in GradientCreator.TextureFiles.Keys) { //reset.WaitOne(1); Color[] image = ColorConvert.LibColList(GradientCreator.TextureFiles[imageName]); ImageFileData imageStruct = new ImageFileData(imageName, image); string imageStr = JsonConvert.SerializeObject(imageStruct); _server.SockServ.Send(user, "setimage", imageStr); //Logger.Log("sent image: {0}", imageName); } message = "success"; type = MessageTypes.Success; return(new Traffic("message", JsonConvert.SerializeObject(new Message("_server_", type, message)))); } else { message = "Invalid session key"; type = MessageTypes.Not_Logged_in; return(new Traffic("message", JsonConvert.SerializeObject(new Message("_server_", type, message)))); } } message = "World not loaded"; type = MessageTypes.World_Not_Loaded; return(new Traffic("message", JsonConvert.SerializeObject(new Message("_server_", type, message)))); }