开发构建与版本兼容
构建方式、NMS 版本矩阵、验证和发布信息。
项目基线
1.0.73 验证记录(2026-09-13)
- Java 21 / Paper 1.21.1 API 编译,114 项测试通过;覆盖龙卷风几何、路径、卷吸上限、潜行与配置迁移。
- Folia 26.2 build.5 隔离服加载新版与 19 项服务探针通过。探针使用代理玩家,包含真实云粒子 API、可取消风力事件、屋顶/个人晴天、范围外避险、免疫和状态清理;不等于真人移动、反作弊及客户端视觉验收。
- Jar SHA-256:
1CF96969DDDFE8822954DE9D0FB8E73F65C4D86CBC2BC3B7BC574C0B92E32243。
1.0.72 验证记录(2026-09-13)
Paper 1.21.1 API / Java 21 构建,105 项 JUnit 测试通过;成品包含 186 个自身类,无打包外部依赖。
Folia 26.2 build.5 隔离服加载、
/seasons reload与正常关闭通过;最终成品在原 F 盘 1.0.60 配置副本上再次通过 9 项代理玩家服务探针。探针验证首次不伤害、伤害调用、燃烧事件取消、点燃时长、非致死保底、不点燃、致死调用和灾害预警;代理玩家不是实际在线角色,不能代替真人血量、抗性、死亡及客户端表现验收。
1.0.60 配置副本中 1692 项原值保持,32 项新节点补齐;21 项变化来自既有迁移器:旧 NMS 节点转为 PacketEvents 节点,以及未自定义的旧流星雨默认数值升级。
SHA-256:
879F7A9F4D20793177A6FE6C7B8539BDBC8024C9F84099D66F0326999AACEF8E。本轮未重新启动 Paper 1.21.1 实服;最低版本为编译与测试基线,不冒充本轮真人兼容验证。
Maven 项目;
Java release 21;
Paper API 最低编译基线 1.21.1;
PacketEvents 2.13.0 由
lib/本地提供;PlaceholderAPI 2.11.6 为
provided;JUnit Jupiter 5.10.3 用于测试。
标准构建
PowerShell:
$env:JAVA_HOME = 'C:\Program Files\Java\jdk-21'
mvn clean package
默认产物:
target/LISeasons-1.0.73.jar
项目另有 obfuscate Maven profile。对外 API、主类、PAPI 和集成入口有 ProGuard 保留规则;混淆构建发布前仍需真实服务器加载验证。
依赖打包规则
成品 Jar 只包含 LISeasons 自身业务类和资源,不应打入:
- Bukkit/Paper API;
- CraftBukkit 或服务端 NMS 类;
- PacketEvents;
- PlaceholderAPI;
- ProtocolLib。
Residence / CMILib 仅供可选领地插件和隔离集成测试使用,不是 LISeasons 的编译依赖,不打入成品。
PacketEvents 是运行时服务器插件依赖,不是 shaded Java 库;ProtocolLib 已不再使用。
客户端染色结构
1.0.67 不再维护按服务端版本区分的 NMS 群系修改器。SeasonBiomeColorService 负责季节目标、玩家周围区块缓存和共享预算,PacketEventsBiomePacketSender 只负责按玩家客户端协议生成 CHUNK_BIOMES。
新加载区块会先收到服务端正常的 CHUNK_DATA,随后追加当前季节的客户端群系包。换季时,服务按在线玩家共享预算刷新已有视距。整个流程不调用 setBiome、refreshChunk、CraftBukkit 或 NMS,也不会给区块标记待保存。
兼容范围需要同时满足:
- Paper API 能在 1.21.1 基线上编译;
- PacketEvents 2.13.0 或更高兼容版本正常初始化;
- PacketEvents 能识别对应客户端的群系注册表并编码
CHUNK_BIOMES; - Paper 与 Folia 调度路径遵守各自线程边界;
- 客户端进入世界、移动加载新区块和换季时都能看到颜色变化。
因为已经没有服务端内部方法链接,普通补丁版本升级不再需要重写 NMS 适配器;但协议、PacketEvents 或服务端区块发包流程变化后仍需重新做真实启动与客户端观察。
1.0.65 验证记录
- Maven 测试 57 项,0 失败、0 错误、0 跳过;
- 以 Paper 1.21.8 API、Java 21 为最低编译基线通过,class major 65;
- Paper 26.2 build 111 + Java 25 + PacketEvents 2.13.0 完成真实启动、启用和正常关闭;
- 在真实 Paper 启动前删除旧
temperature.yml的action-bar节点后,插件成功补回节点与注释,同时保留自定义display-decimals: 0; - 单群系包测试确认使用
SingletonPalette且不创建 0-bitBitStorage;无真实客户端的控制台冒烟无法代替进服触发CHUNK_BIOMES的最终观感验收; - 成品只有
PacketEventsBiomePacketSender群系包实现,没有 LISeasons NMS 适配器; - 成品未打包 Bukkit/Paper、服务端 NMS、PacketEvents 或 PlaceholderAPI 类;
- 网站
astro check与静态构建通过,0 错误、0 警告、0 提示,共生成 181 页; - 最终
LISeasons-1.0.65.jarSHA-256:7A57C48D716CD13072C2CA49114D1C527940BAA79A3473795C3B13615E87BBE7。
真实启动能验证依赖、类链接、配置迁移和监听器注册;群系颜色本身仍需使用对应版本客户端进入世界验证,不能用无玩家控制台启动代替。
1.0.67 验证记录
- Maven 使用 Paper API 1.21.1 与 Java 21 编译 122 个源码类,59 项测试全部通过;
plugin.yml使用api-version: '1.21'与folia-supported: true;- Paper 1.21.1 build 133 stable + Java 21 + PacketEvents 2.13.0 完成加载、LISeasons 1.0.67 启用与正常停用;
- Folia 1.21.8 build 6 stable + Java 21 + PacketEvents 2.13.0 完成加载、区域调度运行、LISeasons 1.0.67 启用与正常停用;
- PaperMC 官方没有 Folia 1.21.1 构建,故最低 Paper 与最低稳定 Folia 分开验证,不虚构 Folia 1.21.1 结论;
- 未启用季节世界的占位符回归测试确认:彩色季节为
<gray>无季节</gray>、纯名称为无季节、键为none; - 成品共 200 个条目,未打包 Bukkit/Paper、服务端 NMS、PacketEvents 或 PlaceholderAPI 类,Java class major 65;
LISeasons-1.0.67.jarSHA-256:22EB0B668A6211D2AA426898B7EBC1AD0E6263E94B42AE3D02AEEE4C94A2BA65。
控制台加载没有真实玩家,不能替代 TAB/记分板内的最终 PAPI 展示或客户端群系色调观察;这些显示路径仍应在生产前由真实客户端验收。
1.0.68 验证记录
- Maven 使用 Paper API 1.21.1 与 Java 21 完成构建,64 项测试全部通过;
plugin.yml为version: 1.0.68、api-version: '1.21'、folia-supported: true;- Paper 1.21.1 build 133 stable 完成 PacketEvents/LISeasons 加载、
/seasons reload、控制台/seasons info world与正常关闭; - Folia 1.21.11 build 14 完成同样流程,并确认控制台温度查询改由出生点区域线程计算,不再出现
Cannot retrieve chunk asynchronously; - BossBar 进度、流星一次性结算和配置资源新增回归测试;真实玩家看到 BossBar 与实际拾取陨石奖励仍需进服验收;
- 成品未打包 Bukkit/Paper、服务端 NMS、PacketEvents、PlaceholderAPI 或 JUnit 类,Java class major 65;
LISeasons-1.0.68.jarSHA-256:5DD75CFC054D39E6A3BD2A0F78C577A31D5ED32789543EA6C0A1A56E69315F4C。
1.0.69 验证记录
- Paper API 1.21.1 + Java 21 编译,81 项 JUnit 回归测试全部通过;
- Paper 1.21.1 build 133 与 Folia 1.21.11 build 14,分别加载 PacketEvents 2.13.0、Residence 6.0.0.1、CMILib 1.5.8.1;
- 两个隔离测试服分别通过 31 项真实 Bukkit/Residence 检查:领地内外积雪、
iceform拒绝/允许冰雪生成、icemelt拒绝/允许融化、保留受保护雪层下的草块雪态; - 验证上半台阶/双台阶/倒置楼梯成功承雪,下半台阶/普通楼梯/栅栏/默认树叶/冰跳过,并保留原建筑方块数据;
- 额外目标位置在另一片区块,检查区域线程所有权后成功铺雪;
- 自动化测试覆盖事件取消、监听器修改方块/结果、提交前支撑复查、世界高度边界、未加载区块和旧配置保留;
LISeasons-1.0.69.jarSHA-256:6BFE2BE858224052A447FF4894B256CEF0A3DCF6560FE09CF92AD4A93FF14C81。
测试中 Residence 6.0.0.1 搭配 CMILib 1.5.9.7 在 Paper 1.21.1 出现前置自身 v1_22_R1 字段链接错误;换用 1.5.8.1 后上述检查通过。此为验证组合记录,不表示任意 Residence/CMILib 版本可混用。玩家独立天气策略有单测,真实客户端的雨雪观感、资源包/光影和多人长期负载未在本轮验收;Paper 26.x 也未作为本轮 Residence 集成实测核心。
1.0.70 验证记录
- Paper API 1.21.1 + Java 21 编译,85 项 JUnit 测试全部通过;
- 回归测试模拟新版
FLASH -> org.bukkit.Color与旧版FLASH -> Void两种契约,验证流星点火实际把颜色 data 传入玩家粒子调用; - 不支持的方块数据型粒子会回退
END_ROD,不会再终止整颗流星; - Folia 1.21.11 build 14 + Java 21 + PacketEvents 2.13.0 真实加载
LISeasons 1.0.70、重载并正常关闭; - Folia 运行时确认
FLASH.getDataType()为org.bukkit.Color,通过成品 Jar 的解析器发送带颜色闪光,并直接执行成品MeteorVisualRenderer落点粒子,5 项检查全部通过; - 无真实在线玩家,完整的高空飞行观感与奖励拾取仍需客户端验收;Paper 1.21.1 的旧契约由编译基线和回归测试覆盖,本轮未再次启动 Paper 测试服;
LISeasons-1.0.70.jarSHA-256:75CF7B372AF08951AE744FFCF0025E9E08A402E0E37E934A739878B0153E3855。
1.0.71 验证记录
- Paper API 1.21.1 + Java 21 编译,90 项 JUnit 测试全部通过;
- 回归测试覆盖玩家高于世界上限、低于世界下限和普通高度三种秋季树叶采样范围,随机取值始终保持合法;
- Folia 的秋季真实树叶样本按目标区块合并,再交给对应区域调度器处理,并在执行前复查配置、季节和区块状态;
- Folia 1.21.11 build 14 + Java 21 与 Folia 26.2 build 7 beta + Java 25 均完成成品加载、
/seasons reload、世界信息查询和正常关闭,日志中无 LISeasons 任务异常; - 成品 Jar 未打包 Bukkit、Paper、PacketEvents、PlaceholderAPI 或 JUnit 类;
LISeasons-1.0.71.jarSHA-256:3FA19379D5AC841A08634B23AAD67F654D076544865D4B2B06D357073883E822。
两次控制台冒烟均无真实在线玩家;世界高度外的树叶采样由单元测试覆盖,真实玩家处于虚空/异常高空时的长期运行和树叶视觉仍需进服验收。Folia 26.2 启动时出现 Windows OSHI 性能计数器以及 PacketEvents 更新检查 HTTP 403 警告,均来自服务端/前置自身,不是 LISeasons 异常。
发布前验收清单
pom.xml与plugin.yml版本一致;plugin.yml的主类、命令、权限与depend: [packetevents]正确;- 所有默认 YAML 可解析且包含中文注释;
- 旧
biome-spoof.nms.*能迁移到biome-spoof.packet.*,并保留管理员已有值; - Paper 普通调度与 Folia 区域调度都经过验证;
- PAPI 异步读取只使用快照;
- 源码和成品中不存在 LISeasons 的 NMS 群系修改器;
- 成品未打包 Bukkit、Paper、PacketEvents 或 PlaceholderAPI 类;
- 真实服务端完整启动和关闭无异常;
- 实际客户端验证进入、移动、换季和重连时的群系颜色;
- 冬冻春融、GUI、事件、节日和体温实际可用;
- 流星雨用客户端录像验收高度、亮度、随机性、尾迹和落点反馈。
文档发布
wiki/ 目录采用 GitHub Wiki 可直接使用的多页面结构:
Home.md是首页;_Sidebar.md是侧栏;- 其他 Markdown 是专题页。
将这些文件复制到 LiSeasons.wiki.git 仓库根目录即可发布;主仓库中的相对链接也可以直接阅读。