Aeronautics Display Link Fix

Quick rating

Aeronautics Display Link Fix

No reviews yet

Fixes a bug where Display Link's TargetOffset gets corrupted during physics assembly/disassembly when the display link and its target sign are on the same contraption in Create: Aeronautics.

Bug Fixes
Mod Loaders
NeoForge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Optional
Server Required

About

Project Details

Type
Mod
License
MIT License
Latest Version
aeronautics_display_link_fix-1.3-1.21.1.jar
Authors
CurseForge
Modrinth

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID
Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Aeronautics Display Link Fix [ADLF]

航空学显示链接器修复 [ADLF]

中文 | English


中文

简介

修复 Create: Aeronautics(机械动力航空学)中显示链接器(Display Link)在物理化/反物理化后 TargetOffset 被损坏的问题。覆盖所有场景:无论告示牌在飞行器上、在地面、还是在另一飞行器上。

问题根源

Sable 物理化时通过 saveWithFullMetadata / loadWithComponents 搬运方块实体。 物理化空间中,DisplayLink 的 target() 方法使用物理化空间坐标计算相对偏移:

offset = 告示牌物理化坐标 - DisplayLink物理化坐标
     → 产生巨大异常值(如 -20481038)

这个损坏的偏移被持久化到 NBT 中,反物理化后带回真实世界,导致 DisplayLink 无法正确寻址告示牌。

修复原理

通过 Mixin 注入 Sable 的 SubLevelAssemblyHelper.moveBlocks()

  1. Phase 1loadWithComponents 之前):捕获所有正在移动的 DisplayLink 的原始 TargetOffset, 并预计算正确的旋转结果 correctedOffset = originalOffset.rotate(rot)
  2. Phase 2moveBlocks TAIL):无条件将每个 DisplayLink 的 TargetOffset 恢复为正确值

不再需要 Case 3 检测——任何被物理化的 DisplayLink 都要保护。

特性

  • 全面覆盖:修复所有场景(DL 在飞行器上,告示牌在任意位置)
  • 旋转感知:正确应用 Sable 装配旋转变换
  • 零误判:无 Case 1/2/3 分类,无条件修复
  • 高性能:只处理 DisplayLink 本身,与结构大小无关
  • 可配置日志adlf-common.tomldebug = true 开启详细追踪

版本历史

版本 说明
v1.3 全面保护:移除 Case 3 检测,无条件保护所有 DisplayLink
v1.2.3 大型结构性能优化(O(n²) → O(n))
v1.2 旋转感知偏移修正 + 配置文件
v1.1 初始修复:双层 Case 3 判定

构建

# 前置条件:JDK 21
git clone <repo>
cd Aeronautics-display-link-fix
./gradlew build
# jar 输出:build/libs/aeronautics_display_link_fix-<version>.jar

依赖

  • Minecraft 1.21.1 + NeoForge 21.1.233
  • Create 6.0.10
  • Sable 1.2.2
  • Create: Simulated 1.2.1
  • Create: Aeronautics 1.2.1

注意事项

  • 🧠 本项目由 AI 辅助编写,代码结构和实现细节由 AI 辅助生成。
  • 🔧 由于作者不保证持续维护,后续版本兼容性可能滞后。
  • 🏢 Create / Sable / Aeronautics 官方未来可能会在架构层面修复此 Bug, 届时本 Mod 将不再需要。请关注官方更新日志。

English

Overview

Fixes a bug in Create: Aeronautics where the Display Link's TargetOffset gets corrupted during physics assembly/disassembly. Covers all scenarios: regardless of whether the target sign is on the same contraption, on the ground, or on a different contraption.

Root Cause

During physics assembly, Sable moves block entities via saveWithFullMetadata / loadWithComponents. In the physics sublevel space, the DisplayLink's target() method computes its relative offset using sublevel coordinates:

offset = signSublevelPos - DLSublevelPos
     → huge garbage value (e.g. -20481038)

This corrupted offset gets persisted in NBT and carried back to the real world after disassembly, breaking the DisplayLink's targeting.

How It Works

A Mixin injects into Sable's SubLevelAssemblyHelper.moveBlocks():

  1. Phase 1 (before loadWithComponents): Captures the original TargetOffset of every moving DisplayLink and pre-computes the correct rotated value: correctedOffset = originalOffset.rotate(rot)
  2. Phase 2 (moveBlocks TAIL): Unconditionally restores each DisplayLink's TargetOffset to the correct value

No more Case 3 detection — every DisplayLink being moved needs protection.

Features

  • Universal coverage: Fixes all scenarios (DL on contraption, sign anywhere)
  • Rotation-aware: Correctly applies Sable's assembly rotation transforms
  • Zero false positives: No Case 1/2/3 classification, unconditional fix
  • High performance: Only processes DisplayLinks themselves, O(1) w.r.t. structure size
  • Configurable logging: Toggle debug = true in adlf-common.toml for detailed tracing

Version History

Version Description
v1.3 Universal protection: removed Case 3 detection, protect all DisplayLinks unconditionally
v1.2.3 Large structure performance optimization (O(n²) → O(n))
v1.2 Rotation-aware offset correction + config file
v1.1 Initial fix: two-layer Case 3 detection

Build

# Prerequisites: JDK 21
git clone <repo>
cd Aeronautics-display-link-fix
./gradlew build
# Output: build/libs/aeronautics_display_link_fix-<version>.jar

Dependencies

  • Minecraft 1.21.1 + NeoForge 21.1.233
  • Create 6.0.10
  • Sable 1.2.2
  • Create: Simulated 1.2.1
  • Create: Aeronautics 1.2.1

Notes

  • 🧠 This mod was developed with AI assistance — some of the code structure and implementation details were AI-generated.
  • 🔧 The author does not guarantee ongoing maintenance. Future version compatibility may lag behind.
  • 🏢 Create / Sable / Aeronautics may fix this bug at the architecture level in the future, at which point this mod will no longer be needed. Please check official changelogs.

Aeronautics Display Link Fix [ADLF]

航空学显示链接器修复 [ADLF]

中文 | English


中文

简介

修复 Create: Aeronautics(机械动力航空学)中显示链接器(Display Link)在物理化/反物理化后 TargetOffset 被损坏的问题。覆盖所有场景:无论告示牌在飞行器上、在地面、还是在另一飞行器上。

问题根源

Sable 物理化时通过 saveWithFullMetadata / loadWithComponents 搬运方块实体。 物理化空间中,DisplayLink 的 target() 方法使用物理化空间坐标计算相对偏移:

offset = 告示牌物理化坐标 - DisplayLink物理化坐标
     → 产生巨大异常值(如 -20481038)

这个损坏的偏移被持久化到 NBT 中,反物理化后带回真实世界,导致 DisplayLink 无法正确寻址告示牌。

修复原理

通过 Mixin 注入 Sable 的 SubLevelAssemblyHelper.moveBlocks()

  1. Phase 1loadWithComponents 之前):捕获所有正在移动的 DisplayLink 的原始 TargetOffset, 并预计算正确的旋转结果 correctedOffset = originalOffset.rotate(rot)
  2. Phase 2moveBlocks TAIL):无条件将每个 DisplayLink 的 TargetOffset 恢复为正确值

不再需要 Case 3 检测——任何被物理化的 DisplayLink 都要保护。

特性

  • 全面覆盖:修复所有场景(DL 在飞行器上,告示牌在任意位置)
  • 旋转感知:正确应用 Sable 装配旋转变换
  • 零误判:无 Case 1/2/3 分类,无条件修复
  • 高性能:只处理 DisplayLink 本身,与结构大小无关
  • 可配置日志adlf-common.tomldebug = true 开启详细追踪

版本历史

版本 说明
v1.3 全面保护:移除 Case 3 检测,无条件保护所有 DisplayLink
v1.2.3 大型结构性能优化(O(n²) → O(n))
v1.2 旋转感知偏移修正 + 配置文件
v1.1 初始修复:双层 Case 3 判定

构建

# 前置条件:JDK 21
git clone <repo>
cd Aeronautics-display-link-fix
./gradlew build
# jar 输出:build/libs/aeronautics_display_link_fix-<version>.jar

依赖

  • Minecraft 1.21.1 + NeoForge 21.1.233
  • Create 6.0.10
  • Sable 1.2.2
  • Create: Simulated 1.2.1
  • Create: Aeronautics 1.2.1

注意事项

  • 🧠 本项目由 AI 辅助编写,代码结构和实现细节由 AI 辅助生成。
  • 🔧 由于作者不保证持续维护,后续版本兼容性可能滞后。
  • 🏢 Create / Sable / Aeronautics 官方未来可能会在架构层面修复此 Bug, 届时本 Mod 将不再需要。请关注官方更新日志。

English

Overview

Fixes a bug in Create: Aeronautics where the Display Link's TargetOffset gets corrupted during physics assembly/disassembly. Covers all scenarios: regardless of whether the target sign is on the same contraption, on the ground, or on a different contraption.

Root Cause

During physics assembly, Sable moves block entities via saveWithFullMetadata / loadWithComponents. In the physics sublevel space, the DisplayLink's target() method computes its relative offset using sublevel coordinates:

offset = signSublevelPos - DLSublevelPos
     → huge garbage value (e.g. -20481038)

This corrupted offset gets persisted in NBT and carried back to the real world after disassembly, breaking the DisplayLink's targeting.

How It Works

A Mixin injects into Sable's SubLevelAssemblyHelper.moveBlocks():

  1. Phase 1 (before loadWithComponents): Captures the original TargetOffset of every moving DisplayLink and pre-computes the correct rotated value: correctedOffset = originalOffset.rotate(rot)
  2. Phase 2 (moveBlocks TAIL): Unconditionally restores each DisplayLink's TargetOffset to the correct value

No more Case 3 detection — every DisplayLink being moved needs protection.

Features

  • Universal coverage: Fixes all scenarios (DL on contraption, sign anywhere)
  • Rotation-aware: Correctly applies Sable's assembly rotation transforms
  • Zero false positives: No Case 1/2/3 classification, unconditional fix
  • High performance: Only processes DisplayLinks themselves, O(1) w.r.t. structure size
  • Configurable logging: Toggle debug = true in adlf-common.toml for detailed tracing

Version History

Version Description
v1.3 Universal protection: removed Case 3 detection, protect all DisplayLinks unconditionally
v1.2.3 Large structure performance optimization (O(n²) → O(n))
v1.2 Rotation-aware offset correction + config file
v1.1 Initial fix: two-layer Case 3 detection

Build

# Prerequisites: JDK 21
git clone <repo>
cd Aeronautics-display-link-fix
./gradlew build
# Output: build/libs/aeronautics_display_link_fix-<version>.jar

Dependencies

  • Minecraft 1.21.1 + NeoForge 21.1.233
  • Create 6.0.10
  • Sable 1.2.2
  • Create: Simulated 1.2.1
  • Create: Aeronautics 1.2.1

Notes

  • 🧠 This mod was developed with AI assistance — some of the code structure and implementation details were AI-generated.
  • 🔧 The author does not guarantee ongoing maintenance. Future version compatibility may lag behind.
  • 🏢 Create / Sable / Aeronautics may fix this bug at the architecture level in the future, at which point this mod will no longer be needed. Please check official changelogs.

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~3,000
Total Downloads
CurseForge
~1,000
Modrinth
~1,000
Last Updated
CurseForge
Modrinth
Created
CurseForge
Modrinth
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works