示例 Minecraft 版本:
Bedrock 1.20.80C -> S表示客户端发往服务器的数据包S -> C表示服务器发往客户端的数据包
自由视角/Freecam
先进入 C -> S player_input
- 通过
C -> Splayer_input记录开启功能前的玩家坐标(lastPosition) - 通过
C -> Splayer_input获取并记录玩家的移动输入(是否向某个方向移动,up/right/left/down/want_up/want_down)、俯仰角(pitch)和头部偏航角(head_yaw) - 修改
C -> Splayer_input- 设置
position为 lastPosition - 修改
input_data,禁用移动输入
- 设置
1 | jumping: false, |
- 通过移动输入和偏航角计算相机位置(camPosition)
可参考 MCBE 偏航角到坐标移动向量的计算 - 构造
S -> Ccamera_instruction
- 设置instruction_set
·runtime_id设为当前玩家的1
·ease_data置空
·position设为 camPosition
·rotation设为一个平面向量,x 为 pitch,z 为 head_yaw
-clear置空
-fade置空 - 发送
S -> Ccamera_instruction数据包给客户端
需要定时重置玩家位置到 lastPosition,防止玩家在客户端移动
功能关闭后需要构造并发送 S -> C camera_instruction 给客户端,以恢复相机
instruction_set置空clear设为truefade置空
时间修改/FakeTime
- 修改
S -> Cset_time
设置time为目标时间(0-24000) - 构造
S -> Cset_time- 设置
time为目标时间(0-24000) - 发送数据包给客户端
- 设置
药水效果/Effect
- 构造
S -> Cmob_effectruntime_entity_id设为当前玩家的 runtime_entity_idevent_id设为 addeffect_id设为药水效果的 idamplifier设为药水效果的等级particles是否启用粒子效果duration设为药水效果的持续时间/Ticktick设为一个空的无符号长整数[0, 0]
- 发送数据包给客户端
方块飞行/BlockFly
- 进入
C -> Splayer_input - 构造
S -> Cupdate_blockposition设为玩家脚底方块坐标block_runtime_id设为用作支持的方块的 runtime_idflags可填
1 | { |
-
layer填0- 发送数据包给客户端