Bridge - 服务器对象
Bridge 类是 EasyBot 的核心桥接实现,他表示一个在线的MC服务器,继承自 WebSocketBehavior,提供了与 Minecraft 服务器交互的完整 API 接口。
信息
Bridge 是一个抽象类,不能直接实例化,要获取到此对象,请通过 Sessions 获取
类概述
declare class Bridge extends WebSocketBehavior {
readonly Session: Session;
// ... 方法定义
}
属性
Session
- 类型:
Session(只读) - 描述: 获取当前的会话对象,包含连接状态和会话相关信息
方法详解
UpdateSyncSetting()
功能描述: 更新同步设置,用于刷新客户端与服务器之间的同步配置。
语法:
UpdateSyncSetting(): void
参数: 无
返回值: 无
使用示例:
bridge.UpdateSyncSetting();
注意事项:
- 通常在配置变更后调用
- 确保服务器连接正常时调用
SendAndWaitForCallbackAsync()
功能描述: 发送数据包并异步等待服务器回调响应,支持泛型返回类型。
语法:
SendAndWaitForCallbackAsync<T extends object>(packet: PacketWithCallBackId): Promise<T>
参数:
packet(PacketWithCallBackId): 包含回调ID的数据包对象
返回值: Promise<T> - 返回指定类型的回调结果
使用示例:
const packet = { callbackId: "123", data: "test" };
const result = await bridge.SendAndWaitForCallbackAsync<MyResponseType>(packet);
logger.info(result);
注意事项:
- 需要在异步上下文中使用
- 确保数据包包含有效的回调ID
- 超时处理需要在调用方实现
NotifyPlayerUnBind()
功能描述: 通知指定玩家解除账户绑定,服务器收到消息后会认为玩家解绑,并执行相对应操作。
语法:
NotifyPlayerUnBind(playerName: string, kickMessage: string): void
参数:
playerName(string): 要解绑的玩家名称kickMessage(string): 踢出玩家时显示的消息
返回值: 无
使用示例:
bridge.NotifyPlayerUnBind("Steve", "您的账户已解绑,请重新登录");
注意事项:
- 玩家名称必须精确匹配
- 踢出消息会显示给被踢出的玩家
NotifyPlayerBindSuccess()
功能描述: 通知玩家账户绑定成功,建立玩家与账户的关联关系。
语法:
NotifyPlayerBindSuccess(playerName: string, accountId: string, accountName: string): void
参数:
playerName(string): 玩家名称accountId(string): 绑定的账户IDaccountName(string): 绑定的账户名称
返回值: 无
使用示例:
bridge.NotifyPlayerBindSuccess("Steve", "12345", "steve_account");
注意事项:
- 确保账户ID的唯一性
- 绑定成功后玩家将获得相应权限
SendPlaceholderApiQueryAsync()
功能描述: 异步查询 PlaceholderAPI 变量值,支持动态变量解析。
语法:
SendPlaceholderApiQueryAsync(playerName: string, text: string): Promise<PlaceholderApiQueryResultPacket>
参数:
playerName(string): 目标玩家名称text(string): 包含占位符的查询文本
返回值: Promise<PlaceholderApiQueryResultPacket> - 查询结果数据包
使用示例:
const result = await bridge.SendPlaceholderApiQueryAsync("Steve", "%player_name% 的等级是 %player_level%");
logger.info(result.Text);
注意事项:
- 需要服务器安装 PlaceholderAPI 插件
- 查询文本中的占位符格式为
%placeholder_name% - 玩家必须在线才能获取准确信息
GetPlayerListAsync()
功能描述: 异步获取当前服务器在线玩家列表及其详细信息。
语法:
GetPlayerListAsync(): Promise<GetPlayerInfoResultPacket>
参数: 无
返回值: Promise<GetPlayerInfoResultPacket> - 包含玩家信息的结果数据包
使用示例:
const playerInfo = await bridge.GetPlayerListAsync();
logger.info(`在线玩家数量: ${playerInfo.players.length}`);
playerInfo.players.forEach(player => {
logger.info(`玩家: ${player.name}, UUID: ${player.uuid}`);
});
注意事项:
- 返回的是实时在线玩家信息
- 包含玩家基本信息如名称、UUID等
SendRunCommandAsync()
功能 描述: 异步执行服务器命令,支持以指定玩家身份运行命令。
语法:
SendRunCommandAsync(playerName: string, command: string, enablePapi: boolean): Promise<RunCommandResultPacket>
参数:
playerName(string): 执行命令的玩家名称command(string): 要执行的命令文本enablePapi(boolean): 是否启用 PlaceholderAPI 变量解析
返回值: Promise<RunCommandResultPacket> - 命令执行结果数据包
使用示例:
// 执行普通命令
const result = await bridge.SendRunCommandAsync("Steve", "gamemode creative", false);
// 执行带PAPI变量的命令
const result2 = await bridge.SendRunCommandAsync("Steve", "tell %player_name% 你好", true);
注意事项:
- 命令不需要包含前缀斜杠
/ - 启用PAPI时命令中的占位符会被自动解析
- 需要确保玩家有执行该命令的权限