主题
地牢管理 API
QueDPAPI.dungeons() 提供地牢模板和实例管理功能。
模板查询
获取所有模板
kotlin
val templates: Collection<DungeonTemplate> = QueDPAPI.dungeons().allTemplates()获取特定模板
kotlin
val template: DungeonTemplate? = QueDPAPI.dungeons().template("dungeon_id")
if (template != null) {
println("地牢: ${template.name}")
}注册自定义模板
kotlin
QueDPAPI.dungeons().register(customTemplate)实例管理
获取所有实例
kotlin
val instances: Collection<DungeonInstance> = QueDPAPI.dungeons().instances()获取特定实例
kotlin
val instance: DungeonInstance? = QueDPAPI.dungeons().instance(instanceId)获取玩家所在副本
kotlin
val instance: DungeonInstance? = QueDPAPI.dungeons().instanceOf(player)
if (instance != null) {
player.sendMessage("你在副本: ${instance.template.name}")
}检查玩家是否在副本中
kotlin
if (QueDPAPI.dungeons().isPlayerInDungeon(player)) {
player.sendMessage("你正在副本中")
}副本创建与操作
创建并启动副本
kotlin
val template = QueDPAPI.dungeons().template("my_dungeon")
if (template != null) {
val instance = QueDPAPI.dungeons().createAndStart(template, listOf(player))
if (instance != null) {
player.sendMessage("副本创建成功!")
}
}完成副本
kotlin
QueDPAPI.dungeons().complete(instance)失败副本
kotlin
QueDPAPI.dungeons().fail(instance, DungeonInstance.FailReason.TIMEOUT)清理副本
kotlin
QueDPAPI.dungeons().cleanup(instance)统计与查询
获取地牢摘要
kotlin
// 所有地牢的摘要
val summaries: List<DungeonSummary> = QueDPAPI.dungeons().summaries()
// 特定地牢的摘要
val summary: DungeonSummary? = QueDPAPI.dungeons().summary("dungeon_id")
if (summary != null) {
println("活跃实例: ${summary.activeInstances}")
println("在线玩家: ${summary.onlinePlayers}")
}检查可用槽位
kotlin
if (QueDPAPI.dungeons().hasAvailableSlot("dungeon_id")) {
player.sendMessage("可以进入!")
} else {
player.sendMessage("副本已满")
}获取统计信息
kotlin
val stats: Map<String, Any> = QueDPAPI.dungeons().statistics()完整示例
kotlin
fun createDungeonForParty(leader: Player) {
// 获取队伍
val party = QueDPAPI.parties().get(leader)
if (party == null) {
leader.sendMessage("§c你不在队伍中!")
return
}
// 获取地牢模板
val template = QueDPAPI.dungeons().template("my_dungeon")
if (template == null) {
leader.sendMessage("§c地牢不存在!")
return
}
// 检查槽位
if (!QueDPAPI.dungeons().hasAvailableSlot("my_dungeon")) {
leader.sendMessage("§c地牢实例已满!")
return
}
// 创建并启动副本
val players = party.members
val instance = QueDPAPI.dungeons().createAndStart(template, players)
if (instance != null) {
leader.sendMessage("§a副本创建成功!")
} else {
leader.sendMessage("§c副本创建失败!")
}
}数据类
DungeonTemplate
kotlin
data class DungeonTemplate(
val id: String, // 地牢ID
val name: String, // 显示名称
val worldTemplate: String, // 世界模板
val minPlayers: Int, // 最小人数
val maxPlayers: Int, // 最大人数
val timeLimit: Long, // 时间限制(秒)
val maxInstances: Int // 最大实例数(-1=无限)
// ...
)DungeonInstance
kotlin
class DungeonInstance(
val instanceId: UUID, // 实例ID
val template: DungeonTemplate, // 模板
val world: World, // 世界
var status: DungeonStatus // 状态
)
enum class DungeonStatus {
PREPARING, // 准备中
ACTIVE, // 进行中
COMPLETED, // 已完成
FAILED // 已失败
}DungeonSummary
kotlin
data class DungeonSummary(
val template: DungeonTemplate,
val activeInstances: Int, // 活跃实例数
val onlinePlayers: Int, // 在线玩家数
val hasAvailableSlot: Boolean, // 是否有可用槽位
val availableSlots: Int? // 可用槽位数
)返回值说明
- 返回
null表示失败或不存在 - 集合类型返回空集合而不是
null Boolean返回值表示操作成功/失败
