Skip to content

八份业务配置逐字段参考

本页内容直接取自 SealAttributes 1.0.12 候选源码的默认资源。若你使用正式交付 1.0.8,应以该 JAR 首次启动生成的文件为准,不要把候选字段复制进旧版。

安全修改流程

  1. 正常停服,备份 plugins/SealAttributes/ 与数据库。
  2. 一次只改一个文件;保留 config-version,不要把插件版本写进去。
  3. 启动或执行 /sa reload,从第一条校验错误开始修复。
  4. 执行 /sa doctor/sa health,再用 /sa stats/sa sources 和真实战斗验收。
  5. 数据库、扩展和启动期组件变化应完整重启,不使用 Bukkit /reload

config.yml

yaml
# SealAttributes 主配置
# 可编辑项修改后执行 /sa reload;校验失败时旧配置继续生效。

# 配置格式版本,请勿修改。
config-version: 1

# 当前仅支持简体中文,请勿修改。
language: zh_CN

# 由 SealAttributes 统一计算实体之间的 RPG 伤害。
# 当前版本固定为 AUTHORITATIVE,请勿修改。
combat-mode: AUTHORITATIVE

# 选择玩家和怪物使用的裸装属性模板。
# 模板内容在 attributes.yml 顶部;一般只需要改那里的数值。
base-profile:
  player: player-default
  entity: entity-default

diagnostics:
  # 是否在控制台输出配置、兼容和属性来源相关的诊断信息。
  # 遇到问题时建议保持开启。
  enabled: true
  # 相同诊断信息的汇总间隔,单位:秒。可填 10~3600。
  summary-seconds: 60

attributes.yml

yaml
# 属性设置

# 配置格式版本,请勿修改。
config-version: 1

# 下面先列出全部内置属性。扩展注册的属性会在启动时自动补到本文件末尾。
# 自动补齐只新增缺失块,不会覆盖已有配置;暂时移除扩展也不会删除对应配置。
# 修改后执行 /sa reload,也可以删除不需要覆盖的内置属性块。
# 删除的属性块会自动使用插件默认值,旧版完整配置也可以继续使用。
# enabled:是否启用。关闭后只保留安全默认值,配置和装备加成都暂不生效,也不会显示。
# base-value:没有装备和其他加成时的基础值。
# PERCENT 属性的 base-value 使用小数:0.25 表示 25%,1.5 表示 150%。
# name:游戏内显示的名称;内置属性在 LORE 模式也会用它自动识别属性。
# 扩展属性如需兼容旧 Lore,请在 sources.yml 的 lore.templates 中写明确规则。
# category:GUI 分类;unit:NUMBER 普通数字、PERCENT 百分比、RATING 等级数值。
# category 和 unit 只影响 GUI 分类和显示,不会改变属性的真实类型或计算公式。
# description:GUI 中显示的说明
# order:同一分类内的顺序,可填 0~10000,数字越小越靠前。

# 玩家和怪物想使用不同的裸装数值时,只在这里写不一样的属性。
# 没写到的属性继续使用下面 attributes 里的 base-value。
# 模板中的 PERCENT 属性同样使用小数。
# 例如把 entity-default 的 max_health 改成 20,普通怪物的基础生命就是 20。
base-profiles:
  player-default:
    max_health: 100.0
  entity-default:
    max_health: 100.0

attributes:
  physical_attack:
    enabled: true
    base-value: 10.0
    name: "物理攻击力"
    category: ATTACK
    unit: NUMBER
    description: "提高普通攻击和物理技能的伤害。"
    order: 10

  spell_attack:
    enabled: true
    base-value: 0.0
    name: "法术攻击力"
    category: ATTACK
    unit: NUMBER
    description: "提高法术技能的伤害。"
    order: 20

  attack_speed_bonus:
    enabled: true
    base-value: 0.0
    name: "攻击速度加成"
    category: ATTACK
    unit: PERCENT
    description: "提高近战攻击速度。"
    order: 30

  true_damage:
    enabled: true
    base-value: 0.0
    name: "真实伤害"
    category: ATTACK
    unit: NUMBER
    description: "造成不受物理和法术防御减免的伤害。"
    order: 40

  physical_defense:
    enabled: true
    base-value: 0.0
    name: "物理防御力"
    category: DEFENSE
    unit: NUMBER
    description: "降低受到的物理伤害。"
    order: 10

  spell_defense:
    enabled: true
    base-value: 0.0
    name: "法术防御力"
    category: DEFENSE
    unit: NUMBER
    description: "降低受到的法术伤害。"
    order: 20

  physical_penetration_rate:
    enabled: true
    base-value: 0.0
    name: "物理穿透率"
    category: ATTACK
    unit: PERCENT
    description: "攻击时忽略目标的一部分物理防御。"
    order: 50

  spell_penetration_rate:
    enabled: true
    base-value: 0.0
    name: "法术穿透率"
    category: ATTACK
    unit: PERCENT
    description: "攻击时忽略目标的一部分法术防御。"
    order: 60

  accuracy_rating:
    enabled: true
    base-value: 100.0
    name: "命中等级"
    category: ACCURACY_CRITICAL
    unit: RATING
    description: "降低攻击被目标闪避的概率。"
    order: 10

  evasion_rating:
    enabled: true
    base-value: 0.0
    name: "闪避等级"
    category: ACCURACY_CRITICAL
    unit: RATING
    description: "提高闪避攻击的概率。"
    order: 20

  critical_chance:
    enabled: true
    base-value: 0.0
    name: "暴击率"
    category: ACCURACY_CRITICAL
    unit: PERCENT
    description: "提高物理和法术攻击触发暴击的概率。"
    order: 30

  critical_damage:
    enabled: true
    base-value: 1.5
    name: "暴击伤害"
    category: ACCURACY_CRITICAL
    unit: PERCENT
    description: "决定暴击时造成的伤害倍率。"
    order: 40

  critical_resistance:
    enabled: true
    base-value: 0.0
    name: "暴击抗性"
    category: ACCURACY_CRITICAL
    unit: PERCENT
    description: "降低敌人对自己造成暴击的概率。"
    order: 50

  lifesteal_rating:
    enabled: true
    base-value: 0.0
    name: "生命偷取强度"
    category: SUSTAIN
    unit: RATING
    description: "根据实际造成的伤害恢复生命。"
    order: 10

  reflection_rating:
    enabled: true
    base-value: 0.0
    name: "反伤强度"
    category: DEFENSE
    unit: RATING
    description: "受到攻击时向攻击者返还部分伤害。"
    order: 30

  healing_power:
    enabled: true
    base-value: 0.0
    name: "治疗强度"
    category: SUSTAIN
    unit: PERCENT
    description: "提高自己发出的主动治疗效果。"
    order: 20

  received_healing_bonus:
    enabled: true
    base-value: 0.0
    name: "受到治疗加成"
    category: SUSTAIN
    unit: PERCENT
    description: "提高自己受到的主动治疗效果。"
    order: 30

  max_health:
    enabled: true
    base-value: 100.0
    name: "最大生命值"
    category: SURVIVAL
    unit: NUMBER
    description: "提高实体的最大生命值。"
    order: 10

  flat_health_regeneration:
    enabled: true
    base-value: 0.0
    name: "固定生命恢复"
    category: SUSTAIN
    unit: NUMBER
    description: "每秒恢复固定数量的生命值。"
    order: 40

  percent_health_regeneration:
    enabled: true
    base-value: 0.0
    name: "百分比生命恢复"
    category: SUSTAIN
    unit: PERCENT
    description: "每秒按最大生命值的一定比例恢复生命。"
    order: 50

  movement_speed_bonus:
    enabled: true
    base-value: 0.0
    name: "移动速度加成"
    category: UTILITY
    unit: PERCENT
    description: "提高移动速度。"
    order: 10

  block_strength:
    enabled: true
    base-value: 0.0
    name: "格挡强度"
    category: DEFENSE
    unit: PERCENT
    description: "提高主动正面格挡时的减伤比例。"
    order: 40

sources.yml

yaml
# 装备属性读取设置
# item-mode 和 Lore 规则修改后可执行 /sa reload。

# 配置格式版本,请勿修改。
config-version: 1

# 是否由 SealAttributes 自动读取主手、副手和四件护甲。
# 默认开启。以后使用 SealItems 管理全部装备槽时,可以改为 false。
# 关闭后,SealAttributes 只聚合和计算其他插件通过 API 提交的属性,不再自动读取这六个槽位。
# SealItems 已绑定时不能热切换;请正常停服后修改,再完整启动服务器。
built-in-equipment-reader:
  enabled: true

# 装备属性读取方式:
# STRUCTURED:读取 PDC 和 MythicMobs 物品中的 SealAttributes,推荐新服务器使用
# LORE:从 Lore 文字中读取属性,适合兼容旧装备
item-mode: STRUCTURED

# 自动读取的原版装备槽。当前版本必须保持此列表和顺序不变。
# 戒指、项链等自定义槽位需要由对应插件通过 API 接入。
equipment-slots:
  - MAIN_HAND
  - OFF_HAND
  - HEAD
  - CHEST
  - LEGS
  - FEET

structured:
  # 结构化物品格式版本,请勿修改。
  schema-version: 1
  # 保存结构化装备属性的 PDC 键,请勿修改。
  pdc-key: sealattributes:item_attributes

lore:
  # Lore 识别格式。{name} 是属性名,{value} 是带正负号的数值。
  # 例如:物理攻击力 +100、暴击率: +10%、+50 最大生命值。
  # 百分比请填写人类百分数:10 或 10% 都表示 10%,不要填写 0.1。
  formats:
    number: ["{name} {value}", "{name}: {value}", "{name}:{value}", "{value} {name}"]
    percent: ["{name} {value}", "{name} {value}%", "{name}: {value}%", "{name}:{value}%", "{value}% {name}"]

  # 属性简称。每个属性最多 4 个,不能与其他属性名称或简称重复。
  # 只填写需要简称的属性,其他属性不用配置。
  # 示例:physical_attack: ["物理攻击", "物攻"]
  aliases: {}

  # 旧版、扩展属性或特殊 Lore 的高级规则,最多 64 条;attribute 填完整 namespace:path。
  # TOTAL_PERCENT 只适用于普通数值属性。
  # 一般保持为空即可,详细格式见管理员指南。
  templates: []

combat.yml

yaml
# 战斗数值设置
# 修改后执行 /sa reload;整份配置会先校验再一次性生效。

# 配置格式版本,请勿修改。
config-version: 1

hit:
  # INDEPENDENT 保持传统独立随机;PRD 会降低连续脸黑,但不持久化连败状态。
  random-model:
    critical: INDEPENDENT
    evasion: INDEPENDENT
  # 闪避率上限,单位:%。可填 0~95。
  maximum-evasion-percent: 90.0

block:
  # 格挡最多减免多少伤害,单位:%。可填 0~100。
  maximum-reduction-percent: 90.0
  # 可以正面格挡的角度,可填 0~360。120 表示角色左右各 60 度。
  front-arc-degrees: 120.0

attack-speed:
  # 没有攻速加成时,两次普通近战攻击的间隔,可填 1~1200。20 tick 约等于 1 秒。
  base-interval-ticks: 10.0
  # 攻速再高也不能低于这个攻击间隔,可填 1~1200,且不能超过基础间隔。
  minimum-interval-ticks: 2.0

rating:
  # 命中、闪避、吸血和反伤的成长参考值。
  # 数值越大,同样的属性点带来的效果越弱,可填 1~1000000。
  reference: 100.0

reflection:
  # 反伤后至少为攻击者保留多少生命,可填 0~1000000。填 1 表示反伤不能直接击杀。
  minimum-remaining-health: 1.0

regeneration:
  # 生命恢复结算间隔,单位:tick,可填 1~1200。默认每秒一次。
  interval-ticks: 20

time:
  # Minecraft 每秒 tick 数,当前版本固定为 20,请勿修改。
  ticks-per-second: 20

capacity:
  # 最多同时记录多少个正在战斗的玩家或实体。
  # 这不是服务器人数上限,可填 1~65536,一般无需修改。
  maximum-tracked-subjects: 4096

database.yml

yaml
# 数据库设置
# 除下面明确标注“需要重启”或“下次启动”的字段外,其余字段可用 /sa reload 应用。

# 配置格式版本,请勿修改。
config-version: 1

# 可填 SQLITE 或 MYSQL。默认 SQLITE,单服可直接使用。
# 修改数据库类型后必须重启,插件不会自动迁移两种数据库之间的数据。
type: SQLITE

sqlite:
  # 数据库文件相对于 plugins/SealAttributes/ 的位置。
  file: storage/sealattributes.db

mysql:
  # 仅在 type: MYSQL 时使用。修改后需要重启。
  host: 127.0.0.1
  port: 3306
  database: sealattributes
  username: sealattributes
  # 密码含 #、: 或首尾空格时请用引号包裹;不要提交或分享正式服的真实配置。
  password: change-me
  # 公网数据库建议开启 SSL;可信内网可按实际情况设置。
  use-ssl: false
  # 只有 MySQL 认证明确要求时才开启。
  allow-public-key-retrieval: false

# 数据库连接池。minimum-idle 可填 0~16,maximum-pool-size 可填 1~16,前者不能超过后者。
# SQLite 的 maximum-pool-size 必须为 1。
# MySQL 小型服务器一般设置 2~4 个连接即可。修改后需要重启。
pool:
  minimum-idle: 1
  maximum-pool-size: 1
  # 等待数据库连接的最长时间,单位:毫秒,可填 1000~30000。
  connection-timeout-ms: 5000
  # 检查连接是否可用的最长时间,单位:毫秒,可填 250~connection-timeout-ms。
  validation-timeout-ms: 2000
  # 空闲连接回收时间,单位:毫秒。填 0 表示不回收,其他值至少为 10000。
  idle-timeout-ms: 600000
  # 单个连接的最长使用时间,单位:毫秒。填 0 表示不限制,其他值至少为 30000。
  maximum-lifetime-ms: 1800000

queue:
  # 本组修改后需要重启。存储线程数可填 1~8;SQLite 必须为 1。
  storage-threads: 1
  # 等待处理的数据库任务上限,可填 128~16384。一般无需修改。
  capacity: 2048

timeouts:
  # 单条查询最长等待时间,单位:秒,可填 1~30。
  query-seconds: 5
  # 下次启动时连接数据库和检查表结构的最长时间,单位:秒,可填 2~60。
  startup-seconds: 15
  # 玩家登录时加载数据的最长时间,单位:秒,可填 1~60。
  preload-seconds: 15
  # 停服时等待数据保存完成的最长时间,单位:秒,可填 1~30。
  shutdown-seconds: 5

health-checkpoint:
  # 在线玩家生命值和当前资源的定时保存间隔,单位:秒。
  # 填 0 表示只在玩家退出和服务器关闭时保存;可填 0 或 10~600。
  interval-seconds: 60

reconnect:
  # 数据库断开后的重试间隔,单位:秒。可填 5~300。
  interval-seconds: 15

migration:
  # 旧版 MySQL 数据升级前,请先手动备份数据库,再临时改为 true。
  # 新安装保持 false;升级成功后也改回 false。本字段在下次完整启动时使用。
  mysql-backup-confirmed: false

messages.yml

yaml
# 插件消息
# 修改后执行 /sa reload;请保留 messages 下全部现有键名,只修改冒号后的文本。

# 配置格式版本,请勿修改。
config-version: 1

# 支持 & 颜色代码。除 prefix 外,所有消息都可以使用 {prefix}。
# 每条消息可以使用的其他变量写在上方注释中,花括号变量不要改名。
messages:
  # 无其他变量。
  prefix: "&8[&6SealAttributes&8] &r"
  # {permission}
  no-permission: "{prefix}&c你没有权限:&f{permission}"
  player-only: "{prefix}&c该命令只能由在线玩家执行。"
  # {player}
  player-not-found: "{prefix}&c找不到在线玩家 &f{player}&c,请检查名称后重试。"
  # {player}、{reason}
  subject-not-ready: "{prefix}&e{player} 的属性尚未就绪:&f{reason}&e,请稍后重试。"
  # {usage}
  invalid-usage: "{prefix}&c参数不正确。用法:&f{usage}"
  reload-started: "{prefix}&e正在读取并校验八份候选配置……"
  # {revision}、{pending}
  reload-success: "{prefix}&a原子重载成功,配置修订 &f{revision}&a,待完成重建 &f{pending}&a。"
  # {error}
  reload-failed: "{prefix}&c重载失败,旧完整配置仍在使用:&f{error}"
  gui-disabled: "{prefix}&e属性 GUI 当前已关闭,请使用 &f/sa inspect <玩家>&e。"
  source-write-started: "{prefix}&e正在写入持久来源,成功前不会改变在线属性……"
  # {player}、{source}
  source-write-success: "{prefix}&a已更新 &f{player}&a 的持久来源 &f{source}&a。"
  # {error}
  source-write-failed: "{prefix}&c持久来源写入失败,在线属性未改变:&f{error}"
  # {player}、{health}、{maximum}
  health-repair-success: "{prefix}&a已修复 &f{player}&a 的 SealAttributes 投影:&f{health}/{maximum}&a。"
  # {player}、{error}
  health-repair-failed: "{prefix}&c无法修复 &f{player}&c:&f{error}"
  database-flush-started: "{prefix}&e正在后台排空存储队列……"
  # {drained}、{failed}
  database-flush-complete: "{prefix}&a存储排空结束:成功 &f{drained}&a,失败 &f{failed}&a。"

gui.yml

yaml
# 属性 GUI 设置
# 修改后执行 /sa reload;校验失败时旧 GUI 配置继续生效。

# 配置格式版本,请勿修改。
config-version: 1

# 是否允许玩家使用 /sa stats 打开属性 GUI。
enabled: true

# 总览页标题。支持 & 颜色代码和 {player}。
title: "&8✦ &6SealAttributes &8· &f{player}"

# 分类页标题。必须保留 {category},也可以使用 {player}。
category-title: "&8✦ &6{category} &8· &f{player}"

# GUI 使用的物品材质,填写目标 1.21.x 中存在的 Bukkit Material 名称。
materials:
  filler: BLACK_STAINED_GLASS_PANE
  border: GRAY_STAINED_GLASS_PANE
  attribute: PAPER
  back: ARROW

# 返回按钮名称,支持 & 颜色代码。
back-name: "&6← 返回属性总览"

capacity:
  # 最多允许多少个玩家同时打开属性 GUI,可填 1~500。一般无需修改。
  maximum-open-views: 100

# 属性分类按钮:
# 下面七个分类块必须全部保留,不能删除、增加或改名。
# slot 是 GUI 格子位置,可填 0~53,不同分类不能重复。
# material 是按钮材质;name 和 lore 支持 & 颜色代码及 {count}。
groups:
  attack:
    slot: 20
    material: NETHERITE_SWORD
    name: "&6&l攻击属性"
    lore:
      - "&8物理 · 法术 · 真实"
      - "&7共 &f{count} &7项,点击查看"
  defense:
    slot: 21
    material: SHIELD
    name: "&b&l防御属性"
    lore:
      - "&8减伤 · 穿透对抗 · 格挡"
      - "&7共 &f{count} &7项,点击查看"
  accuracy_critical:
    slot: 22
    material: TARGET
    name: "&e&l命中与暴击"
    lore:
      - "&8命中 · 闪避 · 暴击"
      - "&7共 &f{count} &7项,点击查看"
  sustain:
    slot: 23
    material: GLISTERING_MELON_SLICE
    name: "&a&l续航与治疗"
    lore:
      - "&8吸血 · 治疗 · 恢复"
      - "&7共 &f{count} &7项,点击查看"
  survival:
    slot: 24
    material: TOTEM_OF_UNDYING
    name: "&c&l生存属性"
    lore:
      - "&8生命 · 当前状态"
      - "&7共 &f{count} &7项,点击查看"
  utility:
    slot: 31
    material: FEATHER
    name: "&f&l功能属性"
    lore:
      - "&8移动与通用扩展"
      - "&7共 &f{count} &7项,点击查看"
  custom:
    slot: 32
    material: ENCHANTED_BOOK
    name: "&d&l自定义属性"
    lore:
      - "&8第三方插件启动期注册"
      - "&7共 &f{count} &7项,点击查看"

display.yml

yaml
# 生命显示、数字格式和战斗效果
# 修改后执行 /sa reload;整份配置会先校验再一次性生效。

# 配置格式版本,请勿修改。
config-version: 1

health-bar:
  # 客户端红心显示方式:
  # SCALED 固定红心数量;VANILLA 使用原版显示;UNCHANGED 不修改红心显示。
  mode: SCALED
  # SCALED 模式显示的生命刻度,可填 2~40。它不是最大生命上限。
  scale: 40.0

movement-projection:
  # 是否把“移动速度加成”应用到实体。
  # OWNED_MODIFIER 应用且不会覆盖其他插件的加成;UNCHANGED 不修改。
  mode: OWNED_MODIFIER

respawn-health:
  # 复活后的生命:FULL 满血;PERCENT 按下面比例;UNCHANGED 保持服务端结果。
  mode: FULL
  # PERCENT 模式使用的复活生命比例,可填 1~100。
  # 这里填写人类百分数:30 表示 30%,不是 0.30。
  percentage: 30.0

number-format:
  # 数字格式:COMPACT_CN 显示 1.25万,COMPACT_EN 显示 12.5K,PLAIN 显示 12,500。
  mode: COMPACT_CN
  # 最多保留几位小数,可填 0~4。
  decimal-places: 2
  # 是否去掉末尾多余的 0,例如把 1.20万 显示成 1.2万。
  trim-trailing-zeros: true
  # PLAIN 模式是否显示千位分隔符。
  use-grouping-separator: true

hologram:
  # 是否启用 DecentHolograms 伤害数字。
  enabled: true
  # enabled 为 true 时,required=true 会在缺少 DecentHolograms 时拒绝启动。
  # required=false 时只关闭伤害数字,不影响插件其他功能。
  required: false
  # TOTAL 只显示总伤害;BREAKDOWN 分别显示物理、法术和真实伤害。
  mode: BREAKDOWN
  # 谁能看见伤害数字:ATTACKER、TARGET、PARTICIPANTS、NEARBY;可组合,至少保留一项。
  viewers:
    - PARTICIPANTS
  # 同一目标的多段伤害在多少 tick 内合并,可填 0~100。填 0 表示不合并。
  merge-window-ticks: 6
  # 伤害数字显示多久,单位:tick,可填 1~200。
  lifetime-ticks: 24
  # 合并伤害数字的刷新间隔,单位:tick,可填 1~20。
  update-interval-ticks: 2
  # 伤害数字相对目标眼睛的高度,单位:方块,可填 -5~10。
  vertical-offset: 0.6
  nearby:
    # viewers 包含 NEARBY 时生效;radius 可填 1~64,maximum-viewers 可填 1~128。
    radius: 16.0
    maximum-viewers: 16
  capacity:
    # 全服最多同时显示多少个伤害数字,可填 1~2048。
    maximum-active: 128
    # 每 tick 最多新建多少个伤害数字,可填 1~256。
    maximum-creates-per-tick: 32
  lines:
    # TOTAL 模式必须保留 {total}。
    total: "&c&l-{total}"
    # BREAKDOWN 模式必须保留 {physical}、{spell}、{true}。
    breakdown: "&c物理 {physical} &d法术 {spell} &f真实 {true}"

combat-effects:
  # 原版受伤动画。
  hurt-animation: true
  # 受伤声音。
  hurt-sound: true
  # 攻击击退。
  knockback: true
  # 受伤粒子。
  particles: true
  # 每 tick 最多播放多少次粒子效果,可填 0~256;填 0 可完全关闭。
  maximum-particle-bursts-per-tick: 64