Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions CFPABot/Azusa/Pages/Diff.razor
Original file line number Diff line number Diff line change
Expand Up @@ -740,10 +740,38 @@

try
{
if (slug.StartsWith("modrinth-datapack-"))
{
var realSlug = slug["modrinth-datapack-".Length..];
var addon = await ModrinthManager.GetMod(realSlug);
foreach (var modVersion in versions)
{
var loaders = new[] { "datapack" };
var modEnFile = await ModrinthManager.GetModEnFile(addon, modVersion.ToVersionDirectory().ToMCVersion(), loaders, LangType.EN);
var modCnFile = await ModrinthManager.GetModEnFile(addon, modVersion.ToVersionDirectory().ToMCVersion(), loaders, LangType.CN);

if (modEnFile.files != null && modEnFile.files.FirstOrDefault() is { } f2)
{
var s = $"{modCnFile.downloadFileName} 的英文语言文件";

textsV.Add(s);
langV.Add(LangFileWrapper.FromContent(f2));
}

if (modCnFile.files != null && modCnFile.files.FirstOrDefault() is { } f)
{
var s = $"{modCnFile.downloadFileName} 的中文语言文件";

textsV.Add(s);
langV.Add(LangFileWrapper.FromContent(f));
}
}
return;
}
if (slug.StartsWith("modrinth-"))
{
slug = slug["modrinth-".Length..];
var addon = await ModrinthManager.GetMod(slug);
var realSlug = slug["modrinth-".Length..];
var addon = await ModrinthManager.GetMod(realSlug);
foreach (var modVersion in versions)
{
var modEnFile = await ModrinthManager.GetModEnFile(addon, modVersion.ToVersionDirectory().ToMCVersion(), LangType.EN);
Expand All @@ -767,6 +795,32 @@
}
return;
}
else if (slug.StartsWith("texture-packs-"))
{
var realSlug = slug["texture-packs-".Length..];
var addon = await CurseManager.GetAddon(realSlug);
foreach (var modVersion in versions)
{
var modEnFile = await CurseManager.GetModEnFile(addon, modVersion.ToVersionDirectory().ToMCVersion(), LangType.EN);
var modCnFile = await CurseManager.GetModEnFile(addon, modVersion.ToVersionDirectory().ToMCVersion(), LangType.CN);

if (modEnFile.files != null && modEnFile.files.FirstOrDefault() is { } f2)
{
var s = $"{modCnFile.downloadFileName} 的英文语言文件";

textsV.Add(s);
langV.Add(LangFileWrapper.FromContent(f2));
}

if (modCnFile.files != null && modCnFile.files.FirstOrDefault() is { } f)
{
var s = $"{modCnFile.downloadFileName} 的中文语言文件";

textsV.Add(s);
langV.Add(LangFileWrapper.FromContent(f));
}
}
}
else
{
var addon = await CurseManager.GetAddon(slug);
Expand Down
46 changes: 43 additions & 3 deletions CFPABot/Command/CommandProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,42 @@ public static async Task RunInternal(int prid, string content, int commentID, Gi
MCVersion.v1122 => "en_us.lang",
_ => "en_us.json"
};
if (curseForgeID.StartsWith("modrinth-"))
if (curseForgeID.StartsWith("modrinth-datapack-"))
{
var originalID = curseForgeID;
curseForgeID = curseForgeID["modrinth-datapack-".Length..];
var addon = await ModrinthManager.GetMod(curseForgeID);

var modID = await ModrinthManager.GetModID(addon, version, new[] { "datapack" }, true, false);
var (files, downloadFileName) = await ModrinthManager.GetModEnFile(addon, version, new[] { "datapack" }, LangType.EN);
if (files.Length != 1)
{
sb.AppendLine(Locale.Command_update_en_MultipleLangFiles);
continue;
}

sb.AppendLine(string.Format(Locale.Command_update_en_Success, downloadFileName));
var f = files[0];
using var sr = new MemoryStream(f.ToUTF8Bytes()).CreateStreamReader(Encoding.UTF8);
using var sw = File.Open(
Path.Combine(r.WorkingDirectory,
$"projects/assets/{originalID}/{versionString}/{modID}/lang/{versionFile}"),
FileMode.Create).CreateStreamWriter(new UTF8Encoding(false));

switch (version)
{
case MCVersion.v1122:
new LangFormatter(sr, sw).Format();
break;
default:
new JsonFormatter(sr, sw).Format();
break;
}

r.AddAllFiles();
r.Commit($"Update en_us file for {(originalID.Replace("\"", "\\\""))}", user);
}
else if (curseForgeID.StartsWith("modrinth-"))
{
curseForgeID = curseForgeID["modrinth-".Length..];
var addon = await ModrinthManager.GetMod(curseForgeID);
Expand Down Expand Up @@ -190,7 +225,10 @@ public static async Task RunInternal(int prid, string content, int commentID, Gi
}
else
{
var addon = await CurseManager.GetAddon(curseForgeID);
var cfIDForApi = curseForgeID;
if (curseForgeID.StartsWith("texture-packs-"))
cfIDForApi = curseForgeID["texture-packs-".Length..];
var addon = await CurseManager.GetAddon(cfIDForApi);

var modID = await CurseManager.GetModID(addon, version, true, false);
var (files, downloadFileName) = await CurseManager.GetModEnFile(addon, version, LangType.EN);
Expand Down Expand Up @@ -221,7 +259,7 @@ public static async Task RunInternal(int prid, string content, int commentID, Gi
r.AddAllFiles();
r.Commit($"Update en_us file for {(curseForgeID.Replace("\"", "\\\""))}", user);
}

}

if (line.StartsWith("/add-co-author "))
Expand Down Expand Up @@ -452,6 +490,8 @@ void Format(LangFileType? type = null)
// continue;
// }
var slug = args[0];
if (slug.StartsWith("texture-packs-"))
slug = slug["texture-packs-".Length..];
var curseForgeProjectID = args[1];
var curseForgeProjectIDInt = curseForgeProjectID.ToInt();
ModIDMappingMetadata.Instance.Mapping[slug] = curseForgeProjectIDInt;
Expand Down
3 changes: 2 additions & 1 deletion CFPABot/Controllers/CompareController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ async Task R(string l)
CurseForge.APIClient.Models.Mods.Mod addon = null;
try
{
addon = await CurseManager.GetAddon(modid);
var cfSlug = modid.StartsWith("texture-packs-") ? modid["texture-packs-".Length..] : modid;
addon = await CurseManager.GetAddon(cfSlug);
}
catch (Exception e)
{
Expand Down
18 changes: 16 additions & 2 deletions CFPABot/Controllers/UtilsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@ public IActionResult GitHubToken()
[HttpGet("ModID")]
public async Task<string> ModID([FromQuery]string slug, [FromQuery] string versionString)
{
if (slug.StartsWith("texture-packs-"))
slug = slug["texture-packs-".Length..];
return await CurseManager.GetModID(await CurseManager.GetAddon(slug), versionString.ToMCVersion(), true, false);
}

[HttpGet("GetAllModFilesInRepo")]
public async Task<JsonResult> GetAllModFilesInRepo()
{
var mods = ModList.ModListConfig.Instance.ModLists.Select(x => new {slug=x.modSlug, cfid= ModIDMappingMetadata.Instance.Mapping.GetValueOrDefault(x.modSlug), versions = x.versions.Select(y => y.version.ToVersionDirectory()) })
var mods = ModList.ModListConfig.Instance.ModLists.Select(x => new {slug=x.modSlug, cfid= ModIDMappingMetadata.Instance.Mapping.GetValueOrDefault(x.modSlug.StartsWith("texture-packs-") ? x.modSlug["texture-packs-".Length..] : x.modSlug), versions = x.versions.Select(y => y.version.ToVersionDirectory()) })
.Where(x => x.cfid != 0);

return new JsonResult(mods);
Expand Down Expand Up @@ -93,12 +95,24 @@ public async Task<IActionResult> GetModName(string slug)
{
try
{
if (slug.StartsWith("modrinth-"))
if (slug.StartsWith("modrinth-datapack-"))
{
slug = slug["modrinth-datapack-".Length..];
var mod = await ModrinthManager.GetMod(slug);
return Content(mod.Title);
}
else if (slug.StartsWith("modrinth-"))
{
slug = slug["modrinth-".Length..];
var mod = await ModrinthManager.GetMod(slug);
return Content(mod.Title);
}
else if (slug.StartsWith("texture-packs-"))
{
slug = slug["texture-packs-".Length..];
var mod = await CurseManager.GetAddon(slug);
return Content(mod.Name);
}
else
{
var mod = await CurseManager.GetAddon(slug);
Expand Down
Loading