会话 API
提供会话配置的查询、会话的发起、退出、以及会话状态的管理
会话配置管理
这些方法用于获取和查询会话的配置信息
获取会话配置
根据会话 ID 获取会话的配置
fun getConversationConfig(id: String): ConversationConfig?参数:
id: 会话的唯一标识符
返回:
- 返回对应的会话配置
ConversationConfig,如果会话不存在则返回null
根据条件获取会话配置
根据自定义条件筛选会话配置
fun getConversationConfig(condition: (ConversationConfig) -> Boolean): ConversationConfig?参数:
condition: 用于筛选会话配置的 lambda 表达式
返回:
- 返回第一个满足条件的会话配置,如果没有找到则返回
null
获取所有会话 ID
获取所有已配置的会话的 ID 列表
fun getConversationIds(): Set<String>返回:
- 返回一个包含所有会话 ID 的
Set<String>
会话管理
这些方法用于直接对玩家的会话进行操作
发起会话
通过会话配置或 ID 为玩家启动一个新的会话
fun sendSession(player: Player, conversationConfig: ConversationConfig, origin: Location? = null, name: String? = null): Sessionfun sendSession(player: Player, id: String, origin: Location? = null, name: String? = null)参数:
player: 玩家实例conversationConfig/id: 会话的配置标识符origin: 会话的位置源,默认以玩家位置作为位置源name: 会话的名称,默认为配置中的名称
返回:
sendSession重载版本返回新创建的Session实例
更新会话
更新玩家当前正在进行的会话
fun updateSession(player: Player, id: String)参数:
player: 玩家实例id: 会话的配置标识符
功能:
- 如果玩家正在会话中,则用新的会话配置替换当前会话内容如果玩家不在会话中,则启动新会话
退出会话
使玩家退出当前会话并结束会话
fun exitSession(player: Player)参数:
player: 玩家实例
功能:
- 正常结束玩家的当前会话,并触发相应的事件
中断会话
强制中断玩家当前正在进行的会话
fun interruptSession(player: Player)参数:
player: 玩家实例
功能:
- 强制中断会话,不触发正常的结束事件,通常用于处理异常情况
清理会话数据
清理玩家的会话相关数据
fun clearSession(player: Player)参数:
player: 玩家实例
功能:
- 清除玩家的会话数据,包括会话位置源等,常用于会话结束或服务器重载时的清理
会话状态查询
这些方法用于获取玩家当前的会话状态
获取当前会话
获取玩家当前正在进行的会话实例
fun getSession(player: Player): Session?参数:
player: 玩家实例
返回:
- 返回玩家当前的
Session实例如果玩家没有进行会话,则返回null
判断是否正在会话中
判断玩家是否处于会话中
fun isInSession(player: Player): Boolean参数:
player: 玩家实例
返回:
- 如果玩家正在进行会话,则返回
true,否则返回false
会话位置管理
这些方法用于管理会话的位置信息
设置会话位置
设置玩家的会话位置源
fun setSessionLocation(player: Player, location: Location)参数:
player: 玩家实例location: 会话的位置源
功能:
- 记录玩家会话发起时的位置,用于后续判断玩家是否超出范围
获取会话位置
获取玩家的会话位置源
fun getSessionLocation(player: Player): Location?参数:
player: 玩家实例
返回:
- 返回玩家的会话位置源
Location,如果未设置则返回null
移除会话位置
移除玩家的会话位置源
fun removeSessionLocation(player: Player)参数:
player: 玩家实例
功能:
- 移除玩家的会话位置源,常用于会话结束时的清理
检查是否在会话范围内
判断玩家是否在指定位置的会话范围内
fun isInSessionRange(player: Player, location: Location): Boolean参数:
player: 玩家实例location: 要检查的位置
返回:
- 如果玩家的当前位置在会话位置源的范围内,则返回
true,否则返回false