#4119·mineflayer

My 78 open PRs, grouped

Author: u9gCreated Sep 12, 2026Updated Sep 21, 2026

PRs waiting on a minecraft-data PR

minecraft-data PR mineflayer PR mineflayer PR state
PrismarineJS/minecraft-data#1273 (open) #4062 not ready, green — approved; waits on the minecraft-data release
PrismarineJS/minecraft-data#1275 (merged 7 Sep, not in a release) #4063 not ready, green — safe to merge, sneak fix inert until the minecraft-data release
PrismarineJS/minecraft-data#1278 (open) #4089 not ready, red — waits on the minecraft-data release
PrismarineJS/minecraft-data#1282 (open) #4089 not ready, red — conflicting, and waits on the minecraft-data release

PRs waiting on a protodef release

Prereq mineflayer PR State
PrismarineJS/prismarine-item#184 merged and released #4027 not ready, red — waits on PrismarineJS/prismarine-item#184
ProtoDef-io/node-protodef#177 and ProtoDef-io/ProtoDef#65 merged and released PrismarineJS/prismarine-item#184 not ready, red — waits on the protodef release; design question open
nothing; awaiting re-review ProtoDef-io/node-protodef#177, ProtoDef-io/ProtoDef#65 ready, green — pushed a response to @extremeheat's 6 Sep review on 12 Sep; the five threads are still open

PRs that fix minecraft-data's data

Wire-layout and feature-flag fixes, each checked against a decompiled STREAM_CODEC. The recipe pair is unrelated to the rest and closes PrismarineJS/minecraft-data#182.

PR Status
PrismarineJS/minecraft-data#1267 ready, green
PrismarineJS/minecraft-data#1273 ready, green — duplicates PrismarineJS/minecraft-data#1154 and PrismarineJS/minecraft-data#1251
PrismarineJS/minecraft-data#1278 not ready, red — protocol.json desynced from the yaml, needs npm run build
PrismarineJS/minecraft-data#1282 ready, green
PrismarineJS/minecraft-data#1284 not ready, green — @extremeheat's question unanswered; design question open
PrismarineJS/minecraft-data#1292 ready, green — @extremeheat said on 12 Sep he might fix this himself
PrismarineJS/minecraft-data#1283 not ready, green — after PrismarineJS/minecraft-data-generator#81
PrismarineJS/minecraft-data-generator#81 ready, green — produces PrismarineJS/minecraft-data#1283's data

PRs ready to review

Green CI, mergeable, not waiting on another PR or a release.

PR Status
#4021 ready, green — was your only objection
#4083 ready, green — closes #1587, half of #3274
#4064 ready, green
#4067 ready, green — also fixes one of the master CI flakes
#4068 ready, green
#4069 ready, green
#4071 ready, green
#4073 ready, green
#4085 ready, green
#4086 ready, green
#4087 ready, green
#4088 ready, green
#4093 ready, green
#4100 ready, green
#4101 ready, green
#4102 ready, green
#4103 ready, green
#4104 ready, green
#4107 ready, green
#4108 ready, green
#4111 ready, green — same file as #4112, second one rebases
#4112 ready, green — same file as #4111, second one rebases
#4115 ready, green
#4116 ready, green
#4118 ready, green
PrismarineJS/mineflayer-pathfinder#375 ready, green
PrismarineJS/mineflayer-pathfinder#376 ready, green
PrismarineJS/mineflayer-pathfinder#377 ready, green
PrismarineJS/mineflayer-pathfinder#378 ready, green
PrismarineJS/mineflayer-pathfinder#379 ready, green
PrismarineJS/mineflayer-pathfinder#380 ready, green
PrismarineJS/mineflayer-pathfinder#381 ready, green
PrismarineJS/node-minecraft-protocol#1522 ready, green
PrismarineJS/node-minecraft-protocol#1523 ready, green
PrismarineJS/node-minecraft-protocol#1524 ready, green
PrismarineJS/node-minecraft-protocol#1527 ready, green — unblocks PrismarineJS/node-minecraft-protocol#1526
PrismarineJS/prismarine-item#185 ready, green
PrismarineJS/prismarine-item#188 ready, green — read after PrismarineJS/prismarine-item#189
PrismarineJS/prismarine-item#189 ready, green
ProtoDef-io/node-protodef#178 ready, green
ProtoDef-io/node-protodef#179 ready, green
ProtoDef-io/node-protodef#180 ready, green
ProtoDef-io/node-protodef#177 ready, green — pushed a response to @extremeheat's review on 12 Sep, five threads still open
ProtoDef-io/ProtoDef#65 ready, green — moves with ProtoDef-io/node-protodef#177
PrismarineJS/minecraft-data#1292 ready, green — @extremeheat said on 12 Sep he might fix this himself
PrismarineJS/prismarine-viewer#488 ready, green
PrismarineJS/prismarine-viewer#490 ready, green — closes PrismarineJS/prismarine-viewer#57
PrismarineJS/prismarine-viewer#506 ready, green
PrismarineJS/prismarine-viewer#509 ready, green
PrismarineJS/prismarine-viewer#513 ready, green
PrismarineJS/prismarine-viewer#514 ready, green

(51 PRs)

PRs blocked on me

PR State Why
#4065 not ready, green @rom1504 asked on 7 Sep why this is needed and said it does not follow the plugin interface; no reply from me, thread still open
PrismarineJS/minecraft-data#1284 not ready, green @extremeheat asked on 9 Sep whether the field is a fixed enum or variable, and expanded on 11 Sep after my last push; no reply from me
PrismarineJS/minecraft-data#1278 not ready, red CI says 26.1 (26.1) / protocol.json is desynced from yaml, please run 'npm run build'; the PR edits protocol.json without regenerating
PrismarineJS/prismarine-viewer#503 not ready, green based on a branch that merged as PrismarineJS/prismarine-viewer#501; needs retargeting to master
PrismarineJS/prismarine-viewer#484 not ready, red build (1.14.4) renders an empty frame; the dep releases it was waiting on have all shipped

Other states

Red CI from master, not from the PR

Repo and job Failure Affected PRs
mineflayerMC 1.16.5 1.17.1 1.18.2 1.19 red since 7 Sep, MC 1.19.2 1.19.3 1.19.4 1.20.1 since 12 Sep One flaky external test per run, a different one each time (master run) #4074, #4075, #4081, #4099
mineflayer-pathfinderbuild (24.x) Physics test: Simulated states don't match Bot: (0.5, 3.7967356006686925, 13.30954454956581) !== Simulation: (0.5, 3.495200877005912, 13.45929100856761) PrismarineJS/mineflayer-pathfinder#382, on the identical assertion

Stacked on another open PR's branch

PR State Based on
#4094 not ready, green #4085
PrismarineJS/prismarine-viewer#510 not ready, green PrismarineJS/prismarine-viewer#490
PrismarineJS/prismarine-viewer#511 not ready, green PrismarineJS/prismarine-viewer#510

Ordering, both sides on master

PR State Order Reason
PrismarineJS/node-minecraft-protocol#1526 not ready, red after PrismarineJS/node-minecraft-protocol#1527 PrismarineJS/node-minecraft-protocol#1526 un-hides the suite PrismarineJS/node-minecraft-protocol#1527 fixes, so all its jobs are red until then
PrismarineJS/node-minecraft-protocol#1525 ready, green either its new tests only start running in CI once PrismarineJS/node-minecraft-protocol#1526 and PrismarineJS/node-minecraft-protocol#1527 land
#4114 ready, green either, #4085 preferred first #4085 replaces the sequence: 0 this writes with a real shared counter
#4111, #4112 ready, green either both touch lib/scoreboard.js; whichever lands second needs a rebase
PrismarineJS/minecraft-data#1283 not ready, green after PrismarineJS/minecraft-data-generator#81 PrismarineJS/minecraft-data-generator#81 produces the data PrismarineJS/minecraft-data#1283 commits
PrismarineJS/prismarine-physics#142 not ready, green after #4083 #4083 exposes the flight state PrismarineJS/prismarine-physics#142 acts on

Open design questions

PR State Question
PrismarineJS/minecraft-data#1284 not ready, green It replaces a numeric enum mapper with a plain varint. @extremeheat's position is the opposite: eliminate the numeric enum datatypes across the protocol data. I have no preference. PrismarineJS/minecraft-data#1278 makes the same change to use_entity.hand, so whatever is decided here applies to it, but nobody has commented there. PrismarineJS/minecraft-data#1292 reverts four other 1.21.6 mappers on the same reasoning and keeps entity_action.actionId as a mapper, which is the case for naming them.
PrismarineJS/prismarine-item#184 not ready, red Whether HashedSlot hashing belongs in a generic hash protodef type (ProtoDef-io/node-protodef#177, ProtoDef-io/ProtoDef#65) or in prismarine-item. @extremeheat's feedback on where the hashing code should live is on ProtoDef-io/node-protodef#177; I pushed a response there on 12 Sep.

Duplicates

PR State Duplicates
PrismarineJS/minecraft-data#1273 ready, green PrismarineJS/minecraft-data#1154 and PrismarineJS/minecraft-data#1251, both open from other contributors

A. Vanilla-client packet parity — 18

What mineflayer puts on the wire, diffed against the decompiled client (LocalPlayer.tick, MultiPlayerGameMode, ServerGamePacketListenerImpl). The symptom is usually that something works against a permissive server and does nothing against one that checks. Split out of #4066.

PR Title Status
#4063 physics: send the movement input packets the vanilla client sends not ready, green — safe to merge, sneak fix inert until the minecraft-data release
#4064 health: send player_loaded when the vanilla client would ready, green
#4065 Send the client brand and Client Information when the vanilla client does not ready, green — @rom1504's question unanswered
#4069 send held_item_slot only when the slot differs from the slot the server holds ready, green
#4085 use_item and use_item_on like the vanilla client: shared prediction sequence, cursor on the clicked face, no empty-hand use, swing after the packet ready, green
#4094 Swing every tick while digging, skip STOP on instant breaks and abort with face DOWN not ready, green — stacked on #4085
#4086 Send the client_command respawn after win_game with the actionId field ready, green
#4087 Report resource packs as ACCEPTED, DOWNLOADED, SUCCESSFULLY_LOADED and deny once ready, green
#4089 Right-click entities like the vanilla client: interact pair, real sneak state, hit point not ready, red — waits on the minecraft-data release
#4093 Dismount by holding sneak for one tick on 1.21.3+ ready, green
#4107 Answer pings and teleports at the start of the next tick, in arrival order ready, green
#4108 physics: a teleport leaves the standing flag alone ready, green
#4114 placeEntity: write a complete use_item when placing a boat ready, green — #4085 first is preferred
#4115 placeBlock: derive the face and the cursor from a raycast, like the client does ready, green
#4118 Expose the interaction ranges the server sends, and the reach check vanilla makes ready, green
PrismarineJS/node-minecraft-protocol#1522 Match the vanilla client in the login/configuration handshake: cookies, brand, per-login chat session, known packs ready, green
PrismarineJS/node-minecraft-protocol#1523 write the 0 holder id for inline registryEntryHolder entries ready, green
PrismarineJS/node-minecraft-protocol#1525 send a command with no signable argument as chat_command ready, green — after PrismarineJS/node-minecraft-protocol#1526

B. mineflayer state tracking and API surface — 18

Not packet parity: what mineflayer remembers. State surviving a login it should not, an event fired without its argument, a getter returning the wrong shape.

PR Title Status
#4021 placeBlock: reject an occupied target up front ready, green — was your only objection
#4027 inventory: claim clicked slots by hash on 1.21.5+ not ready, red — waits on PrismarineJS/prismarine-item#184
#4062 entities: read the 1.21.2+ entity_teleport layout not ready, green — approved; waits on the minecraft-data release
#4068 drop the physics tick backlog after an event-loop stall instead of draining it ready, green
#4071 reset teams and scoreboards on every login ready, green
#4073 make bot.controlState's properties enumerable ready, green
#4081 give teamRemoved the team that was removed not ready, red — master CI is red, not this PR
#4083 Track the abilities the server grants ready, green — closes #1587, half of #3274
#4099 cancel the deferred respawn reply once it is stale, and write no movement packets outside play not ready, red — master CI is red, not this PR
#4100 Make the named scoreboard display slots non-enumerable ready, green
#4101 Throw a descriptive error when bot.chat is called before login ready, green
#4102 Normalize open_window titles to ChatMessage ready, green
#4103 Window state across close, re-login and respawn: stateId per window, close_window on respawn, closeWindow(null) ready, green
#4104 Accept play-phase resource packs when no resourcePack listener answers them ready, green
#4111 Read the scoreboard objective title as a chat component ready, green — same file as #4112, second one rebases
#4112 scoreboard: read the 1.20.3+ objective and score packets ready, green — same file as #4111, second one rebases
#4116 waitForTicks: say when it is physics that is missing, not the server ready, green
PrismarineJS/prismarine-physics#142 Obey the flight the server grants in the abilities packet not ready, green — after #4083, which exposes the state it acts on

C. prismarine-item: 1.20.5+ item components — 4

Components are on the wire but items are still read as pre-1.20.5 NBT, so name, lore and custom data come back in the wrong shape or not at all.

PR Title Status
PrismarineJS/prismarine-item#184 Item.toHashedNotch for 1.21.5+ window_click slot claims not ready, red — waits on the protodef release; design question open
PrismarineJS/prismarine-item#185 Expose the custom_data component as item.nbt on 1.20.5+ ready, green
PrismarineJS/prismarine-item#188 Render an item's custom name in displayName ready, green — read after PrismarineJS/prismarine-item#189
PrismarineJS/prismarine-item#189 Read the custom name and lore components as the JSON string they used to be ready, green

D. prismarine-viewer — 10

Two threads: the viewer drawing the wrong thing (nothing below y=0, no skins, no dropped items, invisible entities drawn), and a host/mesher split so the render path stops holding the event loop (PrismarineJS/prismarine-viewer#490 → PrismarineJS/prismarine-viewer#510 → PrismarineJS/prismarine-viewer#511).

PR Title Status
PrismarineJS/prismarine-viewer#484 Add Minecraft 26.1 support not ready, red — empty render on 1.14.4
PrismarineJS/prismarine-viewer#488 Render negative-Y sections on 1.18+ worlds ready, green
PrismarineJS/prismarine-viewer#490 Render player skins ready, green — closes PrismarineJS/prismarine-viewer#57
PrismarineJS/prismarine-viewer#506 Render dropped items ready, green
PrismarineJS/prismarine-viewer#509 resolve entity bone parents by name, whatever their case ready, green
PrismarineJS/prismarine-viewer#513 Unload chunks the server unloads, and follow the world across a transfer ready, green
PrismarineJS/prismarine-viewer#514 Draw nothing for an invisible entity, like the vanilla client ready, green
PrismarineJS/prismarine-viewer#503 viewer.waitForReady() for a fully textured first frame not ready, green — conflicting, needs retargeting to master
PrismarineJS/prismarine-viewer#510 Decode host images without holding the event loop not ready, green — stacked on PrismarineJS/prismarine-viewer#490
PrismarineJS/prismarine-viewer#511 Parse the block states in the mesher, not on the calling thread not ready, green — stacked on PrismarineJS/prismarine-viewer#510

E. mineflayer-pathfinder createHuman — 8

createHuman behaving unlike a player. Independent of each other and of the groups above.

PR Title Status
PrismarineJS/mineflayer-pathfinder#375 goto rejects an unreachable goal instead of resolving; stop() no longer latches while idle ready, green
PrismarineJS/mineflayer-pathfinder#376 cap the wait for the head to settle ready, green
PrismarineJS/mineflayer-pathfinder#377 a walkTo for the goal in flight joins that walk instead of superseding it ready, green
PrismarineJS/mineflayer-pathfinder#378 take three-block drops ready, green
PrismarineJS/mineflayer-pathfinder#379 hold the controller through a setback storm ready, green
PrismarineJS/mineflayer-pathfinder#380 a walk that stops under an unreachable goal rejects instead of resolving ready, green
PrismarineJS/mineflayer-pathfinder#381 walkTo and lookAt say so when physics is disabled ready, green
PrismarineJS/mineflayer-pathfinder#382 bridge over gaps the way a player does not ready, red

F. Test and CI plumbing — 7

No behaviour change. Tests passing for the wrong reason, or suites that have never run. The old -g <version> filter in nmp meant declare_commands handling, lpVec3 and ping have never run in any job.

PR Title Status
#4067 test(nether): let retries pass by respecting the player's portal cooldown ready, green — also fixes one of the master CI flakes
#4074 test: gate the no-chunk physics check on a chunk load instead of a 2 s sleep not ready, red — master CI is red, not this PR
#4075 test: build only the versions under test not ready, red — master CI is red, not this PR
#4088 internal tests: wait for plugin injection before driving the bot from playerJoin ready, green
PrismarineJS/node-minecraft-protocol#1524 test: retry the vanilla ping while the server has no status yet ready, green
PrismarineJS/node-minecraft-protocol#1526 test: select the version under test with MC_VERSION instead of a title grep not ready, red — red until PrismarineJS/node-minecraft-protocol#1527 lands
PrismarineJS/node-minecraft-protocol#1527 test: give the declare_commands tree the packet's rootIndex ready, green — unblocks PrismarineJS/node-minecraft-protocol#1526

G. ProtoDef, upstream — 5

Not PrismarineJS, but the same reviewers and PrismarineJS work sits behind them. ProtoDef-io/node-protodef#177 and ProtoDef-io/ProtoDef#65 are the hash datatype for PrismarineJS/prismarine-item#184; the rest came from chasing unreadable packets in the harness.

PR Title Status
ProtoDef-io/node-protodef#177 Add the hash datatype ready, green — pushed a response to @extremeheat's review on 12 Sep, five threads still open
ProtoDef-io/ProtoDef#65 Add the hash datatype — spec side of ProtoDef-io/node-protodef#177 ready, green — moves with ProtoDef-io/node-protodef#177
ProtoDef-io/node-protodef#178 FullPacketParser: emit partialReadError with the chunk it could not read ready, green
ProtoDef-io/node-protodef#179 Throttle repeated packet-parse error logs in FullPacketParser ready, green
ProtoDef-io/node-protodef#180 Serializer: name the packet in write errors from a compiled protocol ready, green