驅動遊戲
每個遊戲在 127.0.0.1 上提供一個 WebSocket:每條消息一個 JSON 請求,遊戲處理完後回覆一條。先用 bedboo,再用 ui,
最後才模擬輸入(原因)。
啟動遊戲
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
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 轉動視角。
服務器
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)繼續執行,所以一次性調用方可以直接斷開。
詳見多個客戶端。