Skip to content

主配置 config.yml

plugins/GTDungeonTeam/config.yml 控制队伍、体力、掉落、竞拍、经验、存储、代理和界面。副本本身不写在这里,副本固定放在 dungeons/ 文件夹。

修改后执行:

text
/gdt reload

存储、代理、经济、客户端 UI 这类加载顺序相关的内容,正式服建议完整重启一次。

队伍 team

yaml
team:
  default-max-players: 4
  default-name: "<leader>的队伍"
  default-description: "欢迎加入队伍。"
  default-public: true
  default-allow-apply: true
  default-allow-pvp: false
  default-random-distribution: false
  pvp-damage-in-dungeon: false
  invite-expire-seconds: 60
  application-expire-seconds: 45
  max-applications: 6
字段作用
default-max-players新队伍默认人数上限
default-name新队伍默认显示名,支持 <leader>
default-description新队伍默认介绍
default-public新队伍是否默认公开
default-allow-apply是否默认接收入队申请
default-allow-pvp队伍是否默认允许队友伤害
default-random-distribution队伍是否默认开启掉落分配开关
pvp-damage-in-dungeon副本内是否允许队伍 PVP 逻辑生效
invite-expire-seconds邀请过期时间
application-expire-seconds入队申请过期时间
max-applications单个队伍最多保留多少条申请

队伍 ID 和队伍显示名是两回事。队伍 ID 用于内部索引、跨服同步、公开房间操作;队伍显示名给玩家看,队长可以改。

公开房间

yaml
team:
  public-room:
    enabled: true
    quick-join: true
字段作用
enabled是否开放公开房间列表
quick-join是否允许 /gdt rooms quick 快速加入

公开房间不是强制进队。队伍开启申请时,玩家会提交入队申请;队伍关闭申请或条件不满足时,会收到失败提示。

入队条件模板

yaml
team:
  join-requirements:
    templates:
      power:
        name: "战斗力"
        placeholder: "%player_zhandouli%"
        default-operator: ">="
        description:
          - "限制申请者战斗力。"
      job:
        name: "职业"
        placeholder: "%player_job%"
        default-operator: "="
        description:
          - "限制申请者职业。"

这里用于给队长准备“可选条件”。队长在游戏里决定要不要启用、比较符是什么、值填多少。

字段作用
name玩家看到的条件名称
placeholder检查申请者时读取的 PAPI
default-operator队长只输入值时使用的默认比较符
descriptionGUI 说明文字

可用比较符:

text
>= <= > < = == != contains !contains

中文输入也能识别一部分:

text
大于 大于等于 小于 小于等于 等于 不等于 包含 不包含

职业、阵营、称号这类文本条件,默认比较符用 =。战力、等级、转生次数这类数值条件,默认比较符用 >=

副本默认适配器

yaml
dungeon:
  default-provider: command

当副本文件没写 provider 时,会使用这里的默认值。新服测试建议先用 command,流程通了再换成真实副本适配器。

体力 stamina

yaml
stamina:
  enabled: true
  max: 120
  initial: 120
  recover-amount: 1
  recover-seconds: 60
字段作用
enabled是否启用体力
max体力上限
initial玩家首次记录时的初始体力
recover-amount每次恢复多少体力
recover-seconds每隔多少秒恢复一次

maxinitialrecover-amount 支持变量和公式:

yaml
stamina:
  max: "{calc:120+%player_level%*2}"
  initial: "<stamina_max>"
  recover-amount: "{calc:1+%vip_level%}"
  recover-seconds: 60

<stamina_max> 是当前计算出的体力上限。恢复量结果小于 0 时会按 0 处理。

战斗统计 stats

yaml
stats:
  damage-enabled: true

开启后插件会记录副本中的队伍伤害,用于结算页、DPS 展示、HUD 或客户端 UI 显示。

掉落分配 loot

yaml
loot:
  enabled: true
  mode: random
  require-team-toggle: true
  require-active-run: false
  same-world-only: true
  include-picker: true
  announce: true
字段作用
enabled总开关
mode分配模式
require-team-toggle是否要求队伍自己的掉落分配开关已开启
require-active-run是否必须在副本运行中才接管掉落
same-world-only只分给同世界在线队员
include-picker拾取者是否也参与分配
announce是否通知队伍成员

mode 可填:

效果
random在线候选队员随机获得
round_robin轮流获得
leader优先给队长
picker给拾取者
off不接管掉落

普通组队服可以保持:

yaml
loot:
  require-active-run: false

这样没有副本插件时也能使用队伍掉落分配。

掉落黑名单

yaml
loot:
  blacklist:
    materials: []
    lore-keywords:
      - "绑定"
      - "限定"

匹配黑名单的物品不会被队伍分配接管。适合绑定物品、任务物品、不可交易物品。

materials 写原版材料名:

yaml
materials:
  - BARRIER
  - COMMAND_BLOCK

lore-keywords 会去掉颜色后做包含匹配。

经验共享 exp-share

yaml
exp-share:
  enabled: false
  require-active-run: false
  outside-dungeon-range: 32.0
  same-world-only: false
  announce: false
  message: "&a<receiver> 获得队伍经验分配 &f<exp> &8(总经验 <total_exp>)"
  distribution:
    killer-weight: "1"
    member-weight: "1"
  actions:
    shared: []
字段作用
enabled是否启用经验共享
require-active-run是否必须在副本中才共享
outside-dungeon-range不在副本运行中时的同世界共享半径,0 表示关闭副本外共享
same-world-only副本运行中是否进一步要求队员与击杀者同世界;副本外始终要求同世界
announce是否向每名经验接收者发送分配提示
distribution.killer-weight击杀者或原经验获得者的权重公式
distribution.member-weight每名符合条件队员的权重公式
actions.shared每次成功分配经验后执行的动作

经验只使用怪物或经验事件原本提供的数量作为固定池。所有权重会先求值,再按总权重归一化;公式写得再大,也不会突破原始经验总量。

例如击杀者获得每名队员的双倍权重:

yaml
exp-share:
  enabled: true
  outside-dungeon-range: 32.0
  distribution:
    killer-weight: "2"
    member-weight: "1"

怪物提供 100 经验,1 名击杀者和 2 名队员参与时,最终分成 50 / 25 / 25,总和仍为 100。

两项权重都支持 PAPI、<变量>{calc:公式}。常用变量:

text
<exp> <total_exp>
<team_size> <participant_count> <teammate_count>
<earner> <earner_uuid>
<receiver> <receiver_uuid>
<in_dungeon> <outside_dungeon>
<distance> <exp_role>

动态提高击杀者权重:

yaml
distribution:
  killer-weight: "{calc: 1 + <teammate_count> * 0.5}"
  member-weight: "1"

副本运行中,只选择同一次副本运行记录里的在线队员;不在副本中时,只选择同世界且距离不超过 outside-dungeon-range 的在线队员。

旧配置中的 proportions 仍可继续使用。它现在表示每名队员从固定经验池取得的百分比,击杀者获得剩余部分,不再额外增加经验。要使用新公式,在 exp-share 下加入 distribution 即可。

副本适配器 providers

yaml
providers:
  btdungeons:
    prefer-api: true
  command:
    enabled: true

command 是兜住流程用的适配器,适合测试、临时副本、只执行命令的玩法。真实副本插件能用 API 时,优先走 API。

查看当前适配器状态:

text
/gdt providers

存储 storage

yaml
storage:
  mode: local
说明
local本地存储,适合单服测试
mysql使用 MySQL
redis使用 Redis

单服测试用 local。跨服网络选 MySQL 或 Redis,多个子服必须使用同一套存储。插件不会自动探测或切换存储模式。

MySQL

yaml
mysql:
  enabled: false
  host: 127.0.0.1
  port: 3306
  database: gtdungeonteam
  username: root
  password: ""
  params:
    useSSL: false
    serverTimezone: Asia/Shanghai
    characterEncoding: utf8
  pool:
    maximum-pool-size: 8

一般不用手写完整 JDBC。确实需要自定义时,可以额外配置旧式 mysql.jdbc-url,插件会优先使用它。

Redis

yaml
redis:
  enabled: false
  host: 127.0.0.1
  port: 6379
  password: ""
  database: 0

Redis 适合跨服队伍状态和短期请求。生产服注意给 Redis 设置密码,并限制外网访问。

代理 proxy

yaml
proxy:
  enabled: false
  type: none
  server-id: lobby-1
  custom-channel: "gtdungeonteam:main"
  legacy-custom-channel: "GTDungeonTeam"
字段作用
enabled是否启用跨服桥
typevelocitybungeewaterfallnone
server-id当前子服 ID,要和代理服务器名对应
custom-channel现代插件消息通道
legacy-custom-channel旧版本插件消息通道

每个子服的 server-id 必须不同,且和副本文件中的 target-server 对得上。

跨服开本 cross-server

yaml
cross-server:
  auto-start-on-target: true
  pending-expire-seconds: 120
  join-delay-ticks: 40
字段作用
auto-start-on-target队员到达目标服后自动消费开本请求
pending-expire-seconds跨服开本请求过期时间
join-delay-ticks玩家进目标服后延迟多少 tick 再尝试开本

跨服开本流程见 跨服与存储

客户端界面 ui

yaml
ui:
  default: vanilla
  prefer-client-ui: true
  client-views:
    main: "gtdungeonteam/main"
    team: "gtdungeonteam/team"
    rooms: "gtdungeonteam/rooms"
    dungeons: "gtdungeonteam/dungeons"
    result: "gtdungeonteam/result"

default 可填:

text
vanilla
paiui
ax
dragoncore
kongcore
dialog

default 是唯一界面模式。prefer-client-ui: true 时,插件只初始化并使用这里指定的客户端 UI;不会自动探测或依次尝试其他引擎。指定前置缺失或 API 初始化失败时直接回到原版 GUI。各引擎的页面 ID 和连接参数在 client-ui/providers.yml

消息前缀

yaml
messages:
  prefix: "&8[&3GTDungeonTeam&8] &r"

所有普通提示都会带这个前缀。颜色符号支持 &