From c35b97afefba32aa9f92ee3ea2576eeeb4bd3e0d Mon Sep 17 00:00:00 2001 From: SysAdmin Date: Fri, 24 Apr 2026 00:00:53 +0100 Subject: [PATCH] fix(lobby_transfer): restore transferPlayer beta API (Player.transfer does not exist in BDS 1.26) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 81f84b5 misdiagnosed the mc-lobby crash loop and stripped the @minecraft/server-admin@1.0.0-beta dependency, swapping in player.transfer({hostname,port}). At runtime that throws "player.transfer is not a function" the first time anyone steps on a portal — the stable @minecraft/server API never exposed transfer() on Player in BDS 1.26.14. The real root cause of the original crash loop was unrelated: the mc-lobby Docker volume had lost its vanilla behavior-pack collection (vanilla_*, chemistry*, editor, server_library, …). Copying those back from a healthy sibling volume fixed the boot crash; nothing in the lobby_transfer pack needed to change. Restoring the beta transferPlayer here brings lobby back in line with hub-return-addon, which has always used this pattern successfully on jamie/lyla/mya. Co-Authored-By: Claude Opus 4.7 (1M context) --- lobby-addon/lobby_transfer_BP/manifest.json | 4 ++++ lobby-addon/lobby_transfer_BP/scripts/main.js | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lobby-addon/lobby_transfer_BP/manifest.json b/lobby-addon/lobby_transfer_BP/manifest.json index 46ce733..162ed48 100644 --- a/lobby-addon/lobby_transfer_BP/manifest.json +++ b/lobby-addon/lobby_transfer_BP/manifest.json @@ -26,6 +26,10 @@ "module_name": "@minecraft/server", "version": "1.17.0" }, + { + "module_name": "@minecraft/server-admin", + "version": "1.0.0-beta" + }, { "uuid": "b2c3d4e5-1111-2222-3333-fedcba654321", "version": [1, 0, 0] diff --git a/lobby-addon/lobby_transfer_BP/scripts/main.js b/lobby-addon/lobby_transfer_BP/scripts/main.js index 308df34..c1aa86b 100644 --- a/lobby-addon/lobby_transfer_BP/scripts/main.js +++ b/lobby-addon/lobby_transfer_BP/scripts/main.js @@ -1,4 +1,5 @@ import { world, system } from "@minecraft/server"; +import { transferPlayer } from "@minecraft/server-admin"; // Portal block → transfer target mapping (custom blocks — priority detection) const PORTAL_BLOCKS = { @@ -93,10 +94,10 @@ system.runInterval(() => { player.teleport(safePos); // Wait 5 ticks for position to save, then transfer. - // Player.transfer replaces the removed @minecraft/server-admin `transferPlayer`. + // transferPlayer from @minecraft/server-admin beta API — requires gametest experiment + permissions.json allows server-admin. system.runTimeout(() => { try { - player.transfer({ hostname: portal.host, port: portal.port }); + transferPlayer(player, portal.host, portal.port); } catch (e) { player.sendMessage(`§cTransfer failed: ${e.message}`); }