新聞中心
此特性為教育版和基巖版獨(dú)有。

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站制作、成都網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
本頁(yè)面是指基巖版/connect命令連接的WebSocket(該服務(wù)器不是多人游戲所使用的服務(wù)器,以下簡(jiǎn)稱服務(wù)器)。 本教程展示的是客戶端與服務(wù)端的數(shù)據(jù)包,不涉及WebSocket服務(wù)端的開(kāi)發(fā),但你可以參考底部的鏈接來(lái)進(jìn)行服務(wù)端的開(kāi)發(fā)。
目錄
- 1 數(shù)據(jù)包
- 1.1 subscribe(訂閱請(qǐng)求)
- 1.2 unsubscribe(取消訂閱請(qǐng)求)
- 1.3 CommandRequest(命令請(qǐng)求)
- 2 返回?cái)?shù)據(jù)包
- 2.1 event包(訂閱事件響應(yīng))
- 2.1.1 標(biāo)準(zhǔn)Event包示例
- 2.1.2 PlayerMessage event示例
- 2.2 CommandResponse (CommandRequest返回)
- 2.2.1 list命令
- 2.2.2 say命令
- 2.2.3 tp命令
- 2.2.4 注釋
- 2.1 event包(訂閱事件響應(yīng))
- 3 事件表
- 4 歷史
- 5 參考
數(shù)據(jù)包[ ]
Websocket服務(wù)器需要向mcbe發(fā)送數(shù)據(jù)包來(lái)進(jìn)行交互。
Websocket服務(wù)器可以向游戲發(fā)送json格式的數(shù)據(jù)包,目前已知的有三種:
- 訂閱請(qǐng)求
- 取消訂閱請(qǐng)求
- 命令請(qǐng)求
這里有幾個(gè)示例數(shù)據(jù)包。
subscribe(訂閱請(qǐng)求)[ ]
訂閱事件就是服務(wù)器向游戲說(shuō)明自己要監(jiān)聽(tīng)哪些事件,當(dāng)游戲發(fā)生該事件后游戲就會(huì)向服務(wù)器發(fā)送該事件的相關(guān)信息,下面是一個(gè)訂閱事件數(shù)據(jù)報(bào)的例子。
注意:目前有一部分事件在新版本當(dāng)中是無(wú)效的
{
"body": {
"eventName": "PlayerMessage"
},
"header": {
"requestId": "00000000-0000-0000-0000-000000000000",
"messagePurpose": "subscribe",
"version": 1,
"messageType": "commandRequest"
}
}
這將對(duì)PlayerMessage事件進(jìn)行監(jiān)聽(tīng),玩家在聊天欄發(fā)的消息以及其他相關(guān)信息將被通過(guò)數(shù)據(jù)包發(fā)回??匆豢催@個(gè)包,你會(huì)發(fā)現(xiàn)requestId的value是一些0,這不是固定的,你完全可以對(duì)它進(jìn)行更改。
unsubscribe(取消訂閱請(qǐng)求)[ ]
Unsubscribe包是用來(lái)在監(jiān)聽(tīng)事件之后取消監(jiān)聽(tīng)。
{
"body": {
"eventName": "PlayerMessage"
},
"header": {
"requestId": "00000000-0000-0000-0000-000000000000",
"messagePurpose": "unsubscribe",
"version": 1,
"messageType": "commandRequest"
}
}
這是一個(gè)對(duì)PlayerMessage事件進(jìn)行unsubscribe的數(shù)據(jù)包,取消訂閱后玩家在聊天欄發(fā)送的消息將不再會(huì)被服務(wù)器監(jiān)聽(tīng)。
CommandRequest(命令請(qǐng)求)[ ]
該數(shù)據(jù)包會(huì)在游戲內(nèi)執(zhí)行指定的命令。
{
"body": {
"origin": {
"type": "player"
},
"commandLine": "say Hello",
"version": 1
},
"header": {
"requestId": "00000000-0000-0000-0000-000000000000",
"messagePurpose": "commandRequest",
"version": 1,
"messageType": "commandRequest"
}
}
這將在客戶端執(zhí)行commandLine項(xiàng)(say Hello)的命令,執(zhí)行結(jié)果會(huì)被發(fā)回。
- commandRequest能執(zhí)行一些游戲內(nèi)無(wú)法執(zhí)行的命令,例如:
/agent create(創(chuàng)建agent)
返回?cái)?shù)據(jù)包[ ]
返回的數(shù)據(jù)包指的是游戲向服務(wù)器發(fā)送的數(shù)據(jù)包,這些數(shù)據(jù)包有兩種類型:
- 對(duì)服務(wù)器訂閱的事件的響應(yīng)
- 對(duì)服務(wù)器發(fā)送的命令事件的反饋
event包(訂閱事件響應(yīng))[ ]
標(biāo)準(zhǔn)Event包示例[ ]
{
"body": {
"eventName": "",
"measurements":null,
"properties": {
}
},
"header": {
"messagePurpose": "event",
"requestId": "00000000-0000-0000-0000-000000000000",
"version":1
}
}
- 不同的事件在"body"和"properties"字段中填入的數(shù)據(jù)有些許不同(不同的事件會(huì)有不同的包含關(guān)鍵信息的字段),上方是一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)包的例子
PlayerMessage event示例[ ]
示例:
{
"body": {
"eventName": "PlayerMessage",
"measurements": {
"Count": 1,
"RecordCnt": 1,
"SeqMax": 1355,
"SeqMin": 1355
},
"properties": {
"AccountType": 1,
"ActiveSessionID": "a9f8087b-2e3d-495c-b3c3-aef515b7e19a",
"AppSessionID": "43408684-6cb0-4896-b89d-66a2a1e48a73",
"Biome": 1,
"Build": "1.13.1",
"BuildPlat": 7,
"Cheevos": false,
"ClientId": "0ceeb3a3-f96c-34b0-895f-b0d4ca7b129a",
"CurrentInput": 1,
"DeviceSessionId": "43408684-6cb0-4896-b89d-66a2a1e48a73",
"Dim": 0,
"GlobalMultiplayerCorrelationId": "0694aabd-ddde-466d-ae99-1f88faf1580a",
"Message": "a",
"MessageType": "chat",
"Mode": 1,
"MultiplayerCorrelationId": "ab4e37fe-2836-18a0-6d21-a85f781f8e70",
"NetworkType": 0,
"Plat": "Win 10.0.18362.1",
"PlayerGameMode": 1,
"SchemaCommitHash": "19b6ec0744c3c83a00ecbd840f48cb080c7bc64d",
"Sender": "hhhxiao",
"ServerId": "raknet:11376205654463177128",
"Treatments": "mc-perf-plat-12-20:mc-perf-plat-1-20:mc-perf-plat-2-20:mc-perf-plat-4-20:mc-perf-plat-7-20:mc-perf-plat-13-20:mc-perf-plat-11-1:mc-rp-frozenbuttonandpanel:mc-rp-playfab",
"UserId": "2535451099196973",
"WorldFeature": 0,
"WorldSessionId": "f7d8ca20-4be0-4d01-aa83-3c2c64dabc88",
"editionType": "win10",
"isTrial": 0,
"locale": "zh_CN",
"vrMode": false
}
},
"header": {
"messagePurpose": "event",
"requestId": "00000000-0000-0000-0000-000000000000",
"version": 1
}
}
這是一個(gè)PlayerMessage返回包示例。
- body.properties.Message是用戶發(fā)出的消息
- body.properties.MessageType是消息類型(say、me、chat等)
- body.properties.Sender是發(fā)送者名稱
- body.properties.locale是設(shè)備使用的語(yǔ)言
- body.properties.UserId 與用戶Xbox Live相關(guān),登錄同一Xbox Live時(shí)總為一個(gè)值,未登錄時(shí)為空或未定義。
CommandResponse (CommandRequest返回)[ ]
一般格式:
{
"body":{
"statusCode": 0,
"statusMessage": ""
},
"header": {
"messagePurpose":"commandResponse",
"requestId": "00000000-0000-0000-000000000000"
}
}
示例:
list命令[ ]
{
"body":{
"currentPlayerCount":1,
"maxPlayerCount":5,
"players":"LNSSPsd",
"statusCode":0,
"statusMessage":"There are 1/5 players online:\nLNSSPsd"
},
"header":{
"messagePurpose":"commandResponse",
"requestId":"00000000-0000-0000-000000000000",
"version":1
}
}
- body.currentPlayerCount、body.maxPlayerCount、body.players是
/list命令特有的,在執(zhí)行其他命令時(shí)不存在。
say命令[ ]
本示例使用了/say oh命令
{
"body":{
"message":"oh",
"statusCode":0
},
"header":{
"messagePurpose":"commandResponse",
"requestId":"00000000-0001-0000-000000000000",
"version":1
}
}
- body.message是
/say特有的,而/say命令沒(méi)有statusMessage項(xiàng)。
tp命令[ ]
本示例使用了/tp Steve ~ ~ ~命令
{
"body": {
"destination": {
"x": 73.37560272216797,
"y": 71.12252044677734,
"z": 36.96865081787109
},
"statusCode": 0,
"statusMessage": '已將 Steve 傳送至 73.38, 71.12, 36.97',
"victim": [ 'Steve' ]
},
"header": {
"messagePurpose": 'commandResponse',
"requestId": '00000000-0000-0000-0000-000000000000',
"version": 1
}
}
- body.destination、body.victim、header.version 是
/tp特有的。
注釋[ ]
- body.statusCode 是命令完成狀態(tài),成功時(shí)為0,失敗時(shí)小于0。
- body.statusMessage 是狀態(tài)消息,相當(dāng)于執(zhí)行命令后聊天里的命令返回,少數(shù)命令(如
/say命令)無(wú)返回顯示,故無(wú)此項(xiàng)。 - 返回請(qǐng)求的 header.requestId 與發(fā)送請(qǐng)求時(shí)附帶的 header.requestId 相同。
事件表[ ]
下面是目前已知的所有可訂閱事件,寫(xiě)了觸發(fā)條件的是確認(rèn)可用或者已知觸發(fā)條件的。
| 事件名稱 | 觸發(fā)條件 |
|---|---|
| AdditionalContentLoaded | 附加包加載 |
| AgentCommand | agent實(shí)體執(zhí)行命令(移動(dòng),攻擊等等) |
| AgentCreated | 創(chuàng)建agent |
| ApiInit | |
| AppPaused | 游戲暫停 |
| AppResumed | 游戲繼續(xù) |
| AppSuspended | 游戲中止 |
| AwardAchievement | 玩家獲得游戲成就 |
| BlockBroken | 玩家破壞方塊 |
| BlockPlaced | 玩家放置方塊 |
| BoardTextUpdated | |
| BossKilled | 殺死boss(命令無(wú)效) |
| CameraUsed | 使用相機(jī) |
| CauldronUsed | 煉藥鍋交互 |
| ChunkChanged | |
| ChunkLoaded | 區(qū)塊加載完成 |
| ChunkUnloaded | |
| ConfigurationChanged | |
| ConnectionFailed | |
| CraftingSessionCompleted | 關(guān)閉工作臺(tái)界面或者背包界面 |
| EndOfDay | 在一天自然結(jié)束(命令修改時(shí)間將不會(huì)觸發(fā)) |
| EntitySpawned | 通過(guò)命令生成實(shí)體 |
| FileTransmissionCancelled | |
| FileTransmissionCompleted | |
| FileTransmissionStarted | |
| FirstTimeClientOpen | 首次啟動(dòng)游戲 |
| FocusGained | |
| FocusLost | |
| GameSessionComplete | |
| GameSessionStart | 進(jìn)入存檔(世界加載的時(shí)候) |
| HardwareInfo | |
| HasNewContent | 商城上新 |
| ItemAcquired | 撿起掉落物,拿起合成的物品 |
| ItemCrafted | 物品從工作臺(tái)拿出 |
| ItemDestroyed | 物品損壞或耗盡 |
| ItemDropped | 玩家扔出物品 |
| ItemEnchanted | 物品被附魔 |
| ItemSmelted | 玩家取出熔爐內(nèi)物品 |
| ItemUsed | 使用物品(吃東西,放置方塊,扔雞蛋,使用弓箭等) |
| JoinCanceled | |
| JukeboxUsed | CD放入音符盒 |
| LicenseCensus | |
| MascotCreated | 智能體創(chuàng)建(失效) |
| MenuShown | |
| MobInteracted | 實(shí)體交互 |
| MobKilled | 玩家擊殺生物 |
| MultiplayerConnectionStateChanged | |
| MultiplayerRoundEnd | |
| MultiplayerRoundStart | |
| NpcPropertiesUpdated | |
| OptionsUpdated | |
| performanceMetrics | |
| PackImportStage | |
| PlayerBounced | 玩家被床和黏液塊彈起 |
| PlayerDied | 玩家死亡 |
| PlayerJoin | 玩家進(jìn)入游戲 |
| PlayerLeave | 玩家離開(kāi)游戲 |
| PlayerMessage | 玩家收到一條消息 |
| PlayerTeleported | 玩家被傳送 |
| PlayerTransform | 玩家移動(dòng) |
| PlayerTravelled | 玩家移動(dòng)時(shí)(和PlayerTransform幾乎同時(shí)) |
| PortalBuilt | 玩家創(chuàng)建傳送門(mén)(下界和末地) |
| PortalUsed | 玩家使用傳送門(mén) |
| PortfolioExported | |
| PotionBrewed | 從釀造臺(tái)拿出藥水的時(shí)候 |
| PurchaseAttempt | 支付嘗試 |
| PurchaseResolved | 支付確認(rèn) |
| RegionalPopup | |
| RespondedToAcceptContent | |
| ScreenChanged | 打開(kāi)任何UI,點(diǎn)擊任何設(shè)置頁(yè)面 |
| ScreenHeartbeat | |
| SignInToEdu | 登錄教育版 |
| SignInToXboxLive | 點(diǎn)擊登錄Xbox的按鈕 |
| SignOutOfXboxLive | 注銷(xiāo)Xbox |
| SpecialMobBuilt | |
| StartClient | 游戲啟動(dòng) |
| StartWorld | 主菜單進(jìn)入世界 |
| TextToSpeechToggled | 文字轉(zhuǎn)語(yǔ)音選中 |
| UgcDownloadCompleted | |
| UgcDownloadStarted | |
| UploadSkin | 玩家更新皮膚 |
| VehicleExited | 玩家離開(kāi)礦車(chē) |
| WorldExported | 世界導(dǎo)出 |
| WorldFilesListed | 世界列表列出 |
| WorldGenerated | 創(chuàng)建一個(gè)新世界 |
| WorldLoaded | 世界載入 |
| WorldUnloaded |
歷史[ ]
| 攜帶版Alpha | |||||
|---|---|---|---|---|---|
| 0.16.0 | build 1 | 加入了/connect命令,可以連接WebSocket了。 | |||
| 基巖版 | |||||
| 1.2 | commandRequest包格式發(fā)生改變。 | ||||
參考[ ]
- https://github.com/lZiMUl/Mcbbsmis.git
- https://github.com/mcpews/MyAgent.git
- https://github.com/CAIMEOX/FastBuilder.git
- https://github.com/liumingedwin/Minecraft-Mod-Configer.git
教程(作下劃線標(biāo)記的教程為中文獨(dú)有教程) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
新聞名稱:創(chuàng)新互聯(lián)MinecraftWiki教程:數(shù)據(jù)包[]
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/coigssh.html


咨詢
建站咨詢
