跳转到内容

配置文件说明 (common.json)

配置文件位于:

config/stylizeddamage/common.json

如果配置文件不存在,模组首次加载时会自动生成默认配置。

配置选项

selectors — 选择器配置

选择器决定「什么伤害使用什么样式」。采用三层匹配机制:

  1. 第一层:按伤害数值区间分流(可选)
  2. 第二层:按受伤目标类型分流(可选)
  3. 第三层:按伤害类型匹配(match 数组)
json
"selectors": {
  "common": {
    "common": [
      { "match": ["*"], "style": "default" }
    ]
  }
}

区间 Key 格式

格式含义示例
"common"不满足任何区间时的兜底
"[min,max]"闭区间"[0,50]"
"[min,...]"min 及以上"[50,...]"
"[...,max]"max 及以下"[...,10]"

分支路径

分支命中条件
player.yourTeam目标为玩家且与自己同队
player.otherTeam目标为玩家且与自己不同队
player.common目标为玩家但无队伍信息
mob.hostile目标为敌对生物
mob.passive目标为被动生物
mob.common目标为生物但无法判断敌友
common以上均不匹配时的兜底

match 数组

  • 每个选择器的 match 数组内的条件之间是「或」的关系
  • 支持伤害类型 ID:"minecraft:in_fire""minecraft:fall"
  • 支持标签:"#minecraft:is_fire""#minecraft:bypasses_armor"(启动时自动展开为具体伤害类型)
  • 支持伪伤害类型:"heal"(治疗)、"absorption"(吸收)、"kill"(击杀)
  • 支持暴击:"critical"
  • 通配符:"*" 匹配所有

完整示例

jsonc
"selectors": {
  // 区间:[50,...] — 高伤害走特殊样式
  "[50,...]": {
    "common": [
      { "match": ["*"], "style": "high_damage" }
    ]
  },
  // 区间:common — 常规伤害
  "common": {
    // 玩家分支
    "player": {
      "yourTeam": [
        { "match": ["*"], "style": "friendly" }
      ],
      "otherTeam": [
        { "match": ["critical"], "style": "critical" },
        { "match": ["*"], "style": "enemy" }
      ]
    },
    // 生物分支
    "mob": {
      "hostile": [
        { "match": ["minecraft:in_fire"], "style": "fire" },
        { "match": ["minecraft:magic"], "style": "magic" },
        { "match": ["*"], "style": "default" }
      ],
      "passive": [
        { "match": ["*"], "style": "default" }
      ]
    },
    // 兜底
    "common": [
      { "match": ["*"], "style": "default" }
    ]
  }
}

displayFilter — 显示过滤器

控制「哪些伤害需要显示跳字」。

json
"displayFilter": {
  "mode": "byTarget",
  "hideSelfDamage": true,
  "bySource": { ... },
  "byTarget": { ... }
}
配置项类型默认值说明
mode字符串"byTarget"判断方案:"bySource""byTarget"
hideSelfDamage布尔值true隐藏自身受到的伤害

bySource(基于伤害来源)

来源同队异队
playerfalsefalse
mob.hostilefalse
mob.passivefalse
otherfalse

byTarget(基于受伤目标,默认)

目标同队异队
playertruetrue
mob.hostiletrue
mob.passivetrue
othertrue

displayOpacity — 全局透明度

伤害来源控制跳字透明度(0.0 = 全透明,1.0 = 完全不透明)。

json
"displayOpacity": {
    "player": 1.0,
    "mobHostile": 0.5,
    "mobPassive": 0.75,
    "other": 1.0
}
配置项类型默认值说明
player浮点数1.0玩家造成的伤害透明度
mobHostile浮点数0.5敌对生物造成的伤害透明度
mobPassive浮点数0.75友善生物造成的伤害透明度
other浮点数1.0其他来源(环境等)的透明度

这个透明度乘在动画透明度之上。比如动画透明度为 0.8,mobHostile 为 0.5,最终渲染 = 0.8 × 0.5 = 0.4。

伤害显示设置

配置项类型默认值说明
minDamageDisplay浮点数0.1低于此值的伤害不显示跳字
maxActiveNumbers整数999屏幕上同时显示的最大跳字数
showHealing布尔值true是否显示治疗数字
showAbsorption布尔值true是否显示吸收数字

距离缩放

配置项类型默认值说明
distanceScaleSegment浮点数10.0距离倍数段(格)
distanceScaleFactor浮点数0.2每段的缩小系数
distanceScaleMin浮点数0.3最小缩放倍率
maxDisplayDistance浮点数64.0最大显示距离(格)

距离缩放公式:

最终缩放 = clamp(fontSize × (1 - (距离 ÷ 距离倍数段) × 缩小系数), 最小缩放, fontSize)
  • 距离 0 格 → 100% 大小
  • 每 10 格缩小 0.2 倍
  • 最小 0.3 倍
  • 超过 64 格不显示

totalDamage — 总伤害面板

配置项类型默认值说明
enabled布尔值true是否启用总伤害面板
resetTimeout整数100无伤害后重置延迟(tick,20 tick = 1 秒)
maxTrailCount整数20尾随伤害最大条数
baseFontSize浮点数2.0基础字体大小倍率
sizeOffsetPerThousand浮点数0.5每 100 伤害字体增量
sizeOffsetMax浮点数3.0最大字体倍率
positionX浮点数-0.15水平偏移(窗口宽度的比例,负值左移)
positionY浮点数0.15垂直偏移(窗口高度的比例,正值下移)
enableEntryAnimation布尔值true总伤害数字是否播放入场动画
enableExitAnimation布尔值true总伤害数字是否播放退场动画
enableBounceAnimation布尔值true总伤害数字数值变化时是否弹跳
enableTrailEntryAnimation布尔值true尾随条目是否从右侧滑入
enableTrailExitAnimation布尔值true尾随条目是否向左滑出
bounceScalePeak浮点数1.4弹跳动画峰值缩放(1.4 = 顶峰时放至 140% 大小)
labelText字符串"Damage"总伤害数字上方显示的标签文本,设为空字符串 "" 可隐藏

字体大小公式:

clamp(baseFontSize + floor(总伤害 ÷ 100) × sizeOffsetPerThousand, baseFontSize, sizeOffsetMax)

面板选择器(仅按伤害区间分流):

json
"selectors": {
  "common":    { "style": "total" },
  "[100,...]":  { "style": "total_high" },
  "[1000,...]": { "style": "total_insane" }
}

伪伤害类型

除了原版伤害类型外,模组提供了三个内置伪伤害类型:

ID触发条件说明
heal实体被治疗showHealing: true
absorption玩家吸收值增加showAbsorption: true
kill伤害致命不计入总伤害和尾随列表,始终置顶渲染。使用匹配样式的 killText 字段代替伤害数字

kill 类型示例

json
"selectors": {
  "common": {
    "common": [
      { "match": ["kill"], "style": "kill_style" },
      { "match": ["*"], "style": "default" }
    ]
  }
}

kill 跳字不会出现在总伤害面板和尾随列表中,仅用于视觉效果。

重载配置

修改配置后使用命令热重载:

/stylizeddamage reload

基于 MIT 许可发布