创新互联MinecraftWiki教程:数据包[]

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

成都创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站制作、成都网站建设,塑造企业网络形象打造互联网企业效应。

本页面是指基岩版/connect命令连接的WebSocket(该服务器不是多人游戏所使用的服务器,以下简称服务器)。 本教程展示的是客户端与服务端的数据包,不涉及WebSocket服务端的开发,但你可以参考底部的链接来进行服务端的开发。

目录

  • 1 数据包
    • 1.1 subscribe(订阅请求)
    • 1.2 unsubscribe(取消订阅请求)
    • 1.3 CommandRequest(命令请求)
  • 2 返回数据包
    • 2.1 event包(订阅事件响应)
      • 2.1.1 标准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 注释
  • 3 事件表
  • 4 历史
  • 5 参考

数据包[ ]

Websocket服务器需要向mcbe发送数据包来进行交互。

Websocket服务器可以向游戏发送json格式的数据包,目前已知的有三种:

  • 订阅请求
  • 取消订阅请求
  • 命令请求

这里有几个示例数据包。

subscribe(订阅请求)[ ]

订阅事件就是服务器向游戏说明自己要监听哪些事件,当游戏发生该事件后游戏就会向服务器发送该事件的相关信息,下面是一个订阅事件数据报的例子。

注意:目前有一部分事件在新版本当中是无效的

{
	"body": {
		"eventName": "PlayerMessage"
	},
	"header": {
		"requestId": "00000000-0000-0000-0000-000000000000",
		"messagePurpose": "subscribe",
		"version": 1,
		"messageType": "commandRequest"
	}
}

这将对PlayerMessage事件进行监听,玩家在聊天栏发的消息以及其他相关信息将被通过数据包发回。看一看这个包,你会发现requestId的value是一些0,这不是固定的,你完全可以对它进行更改。

unsubscribe(取消订阅请求)[ ]

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

{
	"body": {
		"eventName": "PlayerMessage"
	},
	"header": {
		"requestId": "00000000-0000-0000-0000-000000000000",
		"messagePurpose": "unsubscribe",
		"version": 1,
		"messageType": "commandRequest"
	}
}

这是一个对PlayerMessage事件进行unsubscribe的数据包,取消订阅后玩家在聊天栏发送的消息将不再会被服务器监听。

CommandRequest(命令请求)[ ]

该数据包会在游戏内执行指定的命令。

{
	"body": {
		"origin": {
			"type": "player"
		},
		"commandLine": "say Hello",
		"version": 1
	},
	"header": {
		"requestId": "00000000-0000-0000-0000-000000000000",
		"messagePurpose": "commandRequest",
		"version": 1,
		"messageType": "commandRequest"
	}
}

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

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

返回数据包[ ]

返回的数据包指的是游戏向服务器发送的数据包,这些数据包有两种类型:

  • 对服务器订阅的事件的响应
  • 对服务器发送的命令事件的反馈

event包(订阅事件响应)[ ]

标准Event包示例[ ]

{
	"body": {
        "eventName": "",
        "measurements":null,
        "properties": {
        }
    },
	"header": {
        "messagePurpose": "event",
        "requestId": "00000000-0000-0000-0000-000000000000",
        "version":1
    }
}
  • 不同的事件在"body"和"properties"字段中填入的数据有些许不同(不同的事件会有不同的包含关键信息的字段),上方是一个标准数据包的例子

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
  }
}

这是一个PlayerMessage返回包示例。

  • body.properties.Message是用户发出的消息
  • body.properties.MessageType是消息类型(say、me、chat等)
  • body.properties.Sender是发送者名称
  • body.properties.locale是设备使用的语言
  • body.properties.UserId 与用户Xbox Live相关,登录同一Xbox Live时总为一个值,未登录时为空或未定义。

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命令特有的,在执行其他命令时不存在。

say命令[ ]

本示例使用了/say oh命令

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

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 是命令完成状态,成功时为0,失败时小于0。
  • body.statusMessage 是状态消息,相当于执行命令后聊天里的命令返回,少数命令(如/say命令)无返回显示,故无此项。
  • 返回请求的 header.requestId 与发送请求时附带的 header.requestId 相同。

事件表[ ]

下面是目前已知的所有可订阅事件,写了触发条件的是确认可用或者已知触发条件的。

事件名称 触发条件
AdditionalContentLoaded 附加包加载
AgentCommand agent实体执行命令(移动,攻击等等)
AgentCreated 创建agent
ApiInit
AppPaused 游戏暂停
AppResumed 游戏继续
AppSuspended 游戏中止
AwardAchievement 玩家获得游戏成就
BlockBroken 玩家破坏方块
BlockPlaced 玩家放置方块
BoardTextUpdated
BossKilled 杀死boss(命令无效)
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 CD放入音符盒
LicenseCensus
MascotCreated 智能体创建(失效)
MenuShown
MobInteracted 实体交互
MobKilled 玩家击杀生物
MultiplayerConnectionStateChanged
MultiplayerRoundEnd
MultiplayerRoundStart
NpcPropertiesUpdated
OptionsUpdated
performanceMetrics
PackImportStage
PlayerBounced 玩家被床和黏液块弹起
PlayerDied 玩家死亡
PlayerJoin 玩家进入游戏
PlayerLeave 玩家离开游戏
PlayerMessage 玩家收到一条消息
PlayerTeleported 玩家被传送
PlayerTransform 玩家移动
PlayerTravelled 玩家移动时(和PlayerTransform几乎同时)
PortalBuilt 玩家创建传送门(下界和末地)
PortalUsed 玩家使用传送门
PortfolioExported
PotionBrewed 从酿造台拿出药水的时候
PurchaseAttempt 支付尝试
PurchaseResolved 支付确认
RegionalPopup
RespondedToAcceptContent
ScreenChanged 打开任何UI,点击任何设置页面
ScreenHeartbeat
SignInToEdu 登录教育版
SignInToXboxLive 点击登录Xbox的按钮
SignOutOfXboxLive 注销Xbox
SpecialMobBuilt
StartClient 游戏启动
StartWorld 主菜单进入世界
TextToSpeechToggled 文字转语音选中
UgcDownloadCompleted
UgcDownloadStarted
UploadSkin 玩家更新皮肤
VehicleExited 玩家离开矿车
WorldExported 世界导出
WorldFilesListed 世界列表列出
WorldGenerated 创建一个新世界
WorldLoaded 世界载入
WorldUnloaded

历史[ ]

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

参考[ ]

  • 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

教程(作下划线标记的教程为中文独有教程)

新手教程
  • 菜单屏幕
  • 游戏术语
  • 下载、安装与购买
新手生存
  • 新手指南
  • 第一天
  • 第二天
  • 第三天
  • 提示与技巧
  • 饥饿管理
  • 不该做的事
  • 生存注意事项
庇护所
  • 庇护所
    • 沙漠
  • 最佳居住生物群系
  • 最佳建筑材料
  • 建筑与结构
  • 房屋类型
  • 导航
综合
  • 无聊的时候做什么
  • 村庄生存
  • 跑酷
  • 空置域
  • 伪和平
  • 节省时间的小窍门
  • 在水下利用TNT破坏方块
  • 成就指南
  • 进度指南
  • 拓殖
  • 战斗
  • 完成冒险
  • 创建一个村庄
  • 双持
  • 沙漠生存
  • 雷暴生存
  • 下界生存
  • 从零开始下界生存
  • 末地生存
  • 探索洞穴
  • 家具
  • 在和平难度中收集资源
  • 利用碰撞箱
  • 测量单位
  • 使用地图
  • 测量距离和角度
  • 采矿技术
    • 钻石
    • 化石
    • 远古残骸
  • 下界快速旅行
  • 下界传送门
  • 支柱跳跃
  • PvP
    • Java版1.9前、基岩版
    • 基地
  • 穿越和破坏基岩
  • 村庄机制
  • 考古
  • Minecraft和教育
  • 不可破坏的末地水晶
  • 使用更少的末地水晶重生末影龙
  • 透视镜
  • 挂机池
  • 光速船[仅基岩版]
  • 无材料消耗转换药水类型[仅基岩版]
  • 汇报漏洞
  • 在超平坦地图中管理史莱姆
建筑
  • 给工程添加美感
  • 空气闸
  • 建筑术语
  • 建造游轮
  • 建造大都市
  • 建造过山车
  • 建造安全的家园
  • 建造水建筑
  • 建造几何体
  • 防御
  • 电梯
  • 带釉陶瓦的图案
  • 建造更好的地板
  • 像素艺术
  • 牧场
  • 屋顶类型
    • 弧形屋顶
    • 屋顶建造指南
    • 装饰屋顶
  • 暗门
  • 建造居住地
  • 水下之家
  • 墙壁和桥墩
  • 水闸
  • 调色板
存储方案
  • 整理物品
  • 潜影盒储存
  • 矿车储存
  • 物品运输
附魔与烧炼
  • 附魔台机制
  • 铁砧机制
  • 自动化烧炼
  • 燃料选择
破坏方块
  • 爆炸室
  • 凋灵笼
挑战
  • 获得潮涌核心
  • 冒险模式生存
  • 挑战自定义地图
  • 制作自定义地图
  • 治愈僵尸村民
  • 征服神殿和神庙
  • 触发及战胜袭击
  • 征服掠夺者前哨站
  • 征服堡垒遗迹
  • 征服林地府邸
  • 征服海底神殿
  • 打败末影龙
  • 征服末地城
  • 打败凋灵
  • 极限模式
  • 超极限模式
  • 在一个地区中长期生存下去
  • 在无限沙漠中生存
  • 超平坦世界生存[仅Java版]
  • 岛屿生存
  • 空岛生存
  • 速通
  • 猎人游戏
  • 放牧心得
  • 探索深暗之域和远古城市
  • 愚人节版本生存
    • 22w13oneBlockAtATime
农场
方块和物品
  • 骨粉
  • 仙人掌
  • 圆石或石头
  • 可可豆
  • 农作物(甜菜、胡萝卜、马铃薯和小麦)
  • 紫颂果
  • 鸡蛋
  • 蛙明灯
  • 蜂蜜
  • 花朵
  • 海带
    • 零刻作物催熟技术
  • 蘑菇
  • 唱片
  • 下界疣
  • 黑曜石
  • 西瓜、南瓜
  • 鳞甲
  • 羊毛
  • 海泡菜
  • 甘蔗
  • 树木
  • 藤蔓
  • 药水
  • 经验
  • 基岩
  • 方块和物品复制
  • 铁轨复制机[仅Java版]
  • TNT复制[仅Java版]
生物
  • 刷怪塔
  • 怪物磨床
  • 刷怪笼陷阱
  • 动物(猪、牛、羊)
  • 烈焰人
  • 洞穴蜘蛛
  • 闪电苦力怕
  • 溺尸/僵尸
  • 末影人
  • 守卫者
  • 铁傀儡
  • 岩浆怪
  • 以物易物
  • 袭击
    • 无限触发袭击
  • 潜影贝
  • 史莱姆
  • 鱿鱼
  • 海龟
  • 村民
  • 女巫
  • 流浪商人
  • 凋灵骷髅
  • 僵尸猪灵
红石
基础红石
  • 基本逻辑门
  • 高频电路
  • 计时器
  • 通用物品分类器
  • 抽奖箱
  • 飞行器
  • 漏斗
  • 机械
  • 侦测器稳定器
  • 密码锁
  • 随机发生器
  • 红石机械
  • 红石音乐
  • 红石技巧
  • 鲁布·戈德堡机械
  • 村民交易所
探测器
  • 方块更新感应器
  • 比较器更新感应器
  • 阳光探测器
  • 昼夜探测器
矿车
  • 火车站
  • 矿车
    • 储存
    • 存储系统
陷阱
  • 雪傀儡防御炮
  • TNT大炮
  • 活板门利用
  • 陷阱设计
  • 陷阱
活塞
  • 活塞使用
  • 活塞电路
  • 半连接性
  • 零刻活塞
  • 无延迟中继器
  • 无头活塞
高级红石
  • 高级红石电路
  • 算术逻辑
  • 计算器
  • 时钟
  • 摩斯密码
  • 打印机
  • 红石计算机
  • 红石电报机
服务器
使用服务器
  • 在服务器上游玩
  • 服务器监狱
  • 防止恶意破坏
  • 服务器商店
  • 起床战争
  • 空岛战争
架设服务器
  • 架设服务器
    • 架设基岩版服务器
  • 服务器架设脚本
  • 服务器启动脚本
  • FreeBSD启动脚本
  • OpenBSD启动脚本
  • Ubuntu启动脚本
  • WebSocket服务器[仅基岩版]
  • 架设Mod服务器[仅Java版]
  • 架设Hamachi服务器
  • 架设Spigot服务器
  • 虚拟硬盘服务器
  • 使用ngrok搭建服务器
  • 架设ZeroTier服务器
技术性
  • 结构方块
  • 命令方块
  • 命令统计值
  • 使用命令操控实体
  • 提高帧率
  • Minecraft帮助FAQ(IRC频道)
  • NBT与JSON
  • Minecraft URL Scheme[仅基岩版]
  • 更新Java
  • 运行数据生成器
地图
  • 自定义地图
  • 下载地图
  • 生成下落的方块[仅Java版]
  • 使用MCEdit在1.13中刷新旧版海洋[仅Java版]
  • 强制打开存档[仅Java版]
资源包
  • 制作资源包
  • 加载资源包
  • 声音目录
数据包
  • 制作数据包
    • 实例:蜜蜂助手
    • 消除视线
  • 安装数据包
  • 自定义世界生成
附加包
  • 基岩版开发指南
  • 制作资源附加包
    • 高级
    • 基岩版实体文档
    • 修改实体模型
  • 制作行为包
  • 自定义实体
制作游戏视频
  • 视频
游戏安装
  • 快照版本安装
  • 获取崩溃报告
  • 在U盘中使用旧版启动器运行及保存Minecraft
  • 恢复损坏的地图数据
  • 在Google Drive上运行Minecraft
  • 将游戏数据保存到Dropbox云端(仅限地图数据)
  • 将游戏数据保存到Dropbox云端
  • 在Chrome OS上游玩Minecraft
仅Java版
  • 修复Apache Log4j2漏洞
  • 自定义命令触发
  • 原始JSON文本
  • NBT命令标签
  • 编写启动器
    • 版本清单文件下载
    • 版本json文件下载
过时教程
  • 建造微型庇护所
  • 自定义纹理包
  • 基于门的铁傀儡陷阱
  • 到达边境之地
  • 获取崩溃报告(旧版)
  • 人工湖
  • 矿车加速器
  • 中继器重启系统
  • 无数据包生存
  • 升级LWJGL
  • 更新Minecraft
  • 村庄链
  • 水梯
  • 水道
  • 游戏直播
教程
  • 新手手册
  • 高难度通关配装总结
  • 成就指南
  • 高塔指南

网站栏目:创新互联MinecraftWiki教程:数据包[]
网站路径:http://www.shufengxianlan.com/qtweb/news10/29710.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联