Skip to content

主配置与存储

主配置位于:

text
plugins/GTCommission/config.yml

修改后输入:

text
/gtcom reload

存储连接方式只在服务器启动时建立。修改 storage 后请完整重启,不要只重载。

reset

yaml
reset:
  timezone: "Asia/Shanghai"
  hour: 4

这是面板未单独填写刷新时间时使用的默认值。

字段说明
timezone时区。国内服通常写 Asia/Shanghai
hour默认刷新小时,范围 0-23

面板可以在 boards/ 内覆盖时区、小时和分钟。

performance

yaml
performance:
  condition-check-seconds: 30
  pool-check-seconds: 300
  playtime-step-seconds: 60
  save-interval-seconds: 10
  bounty-expire-check-seconds: 60
字段说明建议
condition-check-secondsPAPI 条件任务检查间隔30-60 秒
pool-check-seconds重新判断玩家可用任务池120-300 秒
playtime-step-seconds在线时长任务每次增加的秒数60 秒
save-interval-seconds脏数据写入间隔10-30 秒
bounty-expire-check-seconds过期悬赏、退款和待发奖励检查间隔30-60 秒

不要把这些值改成 1。任务进度由实际事件记录,定时检查只用于变量条件、任务池变化、在线时长、存储和悬赏结算。

daily

yaml
daily:
  auto-claim: false
  auto-switch-when-eligible-pools-change: true
  preserve-completed-on-pool-switch: true
  announce-progress-step-percent: 25
字段说明
auto-claim任务完成后立即执行奖励。关闭时玩家需要点击领取
auto-switch-when-eligible-pools-change玩家条件变化后自动重新选择符合条件的任务池
preserve-completed-on-pool-switch同一周期切换任务池时保留已经完成的同 ID 任务
announce-progress-step-percent每增加多少百分比发送一次进度提示,0 关闭提示

bounty

yaml
bounty:
  max-published-per-player: 5
  max-accepted-per-player: 10
  default-expire-hours: 24
  allow-publisher-accept: false
  refund-on-expire-percent: 100
  tip-min-unaccepted-minutes: 30
  cancel:
    free-minutes: 30
    fee:
      amount: 100
      economy: money
      system-percent: 10
字段说明
max-published-per-player每名玩家同时处于开放状态的发布上限
max-accepted-per-player每名玩家同时接取的开放悬赏上限
default-expire-hours悬赏模板未写 expire-hours 时使用的小时数
allow-publisher-accept是否允许发布者接取自己的悬赏
refund-on-expire-percent悬赏过期时未发出的托管奖励退款比例
tip-min-unaccepted-minutes发布后至少经过多少分钟且无人接取,才允许追加小费
cancel.free-minutes发布后免费取消的分钟数,0 表示立即收费
cancel.fee.amount超过免费时间后取消一次收取的手续费,0 表示不收费
cancel.fee.economy手续费使用的经济 ID,必须存在于 economy.currencies
cancel.fee.system-percent手续费中系统保留的百分比,剩余金额平均发给曾接取玩家

取消悬赏由发布者在 /gtbounty mine/gtmybounty 的详情界面操作。取消时会退回尚未发出的托管奖励和小费,当前接取者退回押金;超过免费时间后,手续费扣除系统抽成后按曾接取玩家平均结算。

本地存储

yaml
storage:
  backend: local

本地存储是默认方式,数据保存在:

text
plugins/GTCommission/data/

单服、生存服和测试服直接使用本地即可。

MySQL

yaml
storage:
  backend: mysql
  key-prefix: "gtcommission:"
  mysql:
    enabled: true
    host: 127.0.0.1
    port: 3306
    database: minecraft
    username: root
    password: "change-me"
    table: gtcommission_storage
    maximum-pool-size: 4
    connection-timeout-ms: 5000

GTCommission 的 MySQL 地址、账号、库名和表名全部在这里填写,不读取 GTCore 的数据库连接。MySQL 运行库放在:

text
plugins/GTCore/libraries/mysql/

首次启用时缺少的文件会自动补齐。连接失败时会在控制台说明原因并回退到本地存储,插件不会直接停服。

Redis

yaml
storage:
  backend: redis
  key-prefix: "gtcommission:"
  redis:
    enabled: true
    host: 127.0.0.1
    port: 6379
    username: ""
    password: ""
    database: 0
    ssl: false
    maximum-pool-size: 4
    connect-timeout-ms: 3000
    socket-timeout-ms: 3000
字段说明
usernameRedis 6 ACL 用户名,不使用 ACL 时留空
passwordRedis 密码,没有密码时留空
databaseRedis 数据库编号
sslRedis 服务是否要求 TLS/SSL
maximum-pool-size最大连接数
connect-timeout-ms建立连接超时
socket-timeout-ms命令读写超时

跨服

yaml
storage:
  cross-server:
    enabled: true
    sync-interval-seconds: 2
    server-id: auto

跨服要求所有子服:

  1. 使用相同的 MySQL 或 Redis。
  2. 使用相同的 key-prefix、库名和表名。
  3. cross-server.enabled 都为 true
  4. 每台子服的 server-id 不同,或统一保留 auto
  5. 所有子服的 tasks/pools/boards/bounties/ 配置保持一致。

本地存储不会开启跨服。远程连接失败回退本地时,跨服也会自动关闭。

查看当前状态

text
/gtcom debug

重点看:

  • 存储 是否为 LOCALMYSQLREDIS
  • 跨服 是否显示已开启。
  • 脏数据 是否持续增长不下降。
  • 控制台是否有连接超时、认证失败或数据库权限错误。