模拟玩家¶
abi.h 里的分节说明
§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
槽位¶
sim_spawn¶
| C | |
|---|---|
分组说明
模拟(「假」)玩家(追加的槽位,受 struct_size 约束)。sim_spawn 用那个名字创建一个真正的 ServerPlayer,现有的每一个按玩家操作的接口(传送、生命值、物品栏、踢出……)都能通过普通的名字选择器作用在它身上。sim_do 复用 simulate* 这一族动作:动作的种类在 bridge 一侧增加,不需要新的表槽位(动作有 despawn stop jump attack interact use_item drop respawn move_to navigate_to look_at destroy_block destroy_look stop_destroy interact_block sneak fly chat,参数用 SNBT,见文档)。以 isSimulatedPlayer() 把关:真实玩家永远不会被操纵。动作不认识、参数格式不对、目标不在线或者不是模拟玩家时返回 false。
- 调用形式:
api->sim_spawn(name, dimension, x, y, z) - 参数:
- name :
PierStr - dimension :
int32_t - x :
double - y :
double - z :
double
- name :
- 返回值类型:
bool - 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(
§I NBT binary, KvDb (thread-safe), system & server info) - 表内序号:第 85 个槽位(从 0 数起)
- 各绑定里的调用方:
- Rust:
sim::spawn - Go:
SimSpawn、Raw.SimSpawn
- Rust:
sim_do¶
| C | |
|---|---|
分组说明
模拟(「假」)玩家(追加的槽位,受 struct_size 约束)。sim_spawn 用那个名字创建一个真正的 ServerPlayer,现有的每一个按玩家操作的接口(传送、生命值、物品栏、踢出……)都能通过普通的名字选择器作用在它身上。sim_do 复用 simulate* 这一族动作:动作的种类在 bridge 一侧增加,不需要新的表槽位(动作有 despawn stop jump attack interact use_item drop respawn move_to navigate_to look_at destroy_block destroy_look stop_destroy interact_block sneak fly chat,参数用 SNBT,见文档)。以 isSimulatedPlayer() 把关:真实玩家永远不会被操纵。动作不认识、参数格式不对、目标不在线或者不是模拟玩家时返回 false。
- 调用形式:
api->sim_do(sel, action, args_snbt) - 参数:
- sel :
PierPlayerSel - action :
PierStr - args_snbt :
PierStr
- sel :
- 返回值类型:
bool - 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(
§I NBT binary, KvDb (thread-safe), system & server info) - 表内序号:第 86 个槽位(从 0 数起)
- 各绑定里的调用方:
sim_is¶
| C | |
|---|---|
分组说明
模拟(「假」)玩家(追加的槽位,受 struct_size 约束)。sim_spawn 用那个名字创建一个真正的 ServerPlayer,现有的每一个按玩家操作的接口(传送、生命值、物品栏、踢出……)都能通过普通的名字选择器作用在它身上。sim_do 复用 simulate* 这一族动作:动作的种类在 bridge 一侧增加,不需要新的表槽位(动作有 despawn stop jump attack interact use_item drop respawn move_to navigate_to look_at destroy_block destroy_look stop_destroy interact_block sneak fly chat,参数用 SNBT,见文档)。以 isSimulatedPlayer() 把关:真实玩家永远不会被操纵。动作不认识、参数格式不对、目标不在线或者不是模拟玩家时返回 false。
选择器能解析到一个活着的模拟玩家时返回 true。模组可以借此在重启后重新确认一个机器人:SimulatedPlayer 会保存在世界里,内存里的句柄不会。
- 调用形式:
api->sim_is(sel) - 参数:
- sel :
PierPlayerSel
- sel :
- 返回值类型:
bool - 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(
§I NBT binary, KvDb (thread-safe), system & server info) - 表内序号:第 87 个槽位(从 0 数起)
- 各绑定里的调用方:
sim_list¶
| C | |
|---|---|
分组说明
模拟(「假」)玩家(追加的槽位,受 struct_size 约束)。sim_spawn 用那个名字创建一个真正的 ServerPlayer,现有的每一个按玩家操作的接口(传送、生命值、物品栏、踢出……)都能通过普通的名字选择器作用在它身上。sim_do 复用 simulate* 这一族动作:动作的种类在 bridge 一侧增加,不需要新的表槽位(动作有 despawn stop jump attack interact use_item drop respawn move_to navigate_to look_at destroy_block destroy_look stop_destroy interact_block sneak fly chat,参数用 SNBT,见文档)。以 isSimulatedPlayer() 把关:真实玩家永远不会被操纵。动作不认识、参数格式不对、目标不在线或者不是模拟玩家时返回 false。
列出所有活着的模拟玩家的名字(输出回调逐个收到名字)。用名字重建句柄,就能操纵一个比生成它的那次会话活得更久的机器人。
- 调用形式:
api->sim_list(ctx, name_sink) - 参数:
- ctx :
void* - name_sink :
PierStrSink
- ctx :
- 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(
§I NBT binary, KvDb (thread-safe), system & server info) - 表内序号:第 88 个槽位(从 0 数起)
- 各绑定里的调用方:
- Rust:
sim::try_list、sim::list - Go:
SimList、Raw.SimList
- Rust: