Suite

配置

EventPacket 配置文件详解

配置文件概览

EventPacket 模块的配置文件位于 data/eventpacket/config.yml,规则文件位于 data/eventpacket/rules/ 目录,客户端回包预设位于 data/eventpacket/packet-command-presets/ 目录。执行 /axs reload eventpacket 可热重载配置和规则。

配置版本号 config-version 用于迁移系统自动升级配置结构,当前版本为 2

主配置完整字段表

settings 节

配置项类型默认值说明
settings.refresh-interval-tickslong20PAPI 占位符轮询刷新间隔(tick,20 = 1 秒),最小为 1
settings.debugbooleanfalse是否输出 EventPacket 模块调试日志(规则匹配、动作执行、条件失败等)

storage 节

配置项类型默认值说明
storage.sharedbooleantrue是否共享存储模式(推荐,使用本体统一数据源)
storage.modeStringsqlite存储模式(sqlitemysql),仅 shared: false 时有效
storage.sqlite.fileStringeventpacket.dbSQLite 文件名(相对模块数据目录),仅自建模式有效
storage.pool-sizeint2JDBC 连接池大小,SQLite 建议保持 1,仅自建模式有效
storage.mysql.hostString127.0.0.1MySQL 主机地址,仅自建 MySQL 模式有效
storage.mysql.portint3306MySQL 端口
storage.mysql.databaseStringarcartxsuiteMySQL 数据库名
storage.mysql.usernameStringrootMySQL 用户名
storage.mysql.passwordString(空)MySQL 密码
storage.mysql.table-prefixStringaxs_eventpacket_MySQL 表名前缀

共享模式(推荐):shared: true 时使用本体 config.ymlstorage 节配置,各模块共用连接池,性能较好。 自建模式(不推荐):shared: false 时模块独立创建 HikariCP 连接池,需配置上方字段。

packet-command 节

配置项类型默认值说明
packet-command.enabledbooleantrue是否启用客户端回包预设功能
packet-command.packet-idStringArcartXEventPacket客户端回包 ID,客户端 Packet.send 时需匹配此值
packet-command.presetssection(空)内联客户端回包预设定义(也可在 packet-command-presets/ 目录中定义)

entity-cleanup 节

配置项类型默认值说明
entity-cleanup.enabledbooleanfalse是否启用实体清理(ClearLag)功能
entity-cleanup.interval-secondsint300清理间隔(秒)
entity-cleanup.warning-secondsint30清理前警告倒计时(秒),0 = 不警告
entity-cleanup.warning-messageString&c[清理] 将在 {seconds} 秒后清理掉落物!警告消息,支持 {seconds} 变量和 & 颜色码
entity-cleanup.cleanup-messageString&a[清理] 已清除 {count} 个实体。清理完成消息,支持 {count} 变量
entity-cleanup.clear-dropped-itemsbooleantrue是否清理掉落物
entity-cleanup.clear-monstersbooleanfalse是否清理怪物(Monster 接口)
entity-cleanup.clear-animalsbooleanfalse是否清理动物(Animals 接口)
entity-cleanup.skip-namedbooleantrue是否跳过有自定义名称的实体
entity-cleanup.clear-entity-typeslist[]额外要清理的实体类型(EntityType 枚举名)
entity-cleanup.entity-whitelistlist[VILLAGER, ARMOR_STAND]不清理的实体类型白名单
entity-cleanup.worldslist[]限定生效世界,空 = 所有世界

scheduled-commands 节

scheduled-commands 为动态节,键名即任务 ID,可定义多个定时任务。

配置项类型默认值说明
scheduled-commands.<id>.enabledbooleantrue是否启用该任务
scheduled-commands.<id>.interval-secondsint300固定间隔触发间隔(秒),旧模式
scheduled-commands.<id>.delay-secondsint0首次执行延迟(秒),旧模式
scheduled-commands.<id>.as-consolebooleantrue是否以控制台身份执行(false 则以玩家身份执行)
scheduled-commands.<id>.permissionString(空)玩家执行模式下的权限过滤,空 = 所有在线玩家
scheduled-commands.<id>.commandslist[]要执行的命令列表,支持 {player}{online} 变量
scheduled-commands.<id>.broadcast-messageString(空)任务执行后广播的消息,支持 & 颜色码
scheduled-commands.<id>.schedulesection(空)日历触发配置(1.6.0+),存在时优先于固定间隔模式

schedule 子节(日历触发)

配置项类型说明
schedule.modeString调度模式:hourly(每小时整点)、daily(每天指定时刻)、weekly(每周指定时刻)、interval(固定间隔)
schedule.timeStringdaily/weekly 模式的触发时刻,格式 HH:mm(如 02:30
schedule.dayStringweekly 模式的星期几(如 mondayfriday
schedule.interval-tickslonginterval 模式的间隔(tick)
schedule.interval-secondsintinterval 模式的间隔(秒)
schedule.interval-minutesintinterval 模式的间隔(分钟)

interval 模式按优先级读取 interval-ticks > interval-seconds > interval-minutes

规则配置

规则文件位于 data/eventpacket/rules/ 目录,每个 .yml 文件的根键即为规则 ID。目录文件按文件名排序加载,同名规则以最后加载的文件为准。

规则字段表

字段类型默认值说明
enabledbooleantrue是否启用该规则
triggerStringjoin触发器类型,见下方触发器枚举表
signalString(空)信号标识,用于信号过滤(command-signal / quest-* / objective-* / chemdah-level-change)
placeholderString(空)PAPI 占位符表达式(PAPI 触发器使用),如 %player_level%
thresholdnumber(空)数值阈值(placeholder-threshold 触发器使用)
require-non-emptybooleanfalse是否要求占位符值非空才触发
countint1击杀计数触发器所需的目标击杀数
worldslist[]限制生效的世界名集合,空 = 不限制
entity-typeslist[]限制生效的实体类型集合(EntityType 枚举名)
mythic-mob-idslist[]限制生效的 MythicMob ID 集合
repeatablebooleanfalse是否可重复触发
cooldownstring/number0冷却时间,支持 10s/5m/2h/1d 或数字(秒)
conditionslist[]脚本条件列表,全部满足才触发,详见 条件系统
actionslist(必填)触发后执行的动作列表,至少一个
scriptstring(空)脚本内容(script-js / script-aria 触发器必填)

触发器枚举

触发器配置值说明
玩家加入join玩家加入服务器时触发
首次加入first-join玩家首次加入服务器时触发
玩家退出quit玩家退出服务器时触发
PAPI 增加papi-increase / placeholder-increase指定 PAPI 数值增加时触发
PAPI 减少papi-decrease / placeholder-decrease指定 PAPI 数值减少时触发
PAPI 阈值placeholder-threshold指定 PAPI 数值达到阈值时触发
击杀计数mob-kill-count玩家击杀指定怪物累计到条件时触发
命令信号command-signal管理命令手动发送信号时触发
客户端回包client-packet客户端 Packet.send 回包时触发
任务接受quest-acceptChemdah 任务接受后触发
任务完成quest-completeChemdah 任务完成后触发
任务失败quest-failChemdah 任务失败后触发
目标完成objective-completeChemdah 目标完成后触发
目标继续objective-continueChemdah 目标继续时触发
目标重启objective-restartChemdah 目标重启时触发
等级变化chemdah-level-changeChemdah 等级变化时触发
JS 脚本script-jsJavaScript 表达式返回 true 时触发
Aria 脚本script-ariaAria 表达式返回 true 时触发

动作类型枚举

动作类型说明必填参数可选参数
questgps.offer推送任务到 QuestGPSquest-idopen-menu(默认 true)
questgps.accept接受指定任务quest-id
questgps.open打开 QuestGPS 菜单
questgps.track追踪任务或阶段quest-idtask-id
subtitle.play播放字幕组group-idsubtitle-id / id(别名)
chat.card发送聊天卡片card-iddata(卡片自定义数据)
title.give发放称号title-idduration(默认 permanent,如 7d
command.dispatch派发命令commandexecutorconsole/player/op,默认 console)
ui-packet向客户端发送 UI 数据包ui-idpacket-handlerrecipientspack
mail.send发送邮件preset-id
qq-broadcastQQ 群广播messagegroup-id(不填则发送到所有群)
announcer.play播放公告字幕组group-idid(别名)
combateffect.play播放战斗特效packui-idpacket-handler(默认 play

接收者类型(ui-packet 动作)

配置值别名说明
selfsubjectplayer仅触发者自身
all-onlineall全部在线玩家
othersother-onlineother-players除触发者外的在线玩家

完整配置示例

# 配置版本号(请勿手动修改)
config-version: 2
 
settings:
  refresh-interval-ticks: 20
  debug: false
 
storage:
  shared: true
 
packet-command:
  enabled: true
  packet-id: "ArcartXEventPacket"
 
rules-directory: "rules"
 
entity-cleanup:
  enabled: false
  interval-seconds: 300
  warning-seconds: 30
  warning-message: '&c[清理] 将在 {seconds} 秒后清理掉落物!'
  cleanup-message: '&a[清理] 已清除 {count} 个实体。'
  clear-dropped-items: true
  clear-monsters: false
  clear-animals: false
  skip-named: true
  clear-entity-types: []
  entity-whitelist:
    - VILLAGER
    - ARMOR_STAND
  worlds: []
 
scheduled-commands:
  example-save:
    enabled: false
    interval-seconds: 600
    delay-seconds: 600
    as-console: true
    commands:
      - 'save-all'
    broadcast-message: ''
  example-tip:
    enabled: false
    interval-seconds: 1800
    delay-seconds: 60
    as-console: true
    commands:
      - 'say 欢迎加入服务器!输入 /help 查看帮助。'
    broadcast-message: ''

定时命令日历触发示例

scheduled-commands:
  # 每天凌晨 3 点执行自动保存
  daily-save:
    enabled: true
    as-console: true
    commands:
      - 'save-all'
    schedule:
      mode: daily
      time: "03:00"
 
  # 每周一凌晨 4 点重置周常
  weekly-reset:
    enabled: true
    as-console: true
    commands:
      - 'say 周常任务已重置!'
    schedule:
      mode: weekly
      day: monday
      time: "04:00"
 
  # 每 30 分钟执行一次在线奖励检查
  interval-reward:
    enabled: true
    as-console: true
    commands:
      - 'onlinerewards check-all'
    schedule:
      mode: interval
      interval-minutes: 30

配置迁移

EventPacket 模块当前配置版本为 2。从版本 1 升级到版本 2 的迁移操作:

from-version: 1
to-version: 2
description: "storage.mode 重命名为 storage.shared,值从 sqlite/mysql 映射为 true/false"
operations:
  - type: set-if-missing
    path: storage.shared
    value: true
  - type: rename
    from: storage.mode
    to: storage.shared
  - type: value-map
    path: storage.shared
    mapping:
      "mysql": false
      "sqlite": true

迁移由 ConfigDiagnosticEngine 自动执行,用户无需手动干预。详见 配置管理指南