Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8e1ef8c
docs(inventory): record native bulk crafting constraints
AlexProgrammerDE Nov 1, 2026
e70d342
test(inventory): preserve native Survival bulk request fixtures
AlexProgrammerDE Nov 1, 2026
a91983c
feat(connection): add a deferred server blacklist bypass
AlexProgrammerDE Nov 1, 2026
fe62b8a
feat(inventory): plan native Survival bulk crafts
AlexProgrammerDE Nov 1, 2026
0821234
fix(inventory): preserve recipe metadata in bulk requests
AlexProgrammerDE Nov 1, 2026
9903290
fix(inventory): return native recipe containers
AlexProgrammerDE Nov 1, 2026
97a7861
fix(inventory): restore search focus after recipe clicks
AlexProgrammerDE Nov 1, 2026
39a461a
fix(crafting): match native manual output actions
AlexProgrammerDE Nov 1, 2026
c9c6afe
fix(inventory): retain recipe queries across openings
AlexProgrammerDE Nov 1, 2026
7f81b0f
docs(coverage): retain confirmed rendering reports
AlexProgrammerDE Nov 1, 2026
1ce284b
fix(items): allow food use on Bedrock Peaceful difficulty
AlexProgrammerDE Nov 1, 2026
f2f1de2
docs(items): record native component-food admission controls
AlexProgrammerDE Nov 1, 2026
c5708ab
fix(food): compose native component-food use
AlexProgrammerDE Nov 1, 2026
9ecaab2
docs(food): record native input deadline evidence
AlexProgrammerDE Nov 1, 2026
038a9fc
chore(stack): refresh upstream bases and native food timing
AlexProgrammerDE Nov 1, 2026
6286501
fix(input): retain native use mode across item changes
AlexProgrammerDE Nov 1, 2026
3d84df0
fix(input): preserve native food holds and active item identity
AlexProgrammerDE Nov 1, 2026
70843f4
fix(interaction): retain native held placement paths
AlexProgrammerDE Nov 2, 2026
2dff1d8
fix(input): continue rejected block use from input frames
AlexProgrammerDE Nov 2, 2026
6d0c5b5
fix(input): separate block dispatch from air admission
AlexProgrammerDE Nov 2, 2026
4d58293
fix(inventory): retain pending search edits across screens
AlexProgrammerDE Nov 2, 2026
46d0607
fix(inventory): reject opens during native close waits
AlexProgrammerDE Nov 2, 2026
fc6e30e
fix(inventory): await native player screen acknowledgments
AlexProgrammerDE Nov 2, 2026
70c266a
fix(rendering): preserve floors beneath beds with MoreCulling
AlexProgrammerDE Nov 2, 2026
7ca7f21
docs(movement): record current projectile rollback controls
AlexProgrammerDE Nov 2, 2026
b661d93
fix(integration): select BDS HTTP signaling targets
AlexProgrammerDE Nov 2, 2026
655878e
test(movement): cover moving pearl and wind-charge recovery
AlexProgrammerDE Nov 2, 2026
c659c96
fix(ui): translate action form dialog labels
AlexProgrammerDE Nov 2, 2026
1c1eaf4
chore(deps): refresh ViaProxy upstream pin
AlexProgrammerDE Nov 2, 2026
70c653d
fix(camera): reset queued blends after clear
AlexProgrammerDE Nov 2, 2026
3f4e488
docs(rendering): record native enchanted shield controls
AlexProgrammerDE Nov 2, 2026
316bbea
fix(rendering): preserve native player postures and anchors
AlexProgrammerDE Nov 2, 2026
b0674e9
chore(deps): rebase Bedrock add-on onto upstream
AlexProgrammerDE Nov 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/bedrock-complex-gameplay.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ bun run test:integration -- --route java-bedrock --gameplay-complex
```

Select individual cases through the [test-pack guide](bedrock-test-packs.md).
Select `pearl-wind-charge` and `pearl-wind-charge-moving` to compare stationary and walking projectile combinations.
The suite exercises ranged use, potion effects, fireballs, powder snow, fluids, and creative ascent.
It is a runnable subset, not an exhaustive Bedrock simulation.
The Java/Geyser fixture does not implement every BDS complex case.
Expand Down
12 changes: 8 additions & 4 deletions docs/bedrock-coverage.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ No complete area has verified Bedrock parity.
| --- | --- | --- |
| Protocol 2225 | Updated packet layouts, explicit enum values, stonecutter notifications, cursor drags, skin identity, and sound unions. | Block seating, signed content playback, matchmaking UI, and environment layers remain partial or unsupported. |
| World resources | World base-game version selects vanilla metadata, textures, actor graphs, and audio before server overrides. The context survives ViaProxy. Server legacy biome bindings retain unqualified names across versions. | Native current/older/current cat, sound, and remote biome-name controls cover selected paths. Broader pose and audio behavior need comparisons. |
| Held trapdoors | Retained facing and half, interaction suppression, use timing, cancellation, rejection, and prediction reconciliation. | Native, direct, and proxy controls cover specific held-placement histories. Other placement and interaction families need separate comparisons. |
| Held block placement | Retained stationary build paths, next-cell ray selection, independent fresh block/air admission, frame retries after rejection, use timing, trapdoor orientation, cancellation, and prediction. | Native, direct, and proxy controls cover selected stationary paths, first rejection, last-stack placement, activation, re-aiming, and release. Moving placement, air/entity dispatch, build-height limits, and broader input scheduling remain open. |
| Fonts and UI | Bitmap metadata, extended mapping, same-pack ownership, legacy layouts, authored scenes, and native GUI sampling. | At 1280 × 720, current controls match all 16 labels at native UI scales 1 and 2; legacy scale-2 controls match 16/16. Both routes pass Java GUI scale changes and reloads. Broader viewports and TrueType comparisons remain open. |
| Player inventory and crafting | Opening ownership, recipe catalogs, Creative catalog actions, compressed snapshots, local Help, inactive item lighting, native storage weights, and native stack identities. | Complete E-key/workbench presentation, bundle actions/tooltips, bulk Survival recipe actions, and original live bug reports remain unresolved. See the [inventory reference](native-player-inventory.md). |
| Player inventory and crafting | Opening ownership, recipe catalogs, Creative catalog actions, Survival bulk and manual crafting actions, retained recipe queries, compressed snapshots, local Help, inactive item lighting, native storage weights, and native stack identities. | Complete E-key/workbench presentation, bundle actions/tooltips, query lifetime across connections, broader Survival recipes, and original live bug reports remain unresolved. See the [inventory reference](native-player-inventory.md). |
| Food use | Native components govern admission and Java food/consumable properties, with Creative and Peaceful exceptions. Local use retains native item identity across Java carriers. | Selected admission, input-deadline, timed-food, held-mode, release, and pause controls pass. Short input edges during active Java use, broader use cycles, and the original intermittent report remain open. See the [food-use evidence](../patches/viabedrock/deferred/0008-signal-sustained-bedrock-item-use.pr.md). |
| Cooking | Snapshot-bound recipe actions, transfer batches, preferences, search, and progress. | Default cooking screens retain ordinary controls until authored bindings are complete. See the [cooking reference](native-cooking-actions.md). |
| Skins and appearance | Complete skin transport, classic changes, persona assembly, animation graphs, costumes, and attachables. | Broader wardrobe masking, profile/LOD changes, shield rendering, remote appearances, and account/platform flows need further native comparisons. See [skin support](skin-flow.md). |
| Movement and effects | Completed physics frames, retained prediction history, correction replay, terrain queries, and authoritative impulses. Overworld air blindness attenuates night-vision strength and fog color together. Both Java routes match native water-boundary fall controls. | Native Fancy controls establish the tick-based expiry blend and distance curve at noon and midnight. Other fluid movement, vision combinations and media, mount variants, network conditions, and broader replay behavior remain open. |
Expand All @@ -38,9 +39,12 @@ No complete area has verified Bedrock parity.

Retain these reports until a matching reproduction establishes the result:

- Lifeboat dialog text was reported as untranslated. A generic [action-form dialog label defect](../patches/viabedrock/upstreamable/0095-integrate-authored-native-ui-presentation.pr.md) is fixed. The original report still needs a matching form capture.
- WildFFA inventory opened with E shows items without the expected background.
- An update from 0.3.61 to 0.4.2 caused reported inventory lag spikes, overlapping menus, and an extreme shield pose.
- An ender pearl followed by a wind charge can cause repeated rollbacks.
- An update from 0.3.61 to 0.4.2 caused reported inventory lag spikes and overlapping menus.
- The oversized shield and distorted custom-skin pose in the confirmed 0.4.3 screenshots remain unresolved.
- The 0.4.3 bed-floor report matches a reproduced [MoreCulling interaction](../patches/viafabricplus-bedrock/upstreamable/0040-preserve-native-occlusion-with-moreculling.pr.md). Current direct and proxy controls preserve the floor. The affected player's mod list remains unknown.
- An ender pearl followed by a wind charge can cause repeated rollbacks. Selected [current native and Java controls](../patches/viafabricplus-bedrock/upstreamable/0025-send-completed-local-physics-to-viabedrock.pr.md) settle, including walking projectile combinations with added incoming delay. Timing for short presses and the original persistent loop remain unverified.
- Food can repeat its use animation without feeding the player.
- The locator bar can be absent.

Expand Down
90 changes: 82 additions & 8 deletions docs/native-player-inventory.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@ Java screens do not reproduce those custom layouts.

## Screen lifetime

Open the Bedrock inventory only after Java installs the actual screen.
Constructing a screen does not open a server container.
Each installed opening receives a monotonic connection token.
Request the Bedrock inventory at the actual GUI admission attempt.
Constructing a screen alone does not open a server container.
Each requested opening receives a monotonic connection token.
An authored presentation swap retains that token. An ordinary reopen receives a new one.

The Bedrock open acknowledgment has no client token.
Core serializes native openings and retains retired requests until their acknowledgments arrive.
A new opening waits for the previous close acknowledgment.
Native ignores the inventory key while a previous player or workbench close awaits acknowledgment.
Core rejects a player opening received during that wait by its own opening token.
It requires fresh input after acknowledgment instead of queuing the rejected opening.
Client-initiated close acknowledgments retire native state without forwarding another Java screen close.
Bind clicks, data, and closes to the connection, menu object, menu ID, and opening token.
A stale reply must not operate on a replacement screen.
Keep global player-inventory reconciliation independent of a retired temporary menu.
Expand All @@ -46,7 +49,15 @@ Programs advertise this behavior through the versioned core hurt contract.
Without that contract, screens that require the hurt policy retain ordinary controls.
Separate admission checks still exclude unfinished cooking bindings.

The installed opening also owns a read-only recipe context while the native acknowledgment is pending.
A negotiated player opening keeps the world visible until its native container acknowledgment arrives.
Movement continues during that wait.
Repeated E sends another open interaction under the same opening token.
Escape or chat cancels the pending intent.
A late acknowledgment cannot replace that other screen or reopen the inventory after exit.
This admission applies with Bedrock inventory screens enabled or disabled.
Older translators retain their existing screen behavior.

A requested opening also owns a read-only recipe context while the native acknowledgment is pending.
It reads the real cached crafting grid, hotbar, inventory, and cursor.
The acknowledgment retains this model and its captured search policy.
Item requests still require the acknowledged container and its generation.
Expand Down Expand Up @@ -104,10 +115,64 @@ The add-on owns input delivery and presentation over authoritative slots and cur
Keep player destinations, offhand permissions, item locks, and creative actions explicit.
A fallback acknowledgment must not consume a newer menu's request.

Retain the latest local search edit within its connection before waiting for a command reply.
Closing a screen retires its commands but preserves unsent text and explicit clearing.
A replacement presentation submits that text with its own opening, generation, revision, and request sequence.
Disconnect clears the client's retained edit.
In Bedrock 1.26.60.5, Escape first removes search focus. The next Escape closes the inventory.

Native 1.26.60.5 classic-screen controls distinguish recipe selection from crafting.
A normal recipe click fills the grid. Taking its output sends a separate craft request.
A workbench recipe Shift-click uses `CraftRecipeAuto` with explicit ingredient descriptors, followed by results, consumption, and placement actions.
The request codec supports this format. Installed authored recipe actions remain unfinished.
Core plans this request for shaped and shapeless recipes from their server-supplied results.
The planner uses the first eligible ingredient allocation.
Ordinary named ingredients retain their resolved recipe metadata, including wildcard auxiliary values.
Tag and Molang ingredients use the selected source descriptor.
Requests use the request ID for later references to a changed slot.
Rejected requests restore the crafting grid, inventory, and cursor.

Native 1.26.60.5 plank controls convert 16 of 32 logs into 64 planks per Shift-click.
Output merges existing stacks and can use a slot freed by consumption.
An unrelated held apple stays unchanged while output fits inventory.
When inventory is full, an empty cursor receives the output.
Held logs increase displayed availability, but bulk crafting leaves them unchanged.
With full inventory, a full compatible cursor or an incompatible held stack prevents the craft request.
A partially filled compatible cursor instead drops its held stack and receives the full crafted stack.
Captured requests cover cursors with 60 and 63 planks; both produce 64 new planks.
With one free inventory item-space, native crafting places one plank, drops any held stack, and takes the remaining 63.
This behavior also applies to an incompatible cursor or a full compatible cursor.
The initial capacity check precedes consumption.
A full inventory and incompatible cursor prevent crafting even when consumption can free a source slot.
An empty cursor admits that same craft. Output can then use the freed source slot.
Native wooden-sword bulk crafting produces one sword despite ingredients for 32.
The primary output stack limit caps the craft count. Returned containers do not reduce it.
Recipe data includes returned buckets and bottles, so core does not need a separate remainder mapping.
For two-output catalog recipes, native selects the secondary output before the primary output with `Create` actions.
Each created stack chunk starts another merge pass before using empty inventory slots.
Six cakes return 18 buckets as stacks of 16 and 2.
When inventory is full, returned bottles drop directly from created-output slot 50.
The primary honey blocks still use the cursor fallback.
Complete request fixtures preserve split placement, repeated source references, and cursor replacement.
The matching server accepts these native requests.
Planner tests cover these request and prediction boundaries, including rejection rollback.
Installed direct and ViaProxy controls each complete 11 server-accepted requests.
Both routes match the captured split-placement, cursor-replacement, and freed-slot requests after stack-ID normalization.
Additional controls consume the player crafting grid and produce one wooden sword with repeated references to its plank source.
Reopening retains completed output and the returned cursor stack.
The incompatible-cursor control sends no craft request until the cursor is empty.
Separate installed direct and ViaProxy controls verify bucket chunks, returned bottles using a freed source slot, and bottle drops with a full inventory.
The three craft requests per route match the native cake and honey captures after stack-ID normalization.
Authoritative responses confirm inventory and cursor quantities. Reopening retains completed output.
Rejected requests remain unit-tested. These live controls do not induce server rejection.

Direct output-slot clicks craft once onto the cursor, including right-click.
Manual crafting selects the primary output before returned containers and places returns in inventory, with overflow dropped from created output.
Manual Shift-click leaves the cursor unchanged and uses combined inventory capacity.
It sends the remaining stack-sized craft requests in one packet, with each request referring to earlier predicted stack identities.
The native 20-millisecond click control crafts 128 planks through two requests of 64.
State regressions cover both grids, returned containers, capacity across partial stacks, linked requests, and partial rejection.
Installed direct and ViaProxy controls each match nine native craft requests and their authoritative response quantities across eight player/workbench cases.
The controls cover right-click, linked Shift-click requests, returned containers, full inventory, partial bottle stacks, and retained output after reopening.

Admit an authored player screen only when its required collections and controls are available.
The shared UI renderer supports the local player portrait and separate body/head rotations.
Expand All @@ -127,6 +192,10 @@ Use the [source guide](bedrock-development-sources.md) for versioned native refe
Core publishes the retained player/workbench rows and full item previews in compressed snapshots.
Commands bind to the opening, container generation, snapshot revision, and request sequence.
The add-on buffers search edits while a command awaits its reply.
Returning to search after a recipe click restores text input without closing the inventory.
Search text survives player and workbench reopenings within a connection, including an explicit clear.
Each opening starts with a fresh model and no selected output.
Installed direct and ViaProxy controls cover retained text and matching rows, replacement queries, explicit clearing, and a server-accepted player craft.

The default player and workbench graphs resolve real slots, recipe rows, and local Help views.
Survival Help opens Your First Craft. Creative Help opens the Encyclopedia at Creative Mode.
Expand Down Expand Up @@ -163,8 +232,13 @@ A full inventory accepts the input without an inventory request.
Unchanged Java Creative slot echoes preserve the existing native stack and network ID.
Installed direct and ViaProxy controls confirm these pointer, capacity, and reopening cases through successful server responses.

Bulk Survival recipe actions and complete installed native parity remain unfinished.
Native constructor timing relative to the open acknowledgment and frame-level population timing remain unverified.
Recipe families beyond the captured plank, cake, and honey controls, recipes with more than two outputs, and complete installed native parity remain unfinished.
Native query lifetime across disconnects and world changes remains unverified.
Official Bedrock 1.26.60.5/BDS 1.26.60.6 controls delay the initial open acknowledgment by four seconds on protocol 2225.
They establish visible admission, repeated input, movement, and cancellation through Escape or chat.
Rebuilt direct and ViaProxy controls retain the world during that same delay in Survival, Creative, and workbench openings.
Both routes preserve the pending opening through repeated E and close abandoned native containers after cancellation.
Native model constructor timing and frame-level population timing remain unverified.
An unpositioned player inventory uses the fallback crafting context.
Native model-position initialization and arbitrary custom component admission remain unverified.
The original inventory-background, rollback, food-use, and locator-bar reports remain unresolved.
Expand Down
2 changes: 1 addition & 1 deletion docs/skin-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ The owning patch notes describe their specific validation and limits:
## Remaining limits

Other wardrobe categories, rapid profile changes, and distinct LOD texture selection still need matching fixtures.
Enchanted shields, complete first-person appearance, live mounts, remote skins, and motion timing remain partial or unverified.
Exact enchanted-shield lighting and phase, complete first-person appearance, live mounts, remote skins, and motion timing remain partial or unverified.
Platform purchases, complete account synchronization, and broader emote parity remain open.
Keep current status in the [compatibility page](bedrock-coverage.md), not a chronological skin journal.
Loading
Loading