private void OnReceivedSchematic(SchematicJsonPacket message) { bool allow = capi.Settings.Bool["allowSaveFilesFromServer"]; if (!allow) { capi.ShowChatMessage("Server tried to send a schematic file, but it was rejected for safety reasons. To accept, set allowSaveFilesFromServer to true in clientsettings.json, or type '.clientconfigcreate allowSavefilesFromServer bool true' but be aware of potential security implications!"); return; } try { string exportFolderPath = capi.GetOrCreateDataPath("WorldEdit"); string outfilepath = Path.Combine(exportFolderPath, Path.GetFileName(message.Filename)); if (!outfilepath.EndsWith(".json")) { outfilepath += ".json"; } using (TextWriter textWriter = new StreamWriter(outfilepath)) { textWriter.Write(message.JsonCode); textWriter.Close(); } capi.ShowChatMessage(string.Format("Schematic file {0} received and saved", message.Filename)); } catch (IOException e) { capi.ShowChatMessage("Server sent a schematic file, but failed to save it: " + e.Message); } }
private void OnReceivedSchematic(IServerPlayer fromPlayer, SchematicJsonPacket networkMessage) { WorldEditWorkspace workspace = GetOrCreateWorkSpace(fromPlayer); if (workspace.ToolsEnabled && workspace.ToolInstance is ImportTool) { ImportTool impTool = workspace.ToolInstance as ImportTool; string error = null; BlockSchematic schematic = BlockSchematic.LoadFromString(networkMessage.JsonCode, ref error); if (error == null) { this.fromPlayer = fromPlayer; impTool.SetBlockDatas(this, new BlockSchematic[] { schematic }); fromPlayer.SendMessage(GlobalConstants.CurrentChatGroup, Lang.Get("Ok, schematic loaded into clipboard."), EnumChatType.CommandSuccess); } else { fromPlayer.SendMessage(GlobalConstants.CurrentChatGroup, Lang.Get("Error loading schematic: {0}", error), EnumChatType.CommandError); } } }