Repository navigation
flyEnvelope: count hitbox edge support as ground (#35) - #41
Merged
ThoriaDevelopment merged 1 commit intoOct 12, 2026
Merged
ThoriaDevelopment merged 1 commit into
ThoriaDevelopment merged 1 commit into
Conversation
groundedProxy samples only the column under the hitbox center, so a player sneaking at a ledge (void edge, tower top) with the center past the edge reads as airborne while standing. A level airborne tick lands in the FlyB friction band every tick (dy=0, prevDeltaY=0 => dy - expectedY ~= 0.078), which alerted within a few ticks. FlyEnvelopeCheck's grounded branch now also accepts a level tick (|dy| < 0.01) with a solid block within 0.05 under any column of the 0.6-wide footprint (WorldQueries.isSolidBelowFootprint, Footprint geometry). groundedProxy itself is unchanged, so other checks are not affected. - new legit scenario legit-sneak-edge (pre-fix: 57 Fly(FlyB) flags, peakVL 19.00; post-fix: quiet) - FootprintTest unit tests for the column geometry - checks.json fpGuards + automated-live-testing.md coverage rows AI assistance: Claude Code (Claude Opus 5.5) wrote the change and ran the verification; needs human review.
ThoriaDevelopment
force-pushed
the
fix/flyb-sneak-edge-footing
branch
from
October 12, 2026 18:32
622c92b to
51156d5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #35.
groundedProxyonly samples the block column under the hitbox centre. A player sneaking at a ledge (void edge, tower top) with the centre past the edge therefore reads as airborne while standing still. A level airborne tick falls in theFly(FlyB)friction band every tick (dy=0, prevDeltaY=0 ⇒ dy − expectedY ≈ 0.078), so FlyB alerted within a few ticks.Changes
FlyEnvelopeCheck: the grounded branch now also accepts a level tick (|dy| < 0.01) with a solid block within 0.05 under any column of the 0.6-wide hitbox footprint (isEdgeSupported). It only runs when the proxy already said airborne and the player is level.groundedProxyitself is unchanged, so other checks aren't affected.WorldQueries.isSolidBelowFootprintand the pureFootprintgeometry helper (1, 2 or 4 distinct columns; centre first; a face that only touches a neighbouring column doesn't count; negative coordinates floor correctly).legit-sneak-edge(sneaking on a 3-tall tower top with the centre 0.2 past the edge, 40 motionless ticks, then creeping along it). It assertsexpectQuietplusFly(FlyB)/Fly(Blink)flag counts of 0. Before the fix: 57Fly(FlyB)flags, peakVL 19.00 (an alert). After the fix: quiet.FootprintTestunit tests for the column geometry.scripts/checks.jsonfpGuards entry anddocs/automated-live-testing.mdcoverage rows (FP-direction regressions 9 → 10).Affected areas
Verification
Commands run (branch head
622c92b):Results:
build/selftest-manifest.jsonbefore the first live run)BUILD SUCCESSFUL, 54 tests, 0 failures, 0 errors (includes the newFootprintTest)BUILD SUCCESSFULLive client verification
runClientGameTest, andpipeline-smokepassed.legit-sneak-edge(new),legit-fly-ramp,cheat-fly-hover-meteor,cheat-fly-ascend-liquidbounce,cheat-fly-strafehop-fusion,cheat-fly-antikick-itami,cheat-elytra-fly-liquidbounce--check fly7/7 passed,--check sneak-edge2/2 passed, legit false positives: none, cheat bypasses: none. In the full three-pass run, all 23 legit scenarios (includinglegit-sneak-edge) and all 10 replay scenarios passed (legit false positives: none). The 12 cheat-pass bypasses in that run are all among the 15 thatmainitself fails on this machine (see the baseline note below).runClientsession at a real void edge on a server.Safety and privacy review
isEdgeSupportedreturns false, i.e. no exemption, on any error.)Documentation and migration
scripts/checks.jsonfpGuards.)AI assistance
Known limitations and follow-up work
groundedProxy: a flyer holding Δy ≈ 0 directly above any block the hitbox overlaps reads as grounded. The footprint widens that area from the centre column to the full 0.6 box.main:SelfTestEntrypoint.ktconflicts with checks: exempt creative/spectator flight from movement checks only #37 (creative/spectator scenarios). This branch needs a rebase before merge. The coverage counts inautomated-live-testing.mdshould be rechecked after the rebase.