主题
配置说明
本文档详细说明 QueDP 的各项配置选项,所有内容基于实际代码和示例配置。
主配置文件
plugins/QueDP/config.yml 是插件的主配置文件。
基础设置
yaml
# 语言设置
# 可选值: zh_CN, en_US
language: zh_CN
# 调试模式 - 启用后会输出详细日志
debug: false数据库配置
yaml
database:
# 数据库类型
# YAML - 使用 YAML 文件存储(默认)
# SQLITE - 使用 SQLite 数据库
# MYSQL - 使用 MySQL 数据库
type: YAML
# MySQL 配置(仅当 type=MYSQL 时生效)
host: localhost
port: 3306
database: quedp
user: root
password: password地牢设置
yaml
dungeon:
# 实例清理超时时间(秒)- 兜底安全机制
# 用于清理异常情况:玩家全掉线、实例卡死、创建失败等
# 正常完成的地牢会立即清理,无需等待此时间
instance-timeout: 7200重要说明:
- 每个地牢的实例数量限制在各自的
config.yml中配置(实例限制.最大数量) - 每个地牢的时间限制在各自的
config.yml中配置(时间.限制) - 主配置只保留全局的实例清理超时设置
队伍设置
yaml
party:
# 最大队伍人数
max-size: 4
# 邀请超时时间(秒)
invite-timeout: 60性能设置
yaml
performance:
# 异步世界复制(推荐开启)
# 开启后创建副本时不会卡服
async-world-copy: true
# 单个副本最大实体数量
# 超过此数量将不再生成新实体
entity-limit: 100
# 自动保存间隔(秒)
# 0 = 禁用自动保存
auto-save-interval: 600排行榜设置
yaml
leaderboard:
# 是否启用排行榜
enabled: true
# 每页显示条目数
entries-per-page: 10
# 数据保留天数(0=永久)
retention-days: 30
# 排行榜更新间隔(秒)
update-interval: 60战斗统计设置
yaml
statistics:
# 是否启用战斗统计
enabled: true
# 是否在地牢结束时自动显示统计
auto-show: true
# 是否追踪伤害
track-damage: true
# 是否追踪承伤
track-damage-taken: true
# 是否追踪治疗
track-healing: false
# 统计展示时长(秒)
display-duration: 30体力系统设置(可选)
体力系统配置需要手动添加到 config.yml 中:
yaml
# 体力系统(可选配置)
stamina:
# 是否启用体力系统
enabled: true
# 最大体力值
max-stamina: 100
# 体力回复速率(每次回复多少点)
recovery-rate: 1
# 体力回复间隔(秒)
recovery-interval: 60说明:
- 如果不配置此部分,体力系统默认禁用
- 启用后,玩家进入地牢会消耗体力(在各地牢的
config.yml中配置体力消耗值) - 体力会按照设定的间隔自动回复
- 体力不足时无法进入需要消耗体力的地牢
地牢配置
每个地牢都有独立的配置文件夹:plugins/QueDP/dungeons/<地牢ID>/
基础配置 (config.yml)
支持中文键和英文键两种格式。
yaml
# 地牢基本信息
地牢:
ID: "example"
名称: "&6&l示例地牢"
图标: "DIAMOND_SWORD"
难度: "普通"
描述:
- "&7这是一个示例地牢"
- "&7推荐人数: 1-4人"
- "&7预计用时: 15分钟"
# 世界设置
世界:
# 模板世界文件夹名称或 schematic 文件名
# 世界文件夹:位于 plugins/QueDP/maps/ 目录
# Schematic:位于 plugins/QueDP/maps/schematics/ 目录
模板: "dungeon_example_template"
# 出生点坐标 "x,y,z,yaw,pitch"
出生点: "0,64,0,0,0"
# 进入要求
要求:
# 等级限制
最小等级: 10
最大等级: 100
# 人数限制
最小人数: 1
最大人数: 4
# 冷却时间(秒)
冷却时间: 3600
# 体力消耗(0=不消耗)
# 玩家进入地牢时消耗的体力值
# 需要先在主配置中启用体力系统
体力消耗: 0
# 所需物品(消耗)
# 格式: "材料:数量" 或 "材料"
需要物品: []
# 所需权限
需要权限: []
# 时间限制
时间:
# 时间限制(秒)
限制: 1800 # 30分钟
# 超时后的处理方式
# KICK - 踢出地牢
# FAIL - 标记为失败
超时处理: "FAIL"
# 实例数量限制
实例限制:
# 该地牢最多同时运行的实例数量
# -1 = 无限制
# 1 = 同一时间只能有一个实例在运行(单例地牢)
# 3 = 同一时间最多3个实例
最大数量: -1英文格式(游戏内编辑器生成的格式):
yaml
dungeon:
name: "&6&lExample Dungeon"
icon: "DIAMOND_SWORD"
difficulty: "NORMAL"
description: [...]
world:
template: "dungeon_example"
spawn: "0,64,0,0,0"
requirements:
min_level: 10
max_level: 100
min_players: 1
max_players: 4
cooldown: 3600
stamina_cost: 0 # 体力消耗
required_items: []
required_permissions: []
time:
limit: 1800
timeout_action: "FAIL"
instance:
max_instances: -1脚本配置 (scripts.yml)
地牢生命周期脚本:
yaml
# 地牢初始化脚本(世界复制完成后执行)
初始化:
- 发送消息 @所有玩家 "&e地牢正在准备中..."
- 等待 3秒
- 播放音效 @所有玩家 "BLOCK_PORTAL_TRAVEL"
# 地牢开始脚本
开始:
# 开始条件(可选)
条件:
- 玩家数量 >= 1
# 条件满足时执行的脚本
脚本:
- 发送消息 @所有玩家 "&a&l===== 地牢开始 ====="
- 发送标题 @所有玩家 "&6&l开始冒险" "&7击败所有怪物"
- 播放音效 @所有玩家 "ENTITY_PLAYER_LEVELUP" 1.0 1.5
- 生成怪物组 "第一波"
# 地牢完成脚本
完成:
- 发送消息 @所有玩家 "&a&l===== 恭喜通关! ====="
- 发送标题 @所有玩家 "&a&l挑战成功" "&7获得丰厚奖励"
- 播放音效 @所有玩家 "UI_TOAST_CHALLENGE_COMPLETE"
- 播放特效 "TOTEM" 在 "0,65,0" 数量=50 速度=0.2
- 发放奖励 "基础奖励"
- 等待 5秒
- 传送所有玩家 到 主世界spawn
# 地牢失败脚本
失败:
- 发送消息 @所有玩家 "&c&l===== 挑战失败 ====="
- 发送标题 @所有玩家 "&c&l任务失败" "&7下次再来吧"
- 播放音效 @所有玩家 "ENTITY_ENDER_DRAGON_GROWL"
- 等待 3秒
- 传送所有玩家 到 主世界spawn
# 玩家死亡脚本(单个玩家死亡时触发)
玩家死亡:
- 发送消息 @触发者 "&c你已死亡!"
- 等待 5秒
- 传送 @触发者 到 "0,64,0"
- 治疗 @触发者
- 发送消息 @触发者 "&a你已复活!"
# 全队死亡脚本
全队死亡:
- 发送消息 @所有玩家 "&c&l全队覆灭!"
- 失败地牢 "全队死亡"英文格式:
yaml
init: [...]
start:
condition: [...]
script: [...]
complete: [...]
fail: [...]
player_death: [...]
all_death: [...]怪物配置 (monsters.yml)
需要 MythicMobs 插件支持。
yaml
怪物组:
第一波:
# 是否在地牢开始时自动启动
自动启动: false
# 怪物列表
怪物:
- ID: "SkeletonKing" # MythicMobs 怪物 ID
位置: "10,64,10" # 生成位置 x,y,z
数量: 3 # 生成数量
等级: 5 # 怪物等级
- ID: "SkeletonKing"
位置: "-10,64,-10"
数量: 2
等级: 5
# 完成条件(可选)
条件:
- 存活怪物 <= 0
# 怪物组启动时执行的脚本
开始时:
- 发送消息 @所有玩家 "&c&l===== 第一波来袭! ====="
- 发送标题 @所有玩家 "&c&l第一波" "&7击败所有骷髅"
- 播放音效 @所有玩家 "ENTITY_WITHER_SPAWN"
- 播放特效 "EXPLOSION_LARGE" 在 "10,64,10" 数量=5
# 怪物组完成时执行的脚本(条件达成时)
完成时:
- 发送消息 @所有玩家 "&a&l第一波已清理!"
- 播放音效 @所有玩家 "ENTITY_PLAYER_LEVELUP"
- 删除障碍物 "能量屏障"
- 等待 3秒
- 生成怪物组 "第二波"
Boss战:
自动启动: false
怪物:
- ID: "AncientGuardian"
位置: "0,64,0"
数量: 1
等级: 10
条件:
- 存活怪物 <= 0
开始时:
- 发送消息 @所有玩家 "&c&l============================================"
- 发送消息 @所有玩家 "&c&l BOSS 出现!"
- 发送标题 @所有玩家 "&c&lBOSS战" "&7击败远古守护者"
- 播放音效 @所有玩家 "ENTITY_ENDER_DRAGON_GROWL"
- 闪电 "0,65,0" false
完成时:
- 发送消息 @所有玩家 "&a&l BOSS 已击败!"
- 发送标题 @所有玩家 "&6&l胜利" "&a你们做到了!"
- 播放音效 @所有玩家 "UI_TOAST_CHALLENGE_COMPLETE"
- 播放特效 "TOTEM" 在 "0,65,0" 数量=100 速度=0.5
- 完成地牢英文格式:
yaml
groups:
wave1:
auto_start: false
monsters: [...]
condition: [...]
on_start: [...]
on_end: [...]障碍物配置 (obstacles.yml)
障碍物是可以动态创建和删除的方块组,支持触碰触发。
yaml
障碍物:
能量屏障:
# 方块列表,格式: "x,y,z,方块类型"
方块:
- "10,65,10,BARRIER"
- "10,65,11,BARRIER"
- "10,65,12,BARRIER"
- "10,66,10,BARRIER"
- "10,66,11,BARRIER"
- "10,66,12,BARRIER"
# 创建时执行的脚本
创建时:
- 播放特效 "END_ROD" 在 "10,65,11" 数量=30 速度=0.1
- 播放音效 @所有玩家 "BLOCK_BEACON_ACTIVATE"
- 发送消息 @所有玩家 "&c能量屏障已激活!"
# 删除时执行的脚本
删除时:
- 播放特效 "EXPLOSION_LARGE" 在 "10,65,11" 数量=10
- 播放音效 @所有玩家 "ENTITY_GENERIC_EXPLODE"
- 发送消息 @所有玩家 "&a能量屏障已解除!"
- 发送标题 @所有玩家 "&a通路打开" "&7继续前进"
# 是否在副本开始时自动创建
# true - 副本开始时自动放置方块
# false - 需要通过脚本手动创建
自动创建: true
# 触发配置
# 触发模式:无触发、进入触发、离开触发、持续触发
触发模式: "进入触发"
# 触发时执行的脚本(@触发者 表示触碰的玩家)
触发脚本:
- 播放音效 @触发者 "ENTITY_GENERIC_HURT"
- 造成伤害 @触发者 5
- 发送消息 @触发者 "&c你触碰到了能量屏障!受到了伤害!"
# 触发冷却时间(秒)避免频繁触发
触发冷却: 2
# 是否只能触发一次
仅触发一次: false
铁门:
方块:
- "20,64,20,IRON_BARS"
- "20,65,20,IRON_BARS"
- "20,66,20,IRON_BARS"
创建时:
- 播放音效 @所有玩家 "BLOCK_IRON_DOOR_CLOSE"
- 播放特效 "SMOKE_NORMAL" 在 "20,65,20" 数量=20
删除时:
- 播放音效 @所有玩家 "BLOCK_IRON_DOOR_OPEN"
- 发送消息 @所有玩家 "&a铁门已打开"
# 不自动创建,由脚本控制
自动创建: false英文格式:
yaml
obstacles:
barrier1:
blocks: [...]
on_create: [...]
on_delete: [...]
auto_create: true
trigger_mode: "enter"
trigger_script: [...]
trigger_cooldown: 2
trigger_once: false任务配置 (tasks.yml)
定时或循环执行的任务。
yaml
任务:
# 任务类型1: 定时任务(在特定时间点执行)
倒计时提醒:
类型: "定时"
# 时间点配置(秒): 脚本
时间:
300: # 5分钟时
- 发送消息 @所有玩家 "&e[提醒] 还剩 25 分钟"
- 播放音效 @所有玩家 "BLOCK_NOTE_BLOCK_PLING"
1200: # 20分钟时
- 发送消息 @所有玩家 "&c[警告] 还剩 10 分钟!"
- 发送标题 @所有玩家 "&c10分钟" "&7加快速度"
- 播放音效 @所有玩家 "BLOCK_NOTE_BLOCK_BELL"
# 任务类型2: 循环任务(定期重复执行)
鼓励提示:
类型: "循环"
# 间隔时间(秒)
间隔: 180 # 每3分钟
# 循环执行的脚本
脚本:
- 发送消息 @所有玩家 "&a[提示] 保持团队协作,互相支援!"
- 播放音效 @所有玩家 "ENTITY_EXPERIENCE_ORB_PICKUP"
# 任务类型3: 事件任务(特定事件触发)
治疗波:
类型: "事件"
触发: "wave_complete" # 波次完成时触发
脚本:
- 发送消息 @所有玩家 "&d[治疗波] 神秘力量治愈了你们!"
- 治疗 @所有玩家
- 播放音效 @所有玩家 "BLOCK_BEACON_POWER_SELECT"
- 播放特效 "HEART" 在 "0,65,0" 数量=30 速度=0.2英文格式:
yaml
tasks:
timer1:
type: "timed"
times:
300: [...]
loop1:
type: "loop"
interval: 180
script: [...]
event1:
type: "event"
trigger: "wave_complete"
script: [...]交互点配置 (interacts.yml)
玩家可触发的交互点。
yaml
交互:
# 类型1: 放置方块触发
能量块激活:
类型: "放置方块"
仅一次: true # 是否只能触发一次
参数:
位置: "-5,51,-28" # 坐标 x,y,z
方块类型: "DIAMOND_BLOCK" # 需要放置的方块
方块名称: "能量块" # 显示名称(可选)
脚本:
- 发送消息 @触发者 "&a&l你激活了能量块!"
- 播放音效 @触发者 "BLOCK_BEACON_ACTIVATE"
- 播放特效 "FIREWORK" 在 "-5,51,-28" 数量=50 速度=0.3
- 删除障碍物 "能量屏障"
- 生成怪物组 "第一波"
# 类型2: 右键方块触发
按钮激活:
类型: "右键方块"
仅一次: false # 可重复触发
参数:
位置: "15,64,15"
方块类型: "STONE_BUTTON"
脚本:
- 发送消息 @触发者 "&e你按下了按钮"
- 播放音效 @所有玩家 "BLOCK_STONE_BUTTON_CLICK_ON"
- 删除障碍物 "铁门"
- 等待 10秒
- 创建障碍物 "铁门"
# 类型3: 右键实体触发(NPC)
神秘商人:
类型: "右键实体"
仅一次: false
参数:
实体类型: "VILLAGER" # Minecraft 实体类型
实体名称: "&6神秘商人" # 显示名称
位置: "5,64,5"
脚本:
- 发送消息 @触发者 "&e[商人] &7需要帮助吗?"
- 给予物品 @触发者 "COOKED_BEEF" 5
- 给予物品 @触发者 "GOLDEN_APPLE" 1
- 播放音效 @触发者 "ENTITY_VILLAGER_YES"
# 类型4: 进入区域触发
危险区域:
类型: "进入区域"
仅一次: false
参数:
最小点: "-20,60,-20" # 区域的一个对角点
最大点: "-15,70,-15" # 区域的另一个对角点
脚本:
- 发送消息 @触发者 "&c&l你进入了危险区域!"
- 发送标题 @触发者 "&c危险" "&7小心陷阱"
- 播放音效 @触发者 "ENTITY_ELDER_GUARDIAN_CURSE"
- 创建障碍物 "岩浆陷阱"
# 类型5: 击杀怪物触发
击杀Boss奖励:
类型: "击杀怪物"
仅一次: true
参数:
怪物ID: "AncientGuardian" # MythicMobs ID
数量: 1 # 需要击杀的数量
脚本:
- 发送消息 @触发者 "&a&l你获得了击杀奖励!"
- 给予物品 @触发者 "DIAMOND_SWORD" 1
- 给予物品 @触发者 "EMERALD" 10
- 播放音效 @触发者 "UI_TOAST_CHALLENGE_COMPLETE"
# 类型6: 拾取物品触发
收集钥匙:
类型: "拾取物品"
仅一次: false
参数:
物品类型: "TRIPWIRE_HOOK"
物品名称: "&6神秘钥匙" # 必须完全匹配
脚本:
- 发送消息 @触发者 "&a你获得了神秘钥匙!"
- 播放音效 @触发者 "ENTITY_ITEM_PICKUP"
- 设置变量 has_key true英文格式:
yaml
interacts:
interact1:
type: "place_block"
once: true
parameters:
location: "x,y,z"
block_type: "DIAMOND_BLOCK"
script: [...]权限节点
yaml
# 管理员权限
quedp.admin # 所有管理员权限
# 命令权限
quedp.command.dungeon # 地牢命令 (/dg)
quedp.command.party # 队伍命令 (/pt)
quedp.command.editor # 编辑器命令 (/dgedit)
quedp.command.admin # 管理命令 (/dga)
# 地牢权限
quedp.dungeon.<地牢ID> # 进入特定地牢
quedp.dungeon.vip # VIP地牢权限(示例)
# 编辑器权限
quedp.editor.use # 使用编辑器
quedp.editor.create # 创建地牢
quedp.editor.delete # 删除地牢下一步
了解配置后,你可以:
- 查看 JavaScript 脚本文档 学习脚本编写
- 阅读 快速开始 创建第一个地牢
- 参考 API 文档 进行二次开发
