# 需要做的事情

# 在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使用的假设](/doc/9e635bc7-4652-4395-a418-2ad99f6b24cf)


## 是否把上游切换到Paper

这意味着使用Paper的CraftBukkit，Bukkit API的行为变为以Paper为基准。

参见：<https://github.com/IzzelAliz/Arclight/issues/1661>

---

**Documents**

- [Versions and its supporting status](https://wiki.izzel.io/s/arclight-docs/doc/versions-and-its-supporting-status-NCKYxXI3mt)
- [Tutorials](https://wiki.izzel.io/s/arclight-docs/doc/tutorials-LsIkwojL9P)
- [Administration](https://wiki.izzel.io/s/arclight-docs/doc/administration-puh66tln4f)
- [Development](https://wiki.izzel.io/s/arclight-docs/doc/development-kCaAexaIdQ)
- [FAQ](https://wiki.izzel.io/s/arclight-docs/doc/faq-ApcZ25PXVT)
- [Donate](https://wiki.izzel.io/s/arclight-docs/doc/donate-Bj9cf2F5YH)