# 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本体的一部分

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

---

**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)