Skip to content
iPlugin

会话 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): Session
fun 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