跳到正文
本頁目錄

驅動遊戲

每個遊戲在 127.0.0.1 上提供一個 WebSocket:每條消息一個 JSON 請求,遊戲處理完後回覆一條。先用 bedboo,再用 ui, 最後才模擬輸入(原因)。

啟動遊戲

powershell
BeDD.exe launch --slot 1 --json
# {"pid":12345,"instance":"1.26.60.05-1","instanceDir":"…","url":"ws://127.0.0.1:53021/v1","token":"9f3c…","label":"…"}

launch 克隆、安裝或更新模組(用哪個構建),在後臺啟動遊戲,打開 管理窗口,等待 WebSocket,輸出後退出;遊戲繼續運行。實例已在運行:退出碼 5。

參數
--slot N / <instance> / --dir <folder>克隆 <base>-<N>(默認 1)、指定名字的實例,或任意含 Minecraft.Windows.exe 的目錄
--label <text>管理窗口裡的名字(默認 BEDD_LABEL,否則為調用方項目)
--exclusive-signaling等其他遊戲關掉;獨佔整臺電腦(規矩)
--keep-mod保留克隆裡的模組
--no-manager不啟動管理窗口
--timeout / --lock-timeout等待 WebSocket(3m)/ 信令鎖(2h)
--detach進程一啟動就返回;url/token 為 null

BeDD.exe ps 列出遊戲;BeDD.exe stop <pid> 保存並關閉一個。

選哪個遊戲

BeDD.exe ps --json(或 %LOCALAPPDATA%\BeDD\run\<pid>.json,WebSocket 監聽期間存在)給出每個遊戲的 url、token 和 instance。按 instance 選自己的,從不按進程名。用 ?token=<token> 或 Authorization: Bearer <token> 連接;令牌每次啟動都換新。 詳見連接。

用 bedboo

js
import bedboo from 'bedboo';
const bot = bedboo.createBot({ transport: 'bedd', bedd: { url: game.url, token: game.token } });
bot.once('spawn', () => bot.chat('/summon cow'));

一個小客戶端

不用 bedboo 時,任何 WebSocket 客戶端都行:發 {id, op, ...},按 id 匹配回覆,跳過二進制(tap)幀。本指南用到的 Node 24 call(op, args) 助手函數:連接。按模式分的操作:操作模式; 全部字段:WebSocket 協議。

按鍵名

key 接受按鍵名(ESC、ENTER、F1..F24 等:input 操作)或任意 vk。聊天: bedboo bot.chat('/summon cow');否則 key T、text、key ENTER。

位置

mouse 接受 x,y 像素、rx,ry 比例,或 ui 的 ref(與窗口大小無關)。用座標時要固定窗口大小(配置 clientWidth/clientHeight 或 window)。鼠標被鎖定時 raw 轉動視角。

服務器

js
await call('join', { host: '127.0.0.1', port: 19140, wait: true });   // join, wait until in the world
(await call('join')).connection;                                      // none | local | remote

在標題界面或世界裡都能用(先退出世界);加入出錯或 timeoutMs(60000)用完時失敗。本機以外的服務器需要 Remote 世界模式。

多條連接

每個遊戲最多 wsMaxClients(8)條連接,每條按順序處理。一條連接關閉時,它的 key/mouse 按住和無終點的 button 按住被鬆開; button 的 click/holdTicks/releaseOn 和 input(直到 ttlMs/ttlTicks)繼續執行,所以一次性調用方可以直接斷開。 詳見多個客戶端。