需要做的事情
在Arclight代码库中直接编译CraftBukkit(简称compile obc)
想要通过让编译快速失败(Fail-fast),发现一些在Arclight中缺失的Patch。
Arclight自1.20.4以来,有一段时间未全量同步Bukkit的Patch了。因此,在`net.minecraft`里有可能存在没有被发现的缺失的字段和方法。
参见:https://github.com/IzzelAliz/Arclight/issues/1660
为了实现这一点,我们希望通过Bukkit对NMS的Patch,筛选出由Bukkit Patch而来的方法和字段,并把带有这些方法和字段定义的nms jar插入到编译CraftBukkit时的compileClasspath中。
实现Paper API(简称paper suppert)
目前Arclight只支持Spigot API,在Paper正式Hard fork之后,支持Paper API的需求逐渐迫切起来。
参见:https://github.com/IzzelAliz/Arclight/issues/47
现在的`:relocateCraftBukkit`构建步骤使用的是SpecialSources,需要切换到TinyRemapper
为了解决https://github.com/IzzelAliz/Arclight/issues/2010导致的Arch loom remap错误。
同时为未来Minecraft不再混淆时彻底抛弃mixin refmap做准备。
让Arclight可以重新以模组形式运行
包括两个方面:
让项目可以直接在开发环境中`:runServer`
这样做的优点有:可以直接在IDEA里打断点启动,而不再需要远程调试;对于Fabric,在IDEA里启动可以让服务端用Mojmap名运行(目前只能以intermediary名运行)。
把Arclight jar放入mods文件夹就可以使用
参见:https://github.com/IzzelAliz/Arclight/issues/2009
Arclight曾经是可以以模组形式运行的。
从bukkit仓库里的nms patch自动化生成接口注入表和字段注入表
qyl在尝试
接口注入表是用来注入方法的,使用arch-loom的格式(即除了需要生成`architectury.common.json`以外,还需要生成对应的接口源代码文件)。
字段注入表需要自定义格式,由于字段比较简单,希望只通过一个json文件,标记字段所在的类、字段名、字段类型。所有对MC类型的引用,均应使用Mojmap。
Bukkit还会patch一些构造器,所以我们还需要一个构造器注入表。
从spigot-server的pom文件,自动挑拣出对应的依赖“?:{
现在的bootstrap项目是手动复制来自spigot-server的依赖版本,这很容易在版本升级时遗漏。
更多的调试输出
需要一些system property开关,用来增加在debug.log里调试输出的信息。
所有向Bukkit抛出的事件
包括参数
按类型过滤?
Arclight Remapper所有remap的名称
原名称→新名称
需要一些过滤器?
bukkit.yml的allow-end选项的功能还未实现
arclight目前还没实现禁用末地的选项,参考https://github.com/IzzelAliz/Arclight/issues/2064
大饼
这部分仅作记录,有没有还不一定呢(
是否需要继续支持Forge平台?
参见:https://github.com/IzzelAliz/Arclight/issues/2011
需要继续收集社区的反馈。
用于模组/插件实现Arclight服务端兼容的Arclight API
例如目前假设只有ServerLevel会触发Bukkit事件,应该允许模组作者通过某种方式要求在模组中的世界触发Bukkit事件——或许是Jar-in-jar带上一个Arclight API,在模组里的类实现一个`ILevelBridge`之类的。参见:Arclight使用的假设
是否把上游切换到Paper
这意味着使用Paper的CraftBukkit,Bukkit API的行为变为以Paper为基准。