跳到正文
本頁目錄

BeDD 模式(transport: 'bedd')

本頁說明當 bedboo 不再自己處理協議、而是驅動由 Be.D.D. 託管的真實 Bedrock 客戶端(transport: 'bedd')時有哪些變化。 僅涉及 bedd 傳輸:使用 raknet / nethernet 時本頁內容均不適用。配置方法、權限歸屬表和覆蓋矩陣見 BeDD 指南。

真實客戶端負責自己的上行數據包

  • 影響: 所有會發送數據包的 API;bot._client.queue / write
  • Java: mineflayer 本身就是客戶端,所有數據包都由它自己寫出。
  • Bedrock: 由 BeDD 託管的客戶端自己登錄、應答加載界面、請求區塊,並每 tick 自己發送 player_auth_input、方塊操作、 物品欄事務(inventory transaction)和物品堆疊請求(item stack request)。
  • bedboo: 從不偽造這些數據包。一個路由器把 bedboo 原本要發送的內容轉換為 BeDD 控制操作(input、look、slot、 button、action、send、stack);屬於客戶端的數據包會被丟棄(見 權限歸屬表)。

bot.entity 跟隨客戶端,滯後 1-2 tick

  • 影響: bot.entity.position / velocity / yaw / pitch / onGround、physicsTick、move、 bot.physicsEnabled、mineflayer-pathfinder
  • Java: mineflayer 的物理引擎每 tick 預測玩家狀態。
  • Bedrock(bedd): 玩家由客戶端自己的物理引擎移動;tap 會回顯客戶端發出的每個 player_auth_input。
  • bedboo: 物理提供者不自行步進,而是複製回顯(眼睛高度 − 1.62),每個客戶端 tick 觸發一次 physicsTick 和 move; 當回顯與目標的偏差在 0.5° 以內時,look / lookAt 才 resolve。行走、pathfinder 目標和 lookAt 均可用;pathfinder 運行時有 1-2 tick 的延遲。

點擊落在客戶端準星所指之處

  • 影響: dig、placeBlock、activateBlock、activateEntity、attack
  • Java: mineflayer 在數據包中直接指定方塊 / 面 / 實體。
  • Bedrock(bedd): 客戶端轉向目標並點擊;命中什麼由它自己的射線檢測決定。
  • bedboo: 先轉向,等待視角收斂,再發送 button;結果從 update_block 和實體事件中讀取,因此點擊落到相鄰方塊上時 也能如實反映出來。

不支持界面級操作

  • 影響: bot.writeBook、bot.updateSign、bot.respawn、通過床的界面入睡 / 起床
  • Java: bedboo 可以自己發送對應的數據包。
  • Bedrock(bedd): 這些都是真實客戶端的界面;BeDD 目前還沒有對應的操作(計劃在 v2 提供)。
  • bedboo: 這些調用會拋出或 reject BeddUnsupportedError(code: 'ERR_BEDD_UNSUPPORTED'、bedd: true、 feature、missing);需要用戶在客戶端上點擊“重生”。

物品欄操作需要 stack 操作

  • 影響: clickWindow、moveSlotItem、transfer、deposit、withdraw、putAway、craft、從主物品欄 / 盔甲 / 副手執行的 equip、unequip、tossStack、creative.setInventorySlot、鐵砧 / 附魔臺 / 村民交易 / 鍛造臺
  • Java: 窗口點擊。
  • Bedrock(bedd): 物品堆疊請求必須經過客戶端的 ItemStackNetManager,否則客戶端的請求 id 和預測的物品欄會失去同步。
  • bedboo: 啟用 BeDD 的 stack 操作(allowStack: true)後這些調用可用,bedboo 的請求 id 會映射到客戶端的請求 id; 未啟用時它們會以 ERR_BEDD_UNSUPPORTED reject。

連接選項歸客戶端所有

  • 影響: createBot 選項 auth、username、host、port、viewDistance、skipPing;holdResourcePacks; bot.end、bot.quit
  • Java: 由 mineflayer 負責連接、認證和斷開。
  • Bedrock(bedd): 客戶端已經登錄並處於某個世界中。
  • bedboo: 這些選項會被忽略,每個各輸出一次警告;holdResourcePacks 不起作用;bot.end / quit 只會斷開掛接 (客戶端仍留在它的世界中)。客戶端切換世界(LINK_DOWN)會結束 bot。