搜索

开发构建与版本兼容

构建方式、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,也不会给区块标记待保存。

兼容范围需要同时满足:

  1. Paper API 能在 1.21.1 基线上编译;
  2. PacketEvents 2.13.0 或更高兼容版本正常初始化;
  3. PacketEvents 能识别对应客户端的群系注册表并编码 CHUNK_BIOMES;
  4. Paper 与 Folia 调度路径遵守各自线程边界;
  5. 客户端进入世界、移动加载新区块和换季时都能看到颜色变化。

因为已经没有服务端内部方法链接,普通补丁版本升级不再需要重写 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-bit BitStorage;无真实客户端的控制台冒烟无法代替进服触发 CHUNK_BIOMES 的最终观感验收;
  • 成品只有 PacketEventsBiomePacketSender 群系包实现,没有 LISeasons NMS 适配器;
  • 成品未打包 Bukkit/Paper、服务端 NMS、PacketEvents 或 PlaceholderAPI 类;
  • 网站 astro check 与静态构建通过,0 错误、0 警告、0 提示,共生成 181 页;
  • 最终 LISeasons-1.0.65.jar SHA-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.jar SHA-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.jar SHA-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.jar SHA-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.jar SHA-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.jar SHA-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 仓库根目录即可发布;主仓库中的相对链接也可以直接阅读。

返回首页