Skip to content

WebSocket API 參考

協議概覽

屬性
WebSocket URLws://localhost:65530/ws
協議版本RFC 6455
訊息格式JSON
字元編碼UTF-8
認證無需認證

連接生命週期

  1. 建立連接: 客戶端連接到 WebSocket 端點
  2. 訊息交換: 雙向即時訊息傳輸
  3. 錯誤處理: 自動重連機制
  4. 連接關閉: 優雅關閉或異常斷線

基本訊息結構

所有 WebSocket 訊息都遵循統一格式:

typescript
interface Message<T> {
    type: string;    // 訊息類型識別符
    payload: T;      // 訊息內容,可為任意類型
}

資料模型

核心介面

Message<T>

基礎訊息包裝器

欄位類型必填描述
typestring訊息類型識別符
payloadT訊息內容,根據類型而定

Health

玩家健康狀態

欄位類型必填描述
healthnumber血量 (0-20)
foodnumber飢餓值 (0-20)
saturationnumber飽食度

Experience

經驗值資訊

欄位類型必填描述
experience_barnumber經驗條進度 (0-1)
levelnumber等級
total_experiencenumber總經驗值

McfalloutInfo

伺服器特定資訊

欄位類型必填描述
flight_secondsnumber飛行秒數
total_flight_secondsstring總飛行時間 (字串格式)
emerald_balancenumber綠寶石餘額
coin_balancenumber金幣餘額
coin_pricenumber金幣價格
cur_servernumber當前伺服器編號

PlayerPosition

玩家位置資訊

欄位類型必填描述
xnumberX 座標
ynumberY 座標
znumberZ 座標
yawnumber偏航角
pitchnumber俯仰角

FooterData

頁尾狀態資料

欄位類型必填描述
Statusstring當前狀態
PosPosition位置資訊
Servernumber伺服器編號
Emeraldnumber綠寶石數量
Villagernumber村民數量
TPSnumber伺服器 TPS

Position

三維位置

欄位類型必填描述
xnumberX 座標
ynumberY 座標
znumberZ 座標

背包系統

Slot

背包槽位

欄位類型必填描述
idnumber物品 ID
countnumber物品數量
NBTSlotItemNBT 資料

SlotItem

物品 NBT 資料

欄位類型必填描述
displayDisplay顯示資訊
SkullOwnerSkullOwner頭顱擁有者
EnchantmentsEnchantment[]附魔列表
StoredEnchantmentsEnchantment[]儲存的附魔
Damagenumber耐久度損傷
RepairCostnumber修復成本
Unbreakableboolean是否無法破壞
HideFlagsnumber隱藏標誌
PublicBukkitValuesPublicBukkitValuesBukkit 自訂值
MapIDnumber地圖 ID
MapColornumber地圖顏色
Potionstring藥水類型
CustomModelDatanumber自訂模型資料
BlockEntityTagBlockEntityTag方塊實體標籤

Display

物品顯示資訊

欄位類型必填描述
Namestring顯示名稱
Lorestring[]物品說明

SkullOwner

頭顱擁有者資訊

欄位類型必填描述
Namestring玩家名稱
Idnumber[]UUID 陣列
PropertiesTextures貼圖屬性

Textures

貼圖資訊

欄位類型必填描述
texturesTextureData[]貼圖資料陣列

TextureData

貼圖資料

欄位類型必填描述
ValuestringBase64 編碼的貼圖資料
Signaturestring數位簽章

Enchantment

附魔資訊

欄位類型必填描述
idstring附魔 ID
lvlnumber附魔等級

PublicBukkitValues

Bukkit 自訂值

欄位類型必填描述
[key: string]string鍵值對映

BlockEntityTag

方塊實體標籤

欄位類型必填描述
ItemsSlotItem[]物品列表
idstring實體 ID

SlotWithIndex

帶索引的槽位

欄位類型必填描述
indexnumber槽位索引
itemSlot槽位物品

任務系統

Task

建造任務 (詳細定義請參考 REST API 文檔)

ProcessUpdate

後處理進度更新

欄位類型必填描述
current_map_uuidstring當前處理的地圖 UUID

日誌系統

ChatMessage

聊天訊息格式

欄位類型必填描述
textstring訊息文字
boldboolean是否粗體
italicboolean是否斜體
underlinedboolean是否底線
strikethroughboolean是否刪除線
obfuscatedboolean是否混亂
fontstring字型
colorstring顏色
insertionstring插入文字
clickEventClickEvent點擊事件
hoverEventHoverEvent懸停事件
translatestring翻譯鍵
withChatMessage[]翻譯參數
extraChatMessage[]額外內容

ClickEvent

點擊事件

欄位類型必填描述
actionClickAction | string動作類型
valuestring動作值

HoverEvent

懸停事件

欄位類型必填描述
actionstring動作類型
contentsany內容
valueChatMessage顯示值

ClickAction

點擊動作類型

描述
open_url開啟網址
run_command執行指令
suggest_command建議指令

SpecificLog

特定標籤日誌

欄位類型必填描述
Tagstring日誌標籤
Messagestring日誌訊息

訊息目錄

伺服器 → 客戶端訊息

分類訊息類型載荷類型描述
遊戲狀態healthHealth玩家健康狀態
experienceExperience經驗值資訊
mcfallout_infoMcfalloutInfo伺服器特定資訊
tpsnumber伺服器效能
player_positionPlayerPosition玩家位置
authnumber驗證剩餘時間
背包管理inventory_contentSlot[]背包內容
inventory_updateSlotWithIndex背包物品更新
inventory_opennumber背包開啟
player_carried_itemnumber玩家手持物品
狀態資訊footerFooterData頁尾狀態資料
connectionboolean連接狀態
任務管理update_taskTask[]任務列表更新
update_historyTask[]歷史任務更新
後處理process_updateProcessUpdate處理進度更新
process_successstring處理成功
state_updatestring狀態更新
name_update{}名稱更新
日誌系統logChatMessage一般日誌
debugChatMessage除錯日誌
specific_logSpecificLog特定標籤日誌
errorstring錯誤訊息
sharedany共享資料
系統狀態backend_versionstring後端版本
debugModeboolean除錯模式
exitConfirmModeboolean退出確認模式
cpu_usagestringCPU 使用率
mem_usagestring記憶體使用率
profile_dialogstring效能分析對話框

客戶端 → 伺服器訊息

分類訊息類型載荷類型描述
遊戲互動click_windowClickWindow點擊視窗
scroll_inventory1 | -1滾動背包
inputstring輸入指令
資料查詢get_inventory_content{}取得背包內容
get_player_carried_item{}取得手持物品
get_player_info{}取得玩家資訊
get_health{}取得健康狀態
get_experience{}取得經驗值
get_mcfallout_info{}取得伺服器資訊
get_tps{}取得伺服器 TPS
get_player_position{}取得玩家位置
get_auth{}取得驗證資訊
get_backend_version{}取得後端版本
get_debug_mode{}取得除錯模式
get_exist_confirm_mode{}取得退出確認模式
get_connection{}取得連接狀態
設定變更set_exist_confirm_modeboolean設定退出確認模式

詳細規格

遊戲狀態訊息

health

玩家健康狀態更新

觸發條件: 玩家血量、飢餓值或飽食度變化 更新頻率: 實時

experience

經驗值資訊更新

觸發條件: 玩家獲得或失去經驗值 更新頻率: 實時

mcfallout_info

McFallout 伺服器特定資訊

觸發條件: 伺服器資料更新 更新頻率: 定期

tps

伺服器效能指標

觸發條件: TPS 計算完成 更新頻率: 定期 (通常每秒)

player_position

玩家位置資訊

觸發條件: 玩家移動 更新頻率: 高頻率

auth

驗證剩餘時間

觸發條件: 驗證狀態檢查 更新頻率: 定期

背包管理訊息

inventory_content

完整背包內容

觸發條件: 背包內容重大變化或主動查詢 資料格式: 陣列,null 表示空槽位

inventory_update

單一槽位更新

觸發條件: 特定槽位物品變化 用途: 增量更新,避免全量傳輸

inventory_open

背包開啟事件

載荷: 容器 ID 或 0 表示玩家背包

player_carried_item

手持物品變化

載荷: 選中的快捷欄槽位 (0-8)

狀態資訊訊息

頁尾狀態資料

觸發條件: 狀態資料更新 用途: UI 頁尾顯示

connection

連接狀態變化

載荷: true=已連接, false=已斷開 用途: 連接狀態指示器

任務管理訊息

update_task

任務列表更新

觸發條件: 任務新增、修改或狀態變化 載荷: 完整任務陣列

update_history

歷史任務更新

觸發條件: 任務完成或歷史記錄變化 載荷: 歷史任務陣列

後處理訊息

process_update

後處理進度更新

觸發條件: 地圖處理進度變化 用途: 進度追蹤

process_success

處理完成通知

觸發條件: 後處理任務成功完成 載荷: 成功訊息文字

state_update

狀態更新通知

觸發條件: 處理狀態變化 載荷: 狀態描述文字

name_update

名稱更新通知

觸發條件: 地圖名稱更新完成 載荷: 空物件 用途: 通知客戶端重新獲取地圖列表

日誌系統訊息

log

一般系統日誌

載荷: ChatMessage 格式 用途: 系統運行日誌

debug

除錯日誌

載荷: ChatMessage 格式 用途: 開發除錯資訊

specific_log

特定標籤日誌

用途: 分類日誌記錄 標籤範例: "building", "scanning", "copying"

error

錯誤訊息

載荷: 錯誤描述字串 用途: 錯誤通知

shared

共享資料

載荷: 任意格式資料 用途: 跨組件資料共享

系統狀態訊息

backend_version

後端版本資訊

載荷: 版本字串 (如 "v1.0.0")

debugMode

除錯模式狀態

載荷: boolean 值

exitConfirmMode

退出確認模式狀態

載荷: boolean 值

cpu_usage

CPU 使用率

載荷: 百分比字串 (如 "15.5%")

mem_usage

記憶體使用率

載荷: 使用量字串 (如 "512MB/2GB")

profile_dialog

效能分析對話框

載荷: 分析結果或狀態訊息

客戶端請求訊息

ClickWindow

視窗點擊請求

欄位類型必填描述
indexnumber槽位索引
buttonnumber按鈕類型 (0=左鍵, 1=右鍵)
modenumber點擊模式 (0=正常, 1=Shift, 4=丟棄)

click_window

點擊視窗操作

用途: 模擬玩家點擊背包槽位 載荷: ClickWindow 物件

scroll_inventory

滾動背包

載荷: 1 (向上) 或 -1 (向下) 用途: 切換快捷欄選中項

input

輸入指令

載荷: 指令字串 用途: 發送聊天訊息或指令

資料查詢請求

所有 get_* 類型的請求都使用空物件 {} 作為載荷,用於主動查詢對應的狀態資訊。

set_exist_confirm_mode

設定退出確認模式

載荷: boolean 值 用途: 開啟或關閉退出確認對話框