public static async Task <Response> AssembleMFunctionAndSaveToMinecraft(HowToHandleMismatch howToHandleMismatch, string saveName) { return(await Task.Run(() => { Response response; var mBlocksGluer = new MBlocksGluer(); var mFunctionComposer = new MFunctionComposer(); var saveMFunctionToMinecraft = new SaveMFunctionToMinecraft(); response = mBlocksGluer.Process(_data.CoordsNormalizerOutput, _data.BlockInfosTranslatorOutput); if (response.IsError) { return response; } _data.MBlocksGluerOutput = mBlocksGluer.Output; response = mFunctionComposer.Process(_data.MBlocksGluerOutput, howToHandleMismatch, _data.ExtractBuildingNameOutput); if (response.IsError) { return response; } _data.MFunctionComposerOutput = mFunctionComposer.Output; response = saveMFunctionToMinecraft.Save(_data.MFunctionComposerOutput, _data.LoadUserConfigOutput.MinecraftPath, saveName); if (response.IsError) { return response; } return new Response(false, ""); })); }
public override Response Process(List <MBlock> mBlocks, HowToHandleMismatch howToHandleMismatch, string buildingName) { try { Output.Name = buildingName != "" ? buildingName : throw new Exception(); foreach (var item in mBlocks) { string line; if (item.Info.IsMismatched) { switch (howToHandleMismatch) { case HowToHandleMismatch.Ignore: break; case HowToHandleMismatch.RedWool: line = $"setblock ~{item.Coords.X} ~{item.Coords.Z} ~{item.Coords.Y} minecraft:red_wool replace"; Output.Content.Add(line); break; case HowToHandleMismatch.SignWithText: line = $@"setblock ~{item.Coords.X} ~{item.Coords.Z} ~{item.Coords.Y} minecraft:oak_sign" + @"{Text1:""{\""text\"":\""" + $"{item.Info.Name}" + @"\""}""} replace"; Output.Content.Add(line); break; default: throw new Exception(); } } else { StringBuilder helper = new StringBuilder($@"setblock ~{item.Coords.X} ~{item.Coords.Z} ~{item.Coords.Y} {item.Info.Name}"); if (item.Info.HasAttributes) { helper.Append("["); for (int i = 0; i <= item.Info.Attributes.Count - 2; i++) { helper.Append($"{item.Info.Attributes[i]},"); } helper.Append($"{item.Info.Attributes[item.Info.Attributes.Count - 1]}]"); } helper.Append(" replace"); Output.Content.Add(helper.ToString()); } } } catch (Exception) { return(new Response(true, "Error")); } return(new Response(false, "")); }
public static void SaveUserConfig(HowToHandleMismatch defaultAlternative, string defaultGameSave, bool isMinecraftPathSaved = true) { var saveUserConfig = new SaveUserConfig(); if (isMinecraftPathSaved) { saveUserConfig.Save(new UserConfig(_data.LoadUserConfigOutput.MinecraftPath, defaultGameSave, defaultAlternative)); } else { saveUserConfig.Save(new UserConfig($@"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\.minecraft", defaultGameSave, defaultAlternative)); } }
public static async Task <Response> AssembleMFunctionAndSave(HowToHandleMismatch howToHandleMismatch) { return(await Task.Run(() => { Response response; var mBlocksGluer = new MBlocksGluer(); var mFunctionComposer = new MFunctionComposer(); var saveMFunction = new SaveMFunction(); response = mBlocksGluer.Process(_data.CoordsNormalizerOutput, _data.BlockInfosTranslatorOutput); if (response.IsError) { return response; } _data.MBlocksGluerOutput = mBlocksGluer.Output; response = mFunctionComposer.Process(_data.MBlocksGluerOutput, howToHandleMismatch, _data.ExtractBuildingNameOutput); if (response.IsError) { return response; } _data.MFunctionComposerOutput = mFunctionComposer.Output; response = saveMFunction.Save(_data.MFunctionComposerOutput); if (response.IsError) { return response; } if (response.IsError == false && response.ErrorMsg == "user canceled") { return response; } return new Response(false, ""); })); }
public UserConfig(string minecraftPath, string defaultGameSave, HowToHandleMismatch defaultMismatchOption) { MinecraftPath = minecraftPath ?? throw new ArgumentNullException(nameof(minecraftPath)); DefaultGameSave = defaultGameSave ?? throw new ArgumentNullException(nameof(defaultGameSave)); DefaultMismatchOption = defaultMismatchOption; }