Arclight使用的假设

构建脚本

通过比较Spigot CI返回的Json来确认是否缓存是否有效

从Spigot CI获取版本信息,支持使用mc版本或者spigot构建号:`https://hub.spigotmc.org/versions/<rev>.json`,目前使用1.21.1版本的最新构建号`4344`。

此返回值存储于`.gradle/arclight/spigot_version.json`,只有其中的内容和最新获取的json内容完全相同时,才会认为缓存有效而无需重新构建Spigot。


世界相关

所有LevelAccesor中,只有ServerLevel会触发Bukkit事件

模组有可能新建自己的逻辑世界,如果它不继承自ServerLevel,那就不应该触发Bukkit事件。

这种逻辑世界通常是为了实现某些需要有一个世界,但不能在当前世界进行的功能。例如Create中,把方块组合成可以移动的机器实体的功能,要把原有的方块转移到逻辑世界中。


除了已知的下界、末地世界以外,其他世界的World.Environment都是`NORMAL`

Bukkit曾使用World.Environment标记世界的环境(干燥、昼夜交替、天空颜色等),它是一个枚举,有`NORMAL`、`NETHER`、`THE_END`和`CUSTOM`四个值。现在,在MC中此功能被数据驱动的LevelStem(Dimension)取代了,且CraftServer不再加载`CUSTOM`(会抛出异常)。


模组-插件协作

对于插件来说,模组就是MC本体的一部分

插件加载时,模组必定已经加载完成,模组的加载过程对插件是屏蔽的;插件可以访问到所有由模组定义的类,就像访问原版类那样。