QyDamageFont – 伤害全息字体

QyDamageFont – 伤害全息字体

插件作用

QyDamageFont 用于把伤害数字显示为 DragonCore 字体图片,并以虚拟全息的方式显示在受伤实体附近。插件支持多套字体方案,玩家可在 DragonCore GUI 中切换自己已拥有的字体。

前置要求

前置

说明

DragonCore

负责 FontConfig 图片字体和 GUI

QySQL

保存玩家已拥有字体和当前选择

Spigot/Paper 1.12.2

插件运行环境

安装步骤

  1. QyDamageFont-1.0.0.jar 放入服务端 plugins 目录。
  2. 确认 DragonCoreQySQL 已放入 plugins 并能正常启动。
  3. 重启服务器生成配置文件。
  4. 将字体图片放入 DragonCore 客户端资源包对应路径。
  5. 根据需要调整 plugins/QyDamageFont/config.yml

字体图片路径

默认配置使用两套字体:

字体方案

图片路径

default

fonts/default/0.pngfonts/default/9.png

custom

fonts/custom/0.pngfonts/custom/9.png

小数点、逗号和负号当前使用示例路径:

符号

default

custom

小数点

QyDamageFont/default/dot.png

QyDamageFont/custom/dot.png

逗号

QyDamageFont/default/comma.png

QyDamageFont/custom/comma.png

负号

QyDamageFont/default/minus.png

QyDamageFont/custom/minus.png

如果不需要小数点,可把 hologram.number-format 设为 "0"

FontConfig 注册

插件默认会自动下发 FontConfig:

font-config:
  auto-register: true
  register-on-gui-open: true

每套字体的 FontConfig 单独放在 plugins/QyDamageFont/fonts/

文件

对应字体方案

fonts/default.yml

default

fonts/custom.yml

custom

文件内容复刻 DragonCore 原生 FontConfig.yml 格式。也可以把这些文件里的节点复制到 plugins/DragonCore/FontConfig.yml,交给 DragonCore 原生配置管理。

GUI 分类与分页

字体 GUI 现在支持按分类浏览。每个字体方案在 config.yml 里可配置:

fonts:
  default:
    category: "BASIC"

不填时默认归入 ALL

GUI 里分类按钮会请求:

方法.发包('QyDamageFont','damage_font','load',分类)
方法.发包('QyDamageFont','damage_font','load',分类,页数,每页数量)

规则如下:

  • ALL 显示全部字体
  • 只传分类时,显示该分类全部字体
  • 同时传页数和每页数量时,按分页截取
  • 页数从 1 开始

界面变量会同步:

  • damage_font当前分类
  • damage_font当前页
  • damage_font最大页
  • damage_font每页数量

常用指令

指令

权限

说明

/qdf gui

qydamagefont.use

打开字体切换界面

/qdf fontconfig

qydamagefont.use

手动向客户端下发 FontConfig

/qdf reload

qydamagefont.admin

重载插件配置,并向在线玩家重新下发 DragonCore GUI 文件

/qdf give <玩家> <字体>

qydamagefont.admin

给玩家授权字体

/qdf remove <玩家> <字体>

qydamagefont.admin

移除玩家字体

/qdf set <玩家> <字体>

qydamagefont.admin

设置玩家当前字体

AttributePlus 脚本接入

plugins/AttributePlus/script.ymlscriptTools 下注册:

scriptTools:
  "QyDamageFont": "com.qydamagefont.api.QyDamageFontScriptAPI"

JS 属性脚本中调用:

QyDamageFont.show(entity, damage)
QyDamageFont.show(entity, damage, "custom")
## 1. 注册脚本工具类

在 `plugins/AttributePlus/script.yml` 的 `scriptTools` 下加入:

```yaml
scriptTools:
  "QyDamageFont": "com.qydamagefont.api.QyDamageFontScriptAPI"
```

如果原来已经有 `scriptTools`,只追加这一行即可,不要覆盖原有内容。

## 2. JS 属性脚本调用

示例:攻击触发时用 QyDamageFont 显示本次脚本伤害。

```javascript
var priority = 103
var combatPower = 5.0
var attributeName = "字体伤害"
var attributeType = "ATTACK"
var placeholder = "qdf_damage"

function onLoad(attr) {
    return attr
}

function runAttack(attr, attacker, entity, handle) {
    var damage = attr.getRandomValue(attacker, handle)
    if (damage <= 0) {
        return false
    }

    attr.addDamage(attacker, damage, handle)

    // 使用观察者自己的当前字体。
    QyDamageFont.show(entity, damage)

    // 或强制使用某个字体方案。
    // QyDamageFont.show(entity, damage, "custom")

    return true
}
```

## 3. API 方法

| 方法 | 说明 |
| --- | --- |
| `QyDamageFont.show(entity, value)` | 在实体位置显示数值,使用每个观察者当前选择的字体 |
| `QyDamageFont.show(entity, value, fontId)` | 在实体位置显示数值,强制使用指定字体方案 |
| `QyDamageFont.show(entity, valueText, fontId)` | 字符串数值版本,会先转成数字 |
| `QyDamageFont.showAt(location, value, fontId)` | 在指定 Bukkit Location 显示数值 |

## 4. 注意事项

- `entity` 必须是 `LivingEntity`。
- `fontId` 留空或不传时,会按每个观察者自己的字体选择显示。
- `fontId` 指定为 `custom`、`default` 等时,会强制用该字体方案,不检查玩家是否拥有。
- API 内部会自动切回 Bukkit 主线程,AP 脚本不用自己处理线程。
- 如果 AP 脚本已经调用 `attr.addDamage(...)`,QyDamageFont 这里只负责显示,不会再次造成伤害。

字体授权

默认字体 default 是兜底字体,玩家始终可用。

其他字体需要管理员授权:

/qdf give 玩家名 custom

玩家获得字体后,可使用:

/qdf gui

在界面中切换字体。

新增字体方案

fonts 下新增一个方案节点,例如:

fonts:
  blue:
    display: "&9蓝色数字"
    description:
      - "&7蓝色伤害字体"
    permission: ""
    fallback: false
    color: "&f"
    prefix: ""
    suffix: ""
    font-file: "blue.yml"
    format:
      0: ""
      dot: ""
      comma: ""
      minus: ""

然后创建 plugins/QyDamageFont/fonts/blue.yml

:
  path: "fonts/blue/0.png"
  width: 9
  height: 12
  xOffset: 0
  yOffset: 0
  fontWidth: 8
  color: false

完整字体至少需要配置 0-9。如果开启小数或千位分隔,还需要配置 dotcommaminus。插件也兼容旧写法 "."",""-",但推荐用英文别名,避免 Bukkit YAML 把 . 当路径分隔符。

全息轨迹设置

hologram.mode 控制全息渲染方式:

说明

world-text

使用 DragonCore 世界文本贴图,避免原版名牌灰色背景

armor-stand

使用虚拟 ArmorStand 名牌,兼容稳定但会有客户端自带灰色背景

hologram.common 是两种模式共用参数,例如存在时间、出生偏移、随机偏移、数字格式和过滤条件。
entity-blacklist 可配置不显示全息的实体类型,类型名使用 Bukkit EntityType,例如 ARMOR_STAND

hologram.armor-stand.viewer-radius 是原版名牌模式的服务端发包范围。

hologram.armor-stand.motion 只影响原版名牌模式:

参数

说明

enabled

是否启用服务端位移轨迹

update-interval-ticks

位移刷新间隔

upward-speed

上浮速度

horizontal-speed

横向漂移速度

horizontal-wave

横向波动幅度

hologram.world-text 只影响 DragonCore 世界文本模式:

参数

说明

width / height

世界文本显示尺寸

alpha

透明度

follow-player-eyes

是否跟随玩家视角

glow

是否自发光

through

是否穿透方块

render-on-first

第一人称是否显示

viewer-radius

服务端给该范围内玩家发送 DragonCore 世界文本包

distance

DragonCore 客户端世界贴图渲染距离

hologram.world-text.animation.translate 是 DragonCore 客户端位移动画参数:

参数

说明

enabled

是否启用客户端动画

direction

方向轴,通常用 y 做上下移动

distance

位移距离,负数通常是上浮,正数是下沉

delay

动画延迟

duration

动画时长

cycle-count

循环次数

fixed

是否固定动画行为

reset-time

重置时间

bind-entity

是否绑定实体位置

hologram.world-text.animation.scale 是 DragonCore 客户端缩放动画参数:

参数

说明

enabled

是否启用缩放动画

from-scale

起始缩放倍率,例如 0.5 表示一半大小

to-scale

结束缩放倍率,例如 1.0 表示原始大小

delay

动画延迟

duration

动画时长

cycle-count

循环次数

fixed

是否固定动画行为

reset-time

重置时间

如果伤害频率很高,建议适当调大 armor-stand.motion.update-interval-ticks,或在 world-text 模式下直接降低 hologram.world-text.distance 和文本尺寸。

回血显示设置

settings.heal-font 控制回血全息使用哪套固定字体,留空表示不显示回血全息。

settings.heal-detect 控制直接血量变化兜底检测:

节点

说明

enabled

是否兼容 /heal 或其他插件直接 setHealth 的回血

interval-ticks

检查在线玩家血量变化的间隔,默认 10 tick

自然回血、药水回血等事件型回血会优先走 Bukkit 回血事件;/heal 这类直接改血量的情况才依赖兜底检测。

数据存储

玩家字体数据保存在 QySQL 表 qydamagefont_players 中。表会在插件启动时自动创建。

注意事项

  • 修改 config.ymlfonts/*.ymlgraphical/damage_font.yml 后执行 /qdf reload。该指令会重载服务端缓存,并向在线玩家重新下发 DragonCore GUI 文件。
  • 新增或替换字体图片后,客户端可能需要重载 DragonCore 资源。
  • 字体识别字符建议使用私用区字符,避免和正常聊天文字冲突。
  • 如果图片被颜色影响,保持 color: "&f" 或在显示文本前重置白色。
© 版权声明
THE END
QyDamageFont - 伤害全息字体-清影据点
QyDamageFont – 伤害全息字体
此内容为付费资源,请付费后查看
30
付费资源