GTDamage - 重新定义你的伤害显示 | 属性插件兼容 | 显示样式 | 怪物血条 | 新增隐藏伤害粒子 | 让你的服务器伤害显示更加多样化 [1.12-1.21+]

原创 工具 GTDamage - 重新定义你的伤害显示 | 属性插件兼容 | 显示样式 | 怪物血条 | 新增隐藏伤害粒子 | 让你的服务器伤害显示更加多样化 [1.12-1.21+] 2.0.112

请登录后获取
版权类型
原创
插件中文名称
GT伤害
插件英文名称
GTDamage
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Folia
  4. Purpur
  5. PufferFish
  6. Leaves
  7. 其他核心
语言支持
中文(简体)
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
  9. 1.13
  10. 1.12

[MD] --- # ⚔ GTDamage 插件介绍与使用教程 > 一个轻量、可扩展的伤害全息显示插件 > 支持主流属性插件自动适配、客户端 / 服务端双渲染 --- ### BUG反馈与需求提出Q群: `985955382` ### 群内可领取福利插件 以及GTDungeonTeam(一款兼容市面上主流UI引擎和副本的组队插件)支持跨服组队 ## 📖 插件简介 **GTDamage** 是为 Minecraft `1.17 ~ 1.21+` 服务器设计的伤害数字显示插件。 在实体受到伤害时,于其头顶飘出一段彩色伤害数字,支持物理、暴击、魔法、真实、技能、远程、治疗等多种伤害类型,**每种类型可独立配置颜色、前缀、后缀与显示倍率**。 ### ✨ 核心特性 | | 特性 | 说明 | | :---: | --- | --- | | 🔌 | 多属性插件自动适配 | CraneAttribute / SX-Attribute / AttributePlus / MMOItems / EcoSkills | | 🎨 | 多套渲染方案 | ArcartX 客户端、PaiUI 客户端、发包、服务端全息字,按优先级互斥选择 | | 🧩 | 伤害类型完全自定义 | 配置文件加一行就有新类型,无需改代码 | | 🅰️ | 字体映射 + 权限分级 | VIP / 自定义字体包,权重自动取最高 | | 🔮 | PlaceholderAPI 扩展 | `%gtdamage_hide_self%` 等占位符 | | ⚡ | 全异步处理 | 性能友好,不卡主线程 | --- ## 🔌 可选依赖 - `CraneAttribute` / `SX-Attribute` / `AttributePlus` / `MMOItems` / `EcoSkills` 任意一个或多个 ### 🎯 可选 - `PlaceholderAPI` ─ 占位符扩展 - `Adyeshach` ─ 调用Adyeshach显示全息字(比实体更流畅) - `ArcartX` 插件 + 客户端 ─ 客户端渲染 - `PaiUI` 插件 + 客户端 ─ 客户端渲染 ### 📝 安装步骤 1. 将插件本体放入 `plugins/` 目录 2. 启动服务器,首次运行自动生成 `plugins/GTDamage/config.yml` 3. 按需修改 `config.yml` 4. 执行 `/gtdamage reload` 重载配置 > 💡 **提示:** 软依赖(`CraneAttribute`、`AttributePlus`、`SX-Attribute`、`PlaceholderAPI`、`ProtocolLib`)插件会自动检测,非必须安装。 --- ## 💬 命令列表 > **主命令:** `/gtdamage`(别名 `/gtd`、`/damagehologram`) | ⚙️ 子命令 | 🔑 权限 | 📋 说明 | | --- | --- | --- | | `/gtdamage help` | — | 📜 显示帮助 | | `/gtdamage info` | `gtdamage.info` | 查看当前适配器、检测到的插件、伤害类型数 | | `/gtdamage reload` | `gtdamage.admin` | 重载配置文件 | | `/gtdamage clear` | `gtdamage.admin` | 清除所有已生成的全息字 | | `/gtdamage hide` | `gtdamage.hide` | 玩家切换是否显示自己受到的伤害数字 | | `/gtdamage debug` | `gtdamage.admin` | 切换调试模式(控制台输出 provider 选择与渲染日志) | | `/gtdamage setting <玩家名>` | `gtdamage.admin` | 查看某玩家是否隐藏了伤害显示 | --- ## 🔮 PlaceholderAPI 变量 > 需安装 PlaceholderAPI,占位符标识符为 `gtdamage` | 占位符 | 返回值 | 📋 说明 | | --- | --- | --- | | `%gtdamage_hide_self%` | `true` / `false` | 👤 玩家是否隐藏了自己受到的伤害 | | `%gtdamage_hide_others%` | `true` / `false` | 👥 玩家是否隐藏看到的他人伤害 | --- ## ⚙️ 配置详解 > 📁 配置文件路径:`plugins/GTDamage/config.yml` ### 伤害类型 > 每种伤害类型独立配置颜色、前缀、后缀、显示倍率。 ```yaml damage-types: physical: color: "§f" prefix: "" suffix: "" scale: 1.0 scale-enabled: false critical: color: "§6" prefix: "§l✦ " suffix: "§r" scale: 1.5 # 原数值× 1.5 显示 scale-enabled: true # 是否启用倍率 magic: color: "§b" prefix: "✦ " suffix: "" scale: 1.0 scale-enabled: false true: color: "§c" prefix: "§l⚔ " suffix: "§r" skill: color: "§d" prefix: "⚡ " suffix: "" ranged: color: "§e" prefix: "➤ " suffix: "" heal: color: "§a" prefix: "❤ " suffix: "" ``` **🧩 添加自定义类型:** 在 `damage-types:` 下加一段即可,名字任意(如 `curse`、`bleed`),适配器可返回该类型名。 --- ### 🪧 全息字设置 ```yaml hologram: display-time: 60 # 显示时长(tick,60=3秒) height-offset: 2.5 # 高度偏移(实体头顶多少格) random-offset: # 随机偏移避免重叠 enabled: true x: 0.5 z: 0.5 animation: #动画效果下个版本更新 enabled: false types: [float] # float=上浮动画 float-speed: 0.02 float-distance: 0.8 ``` --- ### 📐 显示格式与过滤 ```yaml format: decimal-places: 1 # 小数位数(0=整数) thousands-separator: "," # 千位分隔符,留空禁用 decimal-separator: "." # 小数点符号 min-display-value: 0.1 # 最小显示值 range: view-distance: 30 # 多少格外不渲染 only-for-combatants: false # true=只让攻击者/被攻击者看到 filter: ignored-damage-causes: [] # 大写,如 [FALL, DROWNING, FIRE_TICK] ignored-entity-types: [] # 实体类型,如 [CREEPER, ZOMBIE] min-damage: 0.0 # 低于此值的伤害不显示 ignore-self-damage: true # 忽略玩家对自己的伤害 ``` --- ### 🅰️ 字体映射(搭配材质包) ```yaml font-mapping: enabled: false papi-support: false # 启用后会先解析 PAPI 占位符 groups: default: # 默认组(无权限要求) permission: "" weight: 0 mapping: "0": "零" "1": "一" "2": "二" .... vip: # VIP 字体(需权限 gtdamage.font.vip) permission: "gtdamage.font.vip" weight: 10 mapping: "0": "𝟎" "1": "𝟏" .... legend: # 传说字体(需权限 gtdamage.font.legend) permission: "gtdamage.font.legend" weight: 20 mapping: "0": "𝟘" "1": "𝟙" .... ``` > 💡 **机制:** 玩家拥有多个权限组时取权重最高的那一组。 --- ### 🛡️ 兼容模式与性能 ```yaml compatibility: enabled: false # 多个属性插件同时存在时开启 plugin-priority: # 适配器优先级(数字越大越优先) CraneAttribute: 80 SX-Attribute: 60 AttributePlus: 50 LegendAttribute: 40 performance: max-holograms: 100 # 最多同时存在的全息字 cleanup-interval: 100 # 清理检查间隔(tick) async-processing: true # 强烈建议开启 max-events-per-tick: 50 # 每 tick 最多处理多少伤害事件 ``` > 💡 **提示:** 更详细的配置详见 `plugins/GTDamage/config.yml` 配置文件内有更为详细的注释 --- [/MD]

[MD] --- ### 🧰 核心 API:GTDamageAPI 入口类:`gt.plugin.gtdamage.api.GTDamageAPI`(Kotlin object / Java 静态类) #### 🎯 全息字显示 | 方法 | 用途 | 📋 说明 | | --- | --- | --- | | `showDamageHologram(entity, damage, type)` | 单行伤害 | 自动按 `type == "critical"` 判断暴击 | | `showDamageHologram(entity, damage, type, isCritical)` | 单行伤害(自定义暴击) | 暴击标记完全可控 | | `showMultipleDamageHolograms(entity, list)` | 多行伤害(Kotlin) | `List<Pair<Double, String>>` | | `showMultipleDamageHolograms(entity, vararg)` | 多行伤害(Java) | 变长参数 | | `showHealHologram(entity, amount)` | 治疗数字 | 等同于 `showDamageHologram(.., "heal", false)` | **Kotlin 调用示例:** ```kotlin import gt.plugin.gtdamage.api.GTDamageAPI // 单行 GTDamageAPI.showDamageHologram(victim, 128.0, "critical") // 多行(技能连击场景) GTDamageAPI.showMultipleDamageHolograms(victim, listOf( 100.0 to "critical", 50.0 to "fire", 30.0 to "lightning" )) // 治疗 GTDamageAPI.showHealHologram(player, 45.0) ``` **Java 调用示例:** ```java import gt.plugin.gtdamage.api.GTDamageAPI; import org.bukkit.entity.LivingEntity; GTDamageAPI.showDamageHologram((LivingEntity) victim, 128.0, "critical"); // 多行 GTDamageAPI.showMultipleDamageHolograms( (LivingEntity) victim, new Object[]{100.0, "critical"}, new Object[]{50.0, "fire"} ); ``` **Groovy 脚本示例(Denizen / sx-loc 等):** ```groovy // 单行 GTDamageAPI.showDamageHologram(victim, 256.0, "skill") // 多行(带变量) def damages = [ [200.0, "critical"], [80.0, "fire"], [30.0, "ice"] ] GTDamageAPI.showMultipleDamageHolograms(victim, damages) ``` --- #### ⚙️ 配置获取 | 方法 | 返回 | 📋 说明 | | --- | --- | --- | | `getTypeWeight(type)` | `Int` | 读取 `crane-attribute.type-weights.xxx`,默认 1 | | `getTypeConfig(type)` | `DamageTypeConfig?` | 颜色 / 前缀 / 后缀 / 倍率 | | `getDisplayTypeByAttribute(attrName)` | `String` | 属性名 → 显示类型,未找到返回 `"physical"` | ```kotlin val cfg = GTDamageAPI.getTypeConfig("critical") if (cfg != null) { println("暴击颜色: ${cfg.color}") println("暴击前缀: ${cfg.prefix}") println("暴击倍率: ${cfg.scale}") } ``` --- #### 🔌 CraneAttribute 集成 | 方法 | 返回 | 📋 说明 | | --- | --- | --- | | `isCraneAttributeAvailable()` | `Boolean` | CA 是否已安装并启用 | | `getCraneAttributeAdapter()` | `Any?` | 适配器名("CraneAttribute" / null) | --- #### 👁️ 玩家可见性控制 | 方法 | 用途 | | --- | --- | | `hideDamageForPlayer(player)` | 隐藏该玩家**自己受到的**伤害 | | `showDamageForPlayer(player)` | 恢复显示 | | `isDamageHiddenForPlayer(player)` | 查询是否隐藏 | | `hideOtherDamageForObserver(player)` | 隐藏该玩家**看到的他人**伤害 | | `showOtherDamageForObserver(player)` | 恢复显示 | > 💡 **提示:** 这俩方法会立即生效,且**不写入配置**。重启失效——需要持久化请自己处理(重连时再调一次即可)。 --- [/MD]
[MD]## ❓ 常见问题[/MD]
[MD] --- ### ❓ Q1:开了 ArcartX 之后数字不显示? 检查三点: ✅ 配置文件 `display.arcartx: true` ✅ 服务器已装 ArcartX 插件 ✅ 玩家已装 ArcartX 客户端 > 🐛 开 `debug` 看控制台 provider 选择日志。 --- ### ❓ Q2:PaiUI 飘字出不来? PaiUI 必须在 `DamageDisplay.yml` 中启用飘字功能,GTDamage 才能通过反射调用。否则会**静默回退**到原生发包。 --- ### ❓ Q3:全息字和原版数字会重复? GTDamage 通过 `EntityDamageByEntityEvent` 的 **MONITOR** 优先级触发。 关闭其他伤害显示插件的同类功能即可。 --- [/MD]
  • 喜欢
反馈: 羽默Yumo

最新更新

  1. 2.0.112 更新

    修复怪物血条延迟问题 优化伤害字体动画流畅度 新增怪物血条模式 可设置发包修改名字显示血条(不影响怪物本体) 版本兼容增加向下兼容倒1.12
  2. 2.0.104 更新内容

    修复了AP属性监听异常的问题 增加移除伤害红心选项 增加怪物血条 更新需删掉旧版本重新生成配置或将以下字段添加到config中任意位置 # 原版伤害爱心粒子控制(需要 ProtocolLib)...
  3. 2.0.103 更新内容

    新增伤害隐藏 /gtd hide self → 隐藏自己作为受害者的伤害 /gtd hide other → 隐藏看别人伤害 /gtd hide status → 查看当前状态
后退
顶部 底部