aeronautics_display_link_fix-1.3-1.21.1.jar
Curse Maven Snippet
What's new
v1.3 — 全面 TargetOffset 保护
修复
- 修复所有场景下 TargetOffset 损坏问题:此前的修复仅针对 Case 3(DL 和目标告示牌在同一结构上),但现在发现即使是 Case 1/2(DL 在结构中但告示牌不在),DisplayLink 的 TargetOffset 也会在 Sable 物理化/反物理化过程中被损坏。
- 根本原因:物理化后 DL 的
target()方法使用物理化空间坐标重新计算 offset=告示牌物理化位置-DL物理化位置,产生巨大异常值并持久化
- 根本原因:物理化后 DL 的
- 移除 Case 3 检测:不再需要 HashSet 预处理器或复杂的 Case 3 判定逻辑。所有被物理化的 DisplayLink 都需要保护。
更改
- 简化架构:仅用一个 ThreadLocal
DL_LIST存储 (原始坐标, 新坐标, 修正后 offset) 三元组 - Phase 1 在
loadWithComponents之前保存所有 DisplayLink 的原始 TargetOffset 及旋转变换 - Phase 2 在 TAIL 无条件恢复所有 DisplayLink 的正确 TargetOffset
BLOCKSET_CACHE、LIST_NEWPOS、LIST_OFFSETThreadLocal 全部移除
性能
- O(1) 无:无需遍历方块列表或构造 HashSet,只处理 DisplayLink 本身
- 对任意规模和任意数量 DisplayLink 的结构保持恒定开销
This mod has no additional files

