Repository navigation
feat(compat): continue Bedrock compatibility improvements - #15
Draft
AlexProgrammerDE wants to merge 18 commits into
Draft
AlexProgrammerDE wants to merge 18 commits into
AlexProgrammerDE wants to merge 18 commits into
Conversation
Record populated registry controls that retain colliding named definitions while numeric ItemStack initialization selects a separate owner. The packaged Java reproduction loses the earlier name, so the current bidirectional map cannot supply a complete native registry context. Keep constructor classes, invalid-ID construction, alias fallback, spare lifetimes and observation phases explicit before changing the shared registry and its wire-ID consumers. This records verified evidence and remaining implementation work.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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 |
Move the verified name parser, alias data, metadata callbacks and tests into the patch that owns ItemRegistry. The registry constructor needs these operations before the deferred recipe consumer can apply. Preserve the full generated implementation while correcting the priority-map contract. Record original staging keys, secondary name maps and final numeric ordering from complete native captures. These reveal requirements for the pending ownership correction, including the later block producer and raw keys that differ from canonical names. Full replay, four builds and retained packaged comparisons pass.
Preserve the native counterexamples needed by the pending ownership correction. Raw and namespaced element inputs select different staged lifetimes, and replacing a named lookup does not retire the earlier owned definition. Air and late block controls also separate advertised flags from the constructed receiver.
Construct retained item definitions before projecting network IDs. Native collisions preserve both names, and ordinary map traversal selects the numeric owner. A bidirectional name map discarded definitions that the native registry still exposes. Fold the constructor phases, raw staging keys, block producer inputs and ownership tests into the shared registry foundation. Migrate dependent inventory consumers in their existing patches and keep packet receipt separate from builtin availability. Verify all four builds, 36,310 original construction comparisons, nine packaged comparison suites and embedded class/resource identity. Keep custom-block contexts, complete component branches and live screen acceptance as explicit verification limits.
Verify nonempty component readers through complete native registry construction and late block registration. Retained updates, exact raw keys and staged replacement determine which receiver owns the compiled properties. Two native controls cover 22 declarations and twelve property receivers, matching 8,540 packaged comparisons with complete native cleanup. Keep the optional regression in the inventory consumer patch because it also verifies cooking properties. The complete ViaBedrock suite passes. Runtime sources, resources and build configuration remain identical to the previous verified four-project build. Full component types, other registry contexts and class-specific ItemStack construction remain open.
Separate historical limitations from the current implementation so completed registry behavior and remaining recipe boundaries are clear.
Resolve named ingredients through their selected definitions and receiver-owned block associations. Keep alias representative lookup, direct membership and numeric block fallback distinct, including when network IDs collide. Fold the adapter and shared descriptor foundation into the existing inventory patch and retain caller-specific source admission. Replay all 105 patches and validate the four-project build, packaged suites and original native recipe controls. Keep the separate stack-construction and block-converter differences documented as open work.
Canonical construction can select a named definition while another definition owns its numeric ID. Preserve that selection through copies, property lookup, merge and query admission, and container snapshots instead of resolving every stack back to the numeric owner. Fold construction and consumer changes into their existing patches. Replay all 105 patches and validate the four-project build, final package equivalence, 1920 baseline constructors, 672 collision constructors and native identity/property controls. Keep named/NBT construction, legacy encoded-field comparisons, block-converter context and registry retirement limits explicit.
Separate named strings, definition pointers and network construction while retaining the original Item for Block association before numeric owner selection. Preserve wide count and auxiliary branching, including wildcard and raw zero-ID headers. Use definition-based construction for cooking defaults and output registration. Fold the changes into the owning patches and replay their consumers. All 8,280 named and definition outputs match original native controls; the four-project build passes 2,866 tests. NBT outer-loader admission and the original user reports remain open.
Load saved NBT through typed field admission, legacy ID upgrades and numeric-owner selection. Preserve the distinct ItemInstance assignment and ItemStack reconstruction tails, including owned userdata, restrictions, durability migration and pickup state. Route merchant offers through the shared loader instead of restoring Block state after invalidation. Fold exact group selection and empty alias-result handling into their registry owners. Match 4,508 native saved-constructor outputs, retain prior construction controls and pass all four builds and offline validation. Keep the live player-screen and gameplay reports open.
Route pickup, quick move, drag distribution and pickup-all through the source-first native merge predicate. Raw encoded equality can merge different definitions or restrictions and reject compatible metadata variants. Preserve occupied destination fields and rejected predictions. Keep merge admission separate from stale-state queries. Fold this into the inventory owner and verify all four Java action paths against 756 native predicate cases, with packaged origin checks and four mutations. All four builds and offline validation pass; live reports remain open.
Separate removal permission from incoming placement. Player storage rejects byte lock mode one on removal, while ordinary menus reject every nonzero byte mode on incoming placement. Preserve unsigned byte admission and ignore other NBT types. Check permissions before ordinary action prediction. Remove the blanket refusal from menu-to-player count-one transfers, where native providers omit those filters. Preserve tags and identities in both authority adapters, and retain tracked slots when a legacy send fails. Fold each change into its owning patch and record the native control scope.
Reject the typed slot lock before the creative bypass, then apply the native Curse of Binding rule. Only Default inherits Creative from the level; Undefined does not. Keep the general Java display-mode conversion and the existing typed enchantment reader unchanged. Fold the policy into the inventory owner. Compare the registered native callback and full source method against typed items and actor-mode inputs, and cover request routing and rejected removal after mode changes.
Validate the selected Item definition, native equipment slot and actual transfer count before predicting armor writes. Keep capacity at one for stackable head items and preserve wearable slots across omitted, mistyped or unrecognized component updates. Fold the policy and its regressions into the inventory patch, adapt recipe callers in their owning patch, and refresh dependent replay context. Native controls cover 94,104 destination decisions and 37,872 installed callbacks. Controller delivery and live server acceptance remain separate.
Separate transfer-source permission from discard permission so locked menu and cursor items cannot bypass native Drop and Destroy checks. Validate direct creative writes against raw player mode, destination policy and the refreshed source before allocating or predicting requests. Fold the rules into the owning inventory and creative patches. Original native source/discard calls establish 56,760 decision pairs across ten collection roles; declared collection-root and actor interfaces remain explicit verification boundaries. Preserve the broader controller, world-drop and live-server work as unfinished.
Record sixteen physical input checks through the current ViaProxy and Bedrock server, with thirteen successful request responses and verified installed artifacts. Preserve the distinction between accepted actions, end-to-end refusals and native controller parity. Keep the failed harness timing and unsupported shift-click remainder assumption explicit. The original rendering report is unreproduced, and full native destination ordering still needs its caller control.
Retain offhand permission on the constructed Item definition, including builtin flags, typed component updates and wearable finalization. Apply empty-slot capacity and share the same incoming and source policies with legacy survival transfers before reserving pending ownership. Keep full armor and offhand ranges in ordinary player quick move so valid items can reach equipment slots and occupied offhand stacks can merge. Fold the shared rules and legacy adapter guards into their owning patches. Document the original native controls and the remaining controller, wire and live verification boundaries.
Exercise the built offhand implementation through real Java inventory input and Bedrock responses. Record accepted arrow merges, shift-click, totem transfers and typed lock behavior, plus invalid-item refusals. Keep this server-authoritative ViaProxy evidence separate from native controller ordering and the earlier E-key capture. Verify installed artifact continuity, final close acknowledgment and process cleanup.
This branch has not been deployed
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.
Construct native item definitions before assigning runtime IDs. Preserve constructor order, typed component readers, retained receivers and late Block registration. Network, named, definition-pointer and saved-NBT callers retain their selected definition identity. Copies, recipe descriptors and inventory snapshots preserve that identity.
Saved tags use separate ItemInstance and ItemStack tails. Typed fields, legacy upgrades, owned userdata, restrictions, pickup state and durable-item migration keep their measured lifetimes. Occupied-slot merges use the native source-first predicate, while full stack and stale-state queries retain separate contracts.
Provider permissions distinguish source removal, incoming placement and discard. Typed byte lock mode one blocks ordinary player removal; generic storage rejects incoming nonzero locks. The count-one planner permits locked menu-to-player transfers in both authority adapters. Armor removal applies raw-mode and Curse of Binding rules before prediction.
Armor placement validates the selected definition, matching equipment slot and actual transfer count. Six carved pumpkins place one item in the head slot and retain five. Whole-stack swaps and bundle extraction cannot place multiple armor items. Shift-click uses provider admission and drag uses capacity one. Component wearable readers retain omitted, mistyped or unknown slot fields. Definition-owned Block associations identify head items, replacing the Java name-suffix shortcut. Recipe callers pass their calculated counts through the shared API.
Offhand placement follows the selected constructed Item definition and eight measured builtin flags. Typed common properties, installed allow-offhand components and wearable finalization retain their native update rules. Empty offhand destinations enforce capacity. Ordinary player quick move keeps full armor and offhand ranges before inventory destinations, while existing global merge and empty passes remain unchanged. The legacy survival adapter checks the same incoming and removal permissions before reserving pending ownership; refused clicks leave cursor and equipment unchanged. Admitted actions still wait for server contents.
Inventory slot throws and cursor drops now require source permission and typed lock mode zero. Direct creative packets require the cached raw creative mode; only Default inherits the level mode. Incoming creative stacks use destination admission before temporary opening. Replacement and clearing recheck discard permission against the refreshed source after opening. Creative catalog drops reject nonzero typed locks. Refused operations create no request or predicted inventory change.
A private Java 26.3 client now exercises real E-key openings and physical inventory actions through the preceding discard-milestone ViaProxy build and Bedrock 1.26.51.1. Sixteen controls cover lock refusals, cursor drops, creative catalog placement and one-item head placement. Three opening tokens and the final close are acknowledged. The client retains Java's ordinary player screens with visible backgrounds. Shift-click equips one pumpkin and routes two to inventory slot nine; native full-action destination ordering remains unverified.
A separate live control now uses the offhand build artifacts. Twenty-four physical Java inventory checks produce 21 matching successful Bedrock responses. Arrows enter and merge in offhand, shift-click routes ten arrows there, and totems complete placement, removal and return. Apple placement and typed slot-locked pickup/removal make no request; inventory-locked transfers succeed. Installed client and all 1,521 embedded core classes match the built artifacts. The final E-key close is acknowledged, the driver exits normally, and all processes started by the run retire. This is a server-authoritative ViaProxy path at 854 by 480 and GUI scale two with only ViaFabricPlus and the Bedrock add-on mod JARs. It does not verify native controller construction/order, direct joins, the legacy authority adapter, delayed rejection recovery or the affected WildFFA configuration.
Changes are folded into their owning patches. The legacy adapter guard belongs to its existing confirmation patch. Food, creative catalog, merchant, loom and cartography patch changes in this milestone only refresh replay context.
Validation:
The native target is 1.26.51.1, build 51061372, protocol 2193, with default Experiments and base-game version 1.26.50. Recorded controls complete original backing, input, registry, TLS, static and CRT cleanup without remaining allocations or held locks. The discard control executes the original weak-view factory and view destruction. A supplied pinned collection-root ABI exposes role, backing and start offset zero; its pins return to baseline. Complete collection-root construction and retirement are outside that control. Storage and sparse actor-mode services remain declared interfaces. No permission, Item lookup or Block lookup answer is supplied.
Gameplay drops outside inventory, specialized recipe Consume/output producers, complete creative catalog production and output ownership still need caller controls. Native Actor mode delivery, controller ordering, physical controller input, full client/level setup, arbitrary versioned/custom Block loading, nonzero runtime palettes, registry retirement and broader live authority verification remain unfinished. The broader and focused Block controls retain 12 and 107 differences; auxiliary data stays unchanged while caller context is investigated. Non-compound enchantment-list children receive no native boolean claim.
See the live offhand controls, offhand admission and routing reference, discard and creative reference, armor destination reference, armor source reference, provider permissions and saved-item reference.
All five movement, inventory action, native screen, camera and rendering goal areas remain active. The E-key inventory background/scale, pearl/wind-charge rollback, endless eating and missing locator reports remain unresolved.