Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
Dark Oak Sapling
此条目仍需完善。

你可以帮助我们扩充关于该主题的更多信息。

Information icon
此特性为教育版基岩版独有。

本页面是指MCPE/connect命令连接的WebSocket。 本教程展示的是客户端与服务端的数据包,不涉及WebSocket服务端的开发,但您可以参考底部的链接来进行服务端的开发。

数据包

Websocket服务器需要向mcpe发送数据包来进行交互。
这里有几个示例数据包。

subscribe

{
	"body": {
		"eventName": "PlayerMessage"
	},
	"header": {
		"requestId": "0ddbe098-00ff-ffff-abbbbbbbbbdd3344",
		"messagePurpose": "subscribe",
		"version": 1,
		"messageType": "commandRequest"
	}
}

这将对PlayerMessage事件进行监听,玩家说的话将被通过数据包发回。

unsubscribe

Unsubscribe包是用来在监听事件之后取消监听。

{
	"body": {
		"eventName": "PlayerMessage"
	},
	"header": {
		"requestId": "0ddbe098-00ff-ffff-abbbbbbbbbdd3344",
		"messagePurpose": "unsubscribe",
		"version": 1,
		"messageType": "commandRequest"
	}
}

这是一个对PlayerMessage事件进行unsubscribe的包。

CommandRequest

{
			"body": {
				"origin": {
					"type": "player"
				},
				"commandLine": "say Hello",
				"version": 1
			},
			"header": {
				"requestId": "0ffae098-00ff-ffff-abbbbbdf3f44",
				"messagePurpose": "commandRequest",
				"version": 1,
				"messageType": "commandRequest"
			}
		}

这将在客户端执行commandLine项(say Hello)的命令,执行结果会被发回。

  • commandRequest能执行一些游戏内无法执行的命令,例如: /agent create(创建agent)

返回数据包

event包

标准Event包示例

{
"body": {"eventName": 事件名称,"measurements": null,"properties": {/*信息*/}},
"header": {"meesagePurpose": "event","requestId": "xxx","version":1}}

PlayerMessage event示例

示例:

{"body":{"eventName":"PlayerMessage","measurements":null,"properties":{"AccountType":1,"ActiveSessionID":"(这里是一个uuid)","AppSessionID":"(一个uuid)","Biome":43,"Build":"1.8.0","BuildPlat":2,"Cheevos":false,"ClientId":"(32位16进制数据)","CurrentInput":2,"CurrentNumPlayers":1,"DeviceSessionId":"(一个uuid)","Dim":0,"GlobalMultiplayerCorrelationId":"(一个uuid)","Message":"233","MessageType":"chat","Mode":0,"MultiplayerCorrelationId":"(一个uuid)","NetworkType":0,"Plat":"iOS 12.1.3","PlayerGameMode":1,"Sender":"LNSSPsd","Seq":57,"ServerId":"raknet:11310020921574762398","Treatments":"","UserId":"十六位数字","WorldSessionId":"(一个uuid)","locale":"en_CN","vrMode":false}},"header":{"messagePurpose":"event","requestId":"00000000-0000-0000-0000-000000000000","version":1}}

这是一个playermessage返回包示例。

  • body.properties.Message是用户发出的消息
  • body.properties.MessageType是消息类型(say,me,chat等)
  • body.properties.Sender是发送者名称
  • body.properties.locale是设备使用的语言

CommandResponse (CommandRequest返回)

示例:

list命令

 {"body":{"currentPlayerCount":1,"maxPlayerCount":5,"players":"LNSSPsd","statusCode":0,"statusMessage":"There are 1/5 players online:\nLNSSPsd"},"header":{"messagePurpose":"commandResponse","requestId":"(一个uuid)","version":1}}
  • body.currentPlayerCount,body.maxPlayerCount,body.players 是/list命令特有的,在执行其他命令时不存在.

say命令

本示例使用了/say oh命令

{"body":{"message":"oh","statusCode":0},"header":{"messagePurpose":"commandResponse","requestId":"00000000-0001-0000-000000000000","version":1}}
  • body.message 是/say命令特有的。

注释

  • body.statusCode 是命令完成状态,完成是为0。
  • body.statusMessage是状态消息,相当于执行命令后聊天里的命令返回。

事件表

事件
AdditionalContentLoaded
AgentCommand
AgentCreated
ApiInit
AppPaused
AppResumed
AppSuspended
AwardAchievement
BlockBroken
BlockPlaced
BoardTextUpdated
BossKilled
CameraUsed
CauldronUsed
ChunkChanged
ChunkLoaded
ChunkUnloaded
ConfigurationChanged
ConnectionFailed
CraftingSessionCompleted
EndOfDay
EntitySpawned
FileTransmissionCancelled
FileTransmissionCompleted
FileTransmissionStarted
FirstTimeClientOpen
FocusGained
FocusLost
GameSessionComplete
GameSessionStart
HardwareInfo
HasNewContent
ItemAcquired
ItemCrafted
ItemDestroyed
ItemDropped
ItemEnchanted
ItemSmelted
ItemUsed
JoinCanceled
JukeboxUsed
LicenseCensus
MascotCreated
MenuShown
MobInteracted
MobKilled
MultiplayerConnectionStateChanged
MultiplayerRoundEnd
MultiplayerRoundStart
NpcPropertiesUpdated
OptionsUpdated
performanceMetrics
PackImportStage
PlayerBounced
PlayerDied
PlayerJoin
PlayerLeave
PlayerMessage
PlayerTeleported
PlayerTransform
PlayerTravelled
PortalBuilt
PortalUsed
PortfolioExported
PotionBrewed
PurchaseAttempt
PurchaseResolved
RegionalPopup
RespondedToAcceptContent
ScreenChanged
ScreenHeartbeat
SignInToEdu
SignInToXboxLive
SignOutOfXboxLive
SpecialMobBuilt
StartClient
StartWorld
TextToSpeechToggled
UgcDownloadCompleted
UgcDownloadStarted
UploadSkin
VehicleExited
WorldExported
WorldFilesListed
WorldGenerated
WorldLoaded
WorldUnloaded

你知道吗

  • WebSocket在执行/say命令时,国际版显示的发送者名称是外部
  • 教育版中,WebSocket发送的消息,发送者会被显示为教师

历史

携带版Alpha
0.16.0build 1加入了/connect命令,可以连接WebSocket了。
基岩版
1.2commandRequest包格式发生改变。

参考

  1. https://github.com/mcpews/MyAgent
  2. https://github.com/CAIMEOX/FastBuilder
Advertisement