Skip to content

BedrockOnLinux 2.2.6

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:50
· 1 commit to cf9d11840602ed79fe30de0e17565b51ec9a9013 since this release

Fixed

  • Minecraft 1.26.50 and newer start again instead of crashing at 78–82 %
    (#266,
    #269). Every
    1.26.50.4 and 1.26.51.1 launch died on the loading screen with an unhandled
    page fault reading 0x68, on Intel, AMD and NVIDIA alike, and so did the
    1.26.50 Minecraft Previews (#154, #267, #270, #271, #272). The launcher
    caused it, not the game or the engine: to hide the in-game Sign-in button it
    moved the compiled UI archive, ui.brarchive, aside so that the loose
    JSON-UI files next to it would load instead — and 1.26.50 no longer ships
    those files. The game was left with no user interface at all and crashed
    while building its first screen. The archive now stays where the game
    expects it, and the button is hidden by editing the start screen inside the
    archive itself; an untouched copy is kept beside it as
    ui.brarchive.bol-orig, and is put back on its own if the edited archive
    ever fails to read back. PLAY also repairs an install an earlier launcher
    already broke — including one whose __brarchive folder was made read-only
    to work around the crash — so nothing has to be moved back by hand. Builds
    up to 1.26.45 keep the old behaviour. Contributed by
    @jtdubs.

  • Friends, Realms and featured servers work again on Minecraft 1.26.50 and
    newer
    (#266,
    #269). With the crash
    out of the way, 1.26.50 still came up half offline for a signed-in player:
    Social showed no friends, the Realms tab spun forever with its buttons
    disabled, and featured servers kept a greyed-out Play button. 1.26.50 moves
    the game's Xbox Live services into a new library built against a newer
    Microsoft GDK, and that library asks the Xbox runtime for its system
    interface under an ID the engine did not recognise — refused, the services
    never started. The engine now answers every revision of that interface the
    game's libraries ask for; all of them only use the sandbox query it already
    implemented. Checked on 1.26.51.1: Social counts the friends online, Realms
    offers its invitations, and featured servers can be joined. This needs the
    new engine, wow64-archs-native18, which the launcher downloads on its own.
    Contributed by @jtdubs.

  • The in-game mouse no longer goes dead on machines with an AIO cooler, a
    fan or RGB controller, or a similar USB gadget

    (#262). The cursor
    moved, but Minecraft saw no hover and no clicks, while the keyboard kept
    working.
    Wine's HID bus opens every /dev/hidraw node the user can open, and the
    devices that ship uaccess udev rules for their Linux tools can be.
    Some of them send input reports longer than their own descriptor declares
    (an NZXT 1e71:1714 declares 21 bytes and sends 64), and Wine copies the
    whole report into a buffer sized from the descriptor, in winebus's
    deliver_next_report and again in hidclass's hid_device_queue_input.
    The heap corruption crashed winedevice.exe at every start, and that
    process hosts the whole HID stack, Wine's virtual mouse included, so
    GameInput had no mouse left to read. PLAY now writes winebus's per-device
    Hidraw = 0 option for every hidraw device Wine could open that is not a
    game controller: Minecraft gets its mouse and keyboard from Wine's virtual
    devices, and controllers keep hidraw exactly as before. doctor lists the
    devices it covers, and BOL_HIDRAW=all gives them back to Wine.
    Contributed by @Leif-Yggdrasil.

  • The version picker can be told to check for a new build right now
    (#268).
    The list of installable Minecraft builds is fetched once per launch and
    then cached for up to 12 hours, so a build that Mojang shipped after that
    fetch stayed invisible until the cache aged out on its own — restarting
    the launcher changed nothing, because the ordinary path only refetches
    once per launch too. The version picker now has a ↻ button that bypasses
    the cache and re-checks the build index on the spot; bedrock-on-linux versions --refresh does the same on the command line — the wall players
    looking for 1.26.50.4 on the day it came out ran into (#266).
    Contributed by @Queuereel.

  • Updating the game engine no longer needs room for every engine you ever
    had.
    Each engine revision is an ~860 MB download the launcher keeps in its
    cache, and nothing ever removed one once a newer revision was pinned — a
    machine that followed every update carried gigabytes of archives no launcher
    would open again. An update has to fit the new archive and its 2.5 GB
    unpacked engine before the old one goes, so on a nearly full disk those
    leftovers turned this release's engine update into a launcher refusing its
    own engine. The archives of other engine revisions are now removed before
    the new one is downloaded; the archive of the engine in use stays.

  • PLAY no longer redoes an Xbox Live sign-in it already just finished.
    Every launch minted a fresh device, user, XBL, XSTS and SISU token chain —
    eight sequential requests to Microsoft/Xbox — even when the previous launch
    had done exactly that a minute earlier and the tokens were still good for
    hours. The background warm-up that runs while you're still looking at the
    account row (_warm_xbox_preauth) already does this work; PLAY was simply
    throwing it away and starting over, worth roughly ten seconds of the wait
    before Minecraft's window appears. PLAY now reuses a cached token chain
    when it still has a comfortable margin left, and only re-runs the chain
    when that margin has run out or the tokens are missing outright.

Build provenance

Application artifacts built from source, consuming this
fork's attested, pinned engine and OpenSSL-XCurl set.

Bill of materials (pinned + reproducible):

  • Managed engine: wow64-archs-native18 (sha256 e0ead91c3003ff6d4e01995dc8590d21603251d2e71a51c594eab0c3271eabff)
  • WineGDK source: 75637b674e1f191e65753663c4c0c32bea05ba6e (prefix sha256 5e790543d13a42b594df03dc9adfad16980cfd471ed8f1cfcbc55718e1791e25)
  • vkd3d-proton: 3.0.1-nv-dgc (output-hashes sha256 09d22ca93ae4b0a2f99294a43cec6a89a2bd92b96dffb14f2fcc5cf66685b3df)
  • OpenSSL-XCurl set: 504bb166e4e7

Verify any file with:

gh attestation verify <file> --repo Wyze3306/BedrockOnLinux

What's Changed

  • fix(auth): reuse a fresh Xbox Live token chain at PLAY instead of refetching it by @xRookieFight in #254
  • fix(hidraw): keep non-controller hidraw devices off Wine's HID bus by @Leif-Yggdrasil in #262
  • Added the refresh button when pressing on the version selector by @Queuereel in #268
  • fix(ui): resolve 1.26.50+ crash at 78% and vendor WineGDK IXSystemImpl patch (#266) by @jtdubs in #269

New Contributors

Full Changelog: v2.2.5...v2.2.6