CFPAOrg / CFPAOrg/Minecraft-Mod-Language-Package

仓库杂项/1.20支持 TODO List

Open
#3,367 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
1.2k
Forks
1.1k
Avg merge
6d 8h
Merged PRs (30d)
4

Description

相比于#2821 而言,这次的时间应该没那么紧张。但是先列出来吧。
其中有一些可能不是马上就需要的,但是也先列出来吧。

目前,1.20工具链已经完成,且理论上已经开始分发了。余下的大多是些远期规划。

  • 确定1.20(或更高版本)的支持计划
    • 目前确定为1.20与1.20-fabric分开支持
  • 建立1.20的预备分支,在工作完成后合并 -- dovisutu:1.20-preps 基于3288的分支,在合并后会手动rebase
文件结构/工作流程
  • 正确书写文件层级,以及Packer的配置文件
  • Github Actions 相关内容
    • 优化结构: - 预备分支中 未测试
      • 采用matrix,减少配置的复制粘贴
      • 用缓存减少构造次数
        • Uploader似乎会生成一大堆dll,光搬个exe跑不了......在解决这个问题前,只有每次上传都构造一次了。
        • Packer倒只有两个文件,没多大问题。
      • pr-packer只打包更改模组(需要Packer支持)
        也可以缩短传artifact的时长
    • 分发相关:Packer、PR-Packer - 预备分支中
    • 校验相关:Labeler、Path-Checker(可能可以合并)
      • 路径校验在Bot和Packer中分别集成了一份,应该可以避免无效资源包流出。
      • 标签工作有部分集成到了CFPABot,但有的仍需修改Action。
  • bot支持
  • i18n模组版本支持
  • (远期)可以考虑重新开始爬取模组,前提是准备高效的办法统揽翻译工作(现在这种手工做法显然不行)
Packer TODO

dovisutu:packer-rework

  • #3669 更好地选取无语言标记的文件
  • 支持传参模组表,仅选取这些模组打包
  • #3527 打包器支持非平铺的语言文件(至少不要崩溃) - 啊c#好像没有Union...
  • 集成在打包器中的路径校验,对无效路径现场抛异常,防止资源包崩溃
    • #3604 应该实现了。但是还没实测
    • 按照预计的打包流程修改,我好像没办法在一堆查询表达式里面塞个异常......
    • 解决办法:强行塞方法调用
  • 打包器部分流程会重复执行,现有代码不够健壮,导致处理非文本文件时会崩溃。
    • 之前以为没什么,但是 #3226 的修复暴露了这个问题。
    • 推测可能是IEnumerable有时会反复遍历,这也是没办法的。
    • #3635 workaround;仍然需要研究重复执行的原因,以免再度事发。
    • 预计解决:直接干掉“不够健壮的部分”,在检索里不产生副作用
  • 检索部分重写:真正地使用Linq
  • 检索逻辑独立成库,以便其他工具链检索语言文件(如cfpaBot、各种统计工具)
分发流程

这里与1.20没有直接关系,但是也是最近要做的。

  • 增量更新
    • 自动向服务器上传差异文件 - Uploader;ETA未知
    • 服务端提供API(?)
  • 按需打包(部分打包)
    • 确认用于判断现有模组的方案:modid,或是其他潜在的方案
      • 如果使用modid,信息区分度是否足以判定需要哪组资源?
    • 确认时序:这种资源包在哪一步打?
      • 个人的意见是直接在第一步(Packer)生成,因为这里有完整的模组标识符->命名空间表
    • 实现部分
      • Packer:需要支持指定模组(见Packer ToDo);模组表为“模组标识符”
      • (未知组件)维护modid->标识符的映射
      • i18nmod:合适地读取modid表
资源包
  • #2721 - #3226 - #3288 :字体修复全面更新
    • 由于1.20去除了对legacy_unicode加载器的支持,这一点是必需的。
    • (可能需要) 修改Packer,以将字符替换做成版本特定
      • 这个就做在3288里面了。
  • 模组收录问题
    • 是否需要推行基于现行packer-policy的适配方案?
      • 优化现有方案
        如:加载过程分解成类似字体描述文件的样子
    • 是否需要与现有的资源包合并机制协同?
  • 对“组合式”的语言文件,引入简化格式(需Packer支持)
    • 目前设想:“模板”段和“参数”段分别存储,打包时自动生成文件;“模板”段内包含格式符,可以填入内容
  • 全面清查cp 1.16 to 1.18
  • #4592
文档相关
  • #3178
    • #2857 - #3618 参考文档更新
合理的TODO列表
  • 确定合适的实现方式(projects?但是Github Mobile看不到)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the unchecked items under Packer TODO, 分发流程, 资源包, and 文档相关, along with the referenced issues such as #3178 and #4592. Read the Packer, Uploader, i18nmod, and GitHub Actions areas before selecting one narrowly defined task; done means that task has an agreed implementation and its related checklist item is completed.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github-actions
Domain
build-system, devops, documentation, localization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.