v1.1.2
Follow-up hotfix to 1.1.1. The Paper 1.21+ NoSuchMethodError regression had two more call sites that were not migrated in 1.1.1.
中文更新日志:
- 漏修补全: 1.1.1 只迁移了
DisplayEntities里的 4 处World.spawn(..., Consumer),但TableDiceAnimationCoordinator里另有 2 处(开局骰子动画的骰子实体和结果文本),它们仍然命中已被移除的org.bukkit.util.Consumer重载。在 Paper 1.21+ 上一执行/mahjong botmatch等会触发开局动画的命令就抛NoSuchMethodError。本版本把这两处改为同样的 spawn-then-configure 模式。 - 防回归门禁: 新增
ArchitectureBoundaryTest.World spawn callers do not use the removed Consumer overload,扫描所有生产 Java/Kotlin 源码,禁止任何World.spawn(Location, Class, lambda)三参数调用形式。下次有人无意把 lambda 写回 spawn 调用就会在 CI 失败,避免再次引入相同 bug。
English Release Notes:
- Missed callsites: 1.1.1 only migrated the four
World.spawn(..., Consumer)calls inDisplayEntities, butTableDiceAnimationCoordinatorhad two more (the opening-roll dice entities and the result text label) that still bound to the removedorg.bukkit.util.Consumeroverload. Any command that triggers the opening dice animation, e.g./mahjong botmatch, threwNoSuchMethodErroron Paper 1.21+. Both sites now use the same spawn-then-configure pattern. - Regression gate: added
ArchitectureBoundaryTest.World spawn callers do not use the removed Consumer overload. It scans every production Java/Kotlin source file and rejects any three-argumentWorld.spawn(Location, Class, lambda)call site, so the same class of bug fails CI before it can ship again.