public static void WriteTo(Sided <Equivalencies> equivs, string file) { var root = new YamlMappingNode(); var equiv_node = new YamlMappingNode(); var(eclient, eserver, ejoined) = Split(equivs); var esides = new[] { ("client", eclient), ("server", eserver), ("joined", ejoined) };
private Sided <Mappings> ParseTsrgs(string version) { var sided = new Sided <Mappings>(); using var client_file = File.OpenText(Path.Combine(Folder, version, "client.tsrg")); using var server_file = File.OpenText(Path.Combine(Folder, version, "server.tsrg")); MappingsIO.ParseTsrg(sided.Client, client_file); MappingsIO.ParseTsrg(sided.Server, server_file); return(sided); }
public Sided <Mappings> CreateMappings(string version) { if (!Directory.Exists(Path.Combine(Folder, version))) { return(null); } var final = new Sided <Mappings>(); var local = ParseTsrgs(version); var sides = new ( Func <Sided <Mappings>, Mappings> map, Func <Sided <FlatMap>, FlatMap> flat, Equivalencies eq, Func <VersionedRenames, Func <string, string, Equivalencies, string> > class_getter, Func <VersionedRenames, Func <string, string, Equivalencies, string> > method_getter, Func <VersionedRenames, Func <string, string, Equivalencies, string> > field_getter )[]
public static Sided <Equivalencies> Parse(YamlMappingNode node) { var eq = new Sided <Equivalencies>(); foreach (var side in new[] { "client", "server", "joined" }) { var classes = node.Go("equivalencies", side, "classes").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new(); var fields = node.Go("equivalencies", side, "fields").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new(); var methods = node.Go("equivalencies", side, "methods").NullableParse(x => ParseEquivalencies((YamlSequenceNode)x)) ?? new(); if (side == "client" || side == "joined") { foreach (var item in classes) { eq.Client.AddClasses(item); } foreach (var item in fields) { eq.Client.AddFields(item); } foreach (var item in methods) { eq.Client.AddMethods(item); } } if (side == "server" || side == "joined") { foreach (var item in classes) { eq.Server.AddClasses(item); } foreach (var item in fields) { eq.Server.AddFields(item); } foreach (var item in methods) { eq.Server.AddMethods(item); } } } return(eq); }
public RetroMCP(string folder, string matched_version) { Folder = folder; var mcp = ParseTsrgs(matched_version); MatchedMCP = new(mcp.Client.Reversed(), mcp.Server.Reversed()); MatchedMojang = new(); using var client_file = File.OpenText(Path.Combine(Folder, "matched_client.txt")); using var server_file = File.OpenText(Path.Combine(Folder, "matched_server.txt")); MappingsIO.ParseProguard(MatchedMojang.Client, client_file); MappingsIO.ParseProguard(MatchedMojang.Server, server_file); FoundRenames = new((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "mappings_found.yaml"))); CustomRenames = new((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "mappings_custom.yaml"))); var found_equivs = Equivalencies.Parse((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "equivalencies_custom.yaml"))); var custom_equivs = Equivalencies.Parse((YamlMappingNode)YamlHelper.ParseFile(Path.Combine(folder, "equivalencies_custom.yaml"))); var client_equivs = new Equivalencies(found_equivs.Client, custom_equivs.Client); var server_equivs = new Equivalencies(found_equivs.Server, custom_equivs.Server); MergedEquivalencies = new(client_equivs, server_equivs); }