Skip to content

Fix Create crushing wheel entity transforms in sub-levels - #1416

Open
supermzc123 wants to merge 1 commit into
ryanhcode:mainfrom
supermzc123:fix/create-crushing-wheel-transforms
Open

Fix Create crushing wheel entity transforms in sub-levels#1416
supermzc123 wants to merge 1 commit into
ryanhcode:mainfrom
supermzc123:fix/create-crushing-wheel-transforms

Conversation

@supermzc123

@supermzc123 supermzc123 commented Jul 30, 2026

Copy link
Copy Markdown

Problem

Create's crushing wheel controller reads entity positions through Sable's transformed accessors, but writes local/storage coordinates directly through Entity#setPos. It also applies local delta movement without rotating it into world space.

For players, the invalid position can cause the next collision query to scan an enormous area and stall the server. Items can also be deflected instead of being processed.

This addresses the coordinate mismatch described in #593 at the crushing-wheel integration point instead of clamping the resulting movement globally, as attempted in #1042.

Changes

  • Transform the crushing-wheel Entity#setDeltaMovement call with logicalPose().transformNormal.
  • Transform both crushing-wheel Entity#setPos calls with logicalPose().transformPosition.
  • Apply the transformations only when the controller is inside a Sable sub-level.
  • Add finite-value and eight-block position safety guards.
  • Require the expected invocation counts so incompatible Create updates fail visibly.

Testing

Runtime-tested with Create 6.0.10 and Sable 2.0.3:

  • Single items and full stacks
  • Belt and chute input
  • Player death and respawn
  • Level and tilted ships
  • No TPS freeze, watchdog failure, or movement/guard warnings
  • /tick query: approximately 9 ms before testing and 20 ms afterward

Known visual limitation: crushing particles can render offset from the wheel center.

git diff --check passes.

Fixes #593

@CLAassistant

CLAassistant commented Jul 30, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Being Processed by Crushing Wheels Freezes the Server

2 participants