Protocol-level navigation for autonomous flight in Minecraft
EAFE (Autonomous Elytra Flight Engine) is a protocol-level navigation architecture for long-range autonomous elytra flight in Minecraft. It handles adaptive obstacle avoidance, threat evasion, and precision landing using vanilla physics compliance.
| Version | Status | Key Additions |
|---|---|---|
| v7.0 | Reference | FSM, kinematics, anti-cheat, Nether hazards |
| v7.1 | Current | Decompiled vanilla physics, axis-decoupled drag, 150ms jump apex, chunk hysteresis |
stateDiagram-v2
[*] --> IDLE
IDLE --> AUDIT : Launch command
AUDIT --> PRE_FLIGHT : Audit pass
AUDIT --> GROUND_PATHFIND : Obstruction detected
GROUND_PATHFIND --> TAKEOFF : Arrived at open node
PRE_FLIGHT --> TAKEOFF : Pitch set, item staged
TAKEOFF --> CRUISE : Airborne (v_y > 0.1)
CRUISE --> EVASION : Player within 128m
CRUISE --> STALL_ORBIT : TPS < 10 or chunk unloaded
CRUISE --> DESCENT : Within 150m of target
STALL_ORBIT --> CRUISE : TPS >= 16 and chunk loaded
DESCENT --> LANDING : Y_rel <= 20m
LANDING --> [*]
EAFE models Minecraft's discrete per-tick velocity update (1 tick = 50ms).
Step 1: Pitch Energy Exchange
Nose-UP (
Nose-DOWN (
Step 2: Gravity & Lift
Step 3: Axis-Decoupled Drag
Key difference: v7 used unified 0.99 drag. v7.1 correctly splits horizontal (0.99) and vertical (0.98), matching vanilla decompiled code.
| Aspect | v7.0 | v7.1 |
|---|---|---|
| Drag | Unified |
Axis-decoupled: |
| Lift | Passive wing: |
|
| Pitch exchange | Single formula | Decomposed nose-up (0.04) / nose-down (0.1) |
| Update order | Drag → gravity → lift | Pitch exchange → gravity+impulse+lift → drag |
| Nether hazard | Weighted sum |
Percentage ratio |
Look-vector changes use cubic Bézier curves with Gaussian noise:
Slew rate limits:
Archimedean spiral scan for safe landing zones:
Surface classifier: SAFE (grass/stone) → MODERATE (ice/slime) → FATAL (lava/void)
| Error | Trigger | Recovery | Fallback |
|---|---|---|---|
| ERR_WALL_COLLISION | v_h < 0.1 while θ ≤ 0 | Pitch -0.70 rad + rocket + 180° yaw | GROUND_PATHFIND |
| ERR_ELYTRA_BREAK | Durability ≤ 10 | Equip totem, pitch +0.5 rad glide | LANDING (Dead-Stick) |
| ERR_CRITICAL_HEALTH | HP ≤ 6.0 | Totem swap, stratospheric boost | EVASION |
| ERR_CHUNK_FREEZE | Chunk unloaded | Pitch +0.05 rad, 30m orbit | STALL_ORBIT |
| ERR_RUBBERBAND_LOOP | 3 teleports in 10 ticks | Zero velocity, halve target speed | STALL_ORBIT |
| ERR_NO_FIREWORKS | Rocket count == 0 | Archimedean scan, dead-stick glide | DESCENT → LANDING |
| ERR_NETHER_BEDROCK | Y ≥ 118 or Y ≤ 35 | Pitch correction +0.3/-0.3 rad | Rocket thrust away |
| ERR_PORTAL_BLOCKAGE | No dimension shift in 60 ticks | Step back 3m, re-align, re-enter | GROUND_PATHFIND |