Repository navigation
fix: stop planes exploding on the ground near blocks - #84
Conversation
The wall check exploded any winged or balloon vehicle with engine speed 0.3+ when a solid block sat within half a block of its hitbox, on the ground too. Rounding up also reached one more block on the east, south and upper sides. A Monoplane taxiing past a chest on its own deck blew up on Main (2026-10-27). - On the ground the vehicle no longer explodes; its hitbox's block collision halts it. - In flight, only a block's real collision shape inside the contact zone counts, from half a block above the hitbox floor to its top; touching the edge does not. - The check never loads a chunk. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dev showed a Monoplane held at full throttle against a chest lifting straight up after two seconds, because lift follows the throttle, not ground speed. In the air with the chest inside its contact zone it then crashed. While the wall check finds it on the ground against a block, it now gets no lift. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Contact-zone collision lookup src/main/java/net/tfminecraft/vehicleframework/vehicles/controller/LiftController.java |
The controller defines a contact zone and checks loaded, non-passable blocks for overlapping collision boxes. |
State-based collision response and lift src/main/java/net/tfminecraft/vehicleframework/vehicles/controller/LiftController.java, src/test/java/net/tfminecraft/vehicleframework/vehicles/controller/LiftControllerHitWallTest.java, src/test/java/net/tfminecraft/vehicleframework/vehicles/controller/VehicleMovementControllerCoverageTest.java |
A blocked ground vehicle receives no wing lift. Other eligible vehicles are destroyed on contact. Tests cover these outcomes, collision-zone boundaries, collision shapes, passable blocks and unloaded chunks. |
Priority:
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Bug fix
Sequence Diagram(s)
sequenceDiagram
participant LiftController
participant World
participant Vehicle
LiftController->>World: Check chunk state and block collision boxes
World-->>LiftController: Return collision boxes
alt Vehicle is in GROUND state
LiftController->>LiftController: Mark groundBlocked and suppress wing lift
else Other eligible vehicle
LiftController->>Vehicle: Destroy with EXPLODE
end
Suggested reviewers: ryanbarlow97
Merge Risk: 
Minimal · up to cd8f8
-
No identified issue currently blocks merging the ground-collision change; complete the normal checks before merging.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
|
@coderabbitai review |
✅ Action performed
|
Why
On Main (2026-10-27 18:37 UTC) North_Were's Monoplane exploded while taxiing on their own deck, about 3 blocks from a chest. Neither the hull nor the wings touched it.
LiftController.checkHitWallexploded any winged or balloon vehicle with engine speed 0.3+ when:Math.ceil);What changes
Flight behaviour, lift, landing and the CRASH/EXPLODE death types are otherwise unchanged.
Tested
mvn verify: 1,785 tests, 0 failures. 15 new tests and 1 updated one cover the ground halt, no lift-off while blocked, flying hits, the zone edges, real block shapes and unloaded chunks.LiftControllerhas full line coverage. Locally the coverage gate still fails only on the Windows-skipped permission tests (VehicleRepository,TrackStore, three template loaders), the same as onmain.EXPLODE)CRASH)CRASH)Dev held 20.0 TPS throughout, with no "Can't keep up" and no VehicleFramework errors in the log.
Not tested: backing out after being stopped, balloons, and other planes (same check, other hitboxes).
🤖 Generated with Claude Code