Skip to content

缩写规则

LySimplePlaceholder 用于将数字格式化为带中文单位的文本,也可以通过 PlaceholderAPI 变量、聊天数据包、物品 Lore、BossBar 和实体名称进行数字缩写。

基本信息

项目内容
插件版本1.1.0
PlaceholderAPI 变量标识lsp
主命令/lsp
可选依赖PlaceholderAPI、ProtocolLib、MythicMobs
支持版本1.7.101.8.81.11.21.12.21.13.21.14.41.15.21.16.51.17.11.18.21.19.21.19.41.20.11.20.21.20.3

PlaceholderAPI 和 ProtocolLib 用于对应功能的注册与数据包处理。未安装对应依赖时,相关功能不会生效。

指令

指令权限要求作用
/lsp查看当前可用指令提示。
/lsp reloadOP重新读取配置文件;核心模式下还会重新注册相关数据包监听器。
/lsp updateOP延迟 1 tick 刷新执行者自己的背包和装备栏物品显示。

/lsp update 只能由玩家执行,不能由控制台执行。该指令主要用于刷新已经发送到客户端的物品显示。

插件没有注册独立的权限节点,管理指令通过 Bukkit 的 OP 状态判断。

数字格式

插件支持普通数字、合法的逗号千分位数字和科学计数法数字。

数字格式输入示例是否识别
整数10000
小数12500.75
负数-10000是,但不同替换入口的处理存在差异。
逗号千分位10,0001,000,000.5
科学计数法1e81.25E+12
非标准逗号分组10,00
混合文本金币10000不能直接作为 %lsp_...% 的数字参数。

数字参数必须完整匹配数字格式。带有额外文字的内容不会被 PlaceholderAPI 数字变量直接识别。

PlaceholderAPI 变量

LySimplePlaceholder 注册的 PlaceholderAPI 标识为 lsp

使用其他 PlaceholderAPI 变量时,需要去掉原变量首尾的 %,再放入 %lsp_...% 中。

原变量缩写变量
%ap_damage:min%%lsp_ap_damage:min%
%player_health%%lsp_player_health%

也可以直接把数字写入变量:

变量返回示例
%lsp_10000%1万
%lsp_100000000%1亿
%lsp_10,000%1万
%lsp_1e8%1亿

使用 %lsp_原变量内容% 时,玩家对象不能为空。插件会先解析内部 PlaceholderAPI 变量,再对返回值进行数字格式化。

如果内部变量不存在,插件会返回重新补全百分号后的原文本。如果内部变量存在,但返回内容不是有效数字,数字转换结果为 0

提示

缩写变量只适合显示,不适合继续参与数值计算。返回结果可能包含 亿 等中文单位,本质上是一段文本。

缩写触发条件

abbreviation-value 控制开始尝试缩写时所需的最小整数位数。

yaml
abbreviation-value: 4

插件会先将数值格式化为无小数整数,再检查整数文本长度是否达到 abbreviation-value。数字还必须达到至少 10000,能够匹配到中文单位,才会真正追加单位。

因此,默认值 4 下:

  • 1000 不会转换为带单位文本,因为插件没有“千”单位。
  • 10000 可以转换为 1万
  • 第一个实际产生中文单位的正整数是 10000

如果将 abbreviation-value 设置为 8,插件会从八位整数开始尝试缩写,但八位数仍可能使用 。单位由数字本身的数量级决定,不会因为配置值较大而强制使用 亿

文本扫描功能还会检查当前数字是否确实存在可用中文单位。未达到单位条件的数字会保持原文本。

单位顺序

插件会选择当前正数能够使用的最大单位,再用原数值除以该单位的换算值。

数值起点单位换算值
10^410000
10^8亿100000000
10^121.0E12
10^161.0E16
10^201.0E20
10^241.0E24
10^281.0E28
10^321.0E32
10^361.0E36
10^401.0E40
10^441.0E44
10^481.0E48
10^52恒河沙1.0E52
10^56阿僧祇1.0E56
10^60那由他1.0E60
10^64不可思议1.0E64
10^68无量1.0E68
10^72大数1.0E72

超过 10^72 的数值仍使用“大数”作为最大单位,不会继续生成新的单位名称。

小数格式

默认小数格式由 format 控制:

yaml
format: '%.2f'

指定 PlaceholderAPI 变量可以单独设置格式:

yaml
designated-placeholder-format:
  '%ap_damage:min%': '%.0f'
格式效果
%.0f不保留小数。
%.1f最多保留一位小数。
%.2f最多保留两位小数。

格式必须符合 %.数字f。无法识别的格式会按两位小数处理。

插件使用不补零的小数格式,因此 1.50 会显示为 1.5,不会强制显示为 1.50。需要舍弃的小数会按向零方向截断,而不是四舍五入。

未进入中文单位缩写的整数会按无小数格式返回。未进入缩写的小数使用当前配置的格式处理。

负数处理

当前版本对负数的两种入口处理不同:

入口处理规则
直接使用 %lsp_-10000%能识别为数字,但不会选择中文大数单位,通常返回格式化后的原负数。
聊天、物品 Lore、BossBar、实体名称扫描扫描器匹配数字部分,前面的负号会保留,因此文本中的 -10000 可显示为 -1万

需要统一显示效果时,应避免直接把负数作为 %lsp_...% 的纯数字参数。

文本扫描规则

聊天、物品 Lore、BossBar 和实体名称功能会扫描文本中的数字片段。每个数字片段都会独立检查,不满足缩写条件的内容保持不变。

扫描时支持:

  • 普通整数和小数。
  • 合法的逗号千分位数字。
  • eE 的科学计数法。
  • 一段文本中出现的多个数字。

插件会在提取数字前排除以下内容,避免将格式代码中的数字误认为需要缩写的数值:

  • 传统颜色代码和格式代码。
  • 六位十六进制颜色文本。
  • 八位十六进制颜色文本。
  • 聊天扫描中的 Unicode 转义文本。

自动替换范围

自动替换功能通过 ProtocolLib 数据包处理。各范围拥有独立的启用条件和关键词规则。

范围触发条件处理内容
聊天消息消息包含 message-replace-key 中任意关键词。扫描聊天数据包中的数字片段。
物品描述item-number-abbreviationtrue,且物品未命中整体黑名单。只处理物品 Lore,不修改物品显示名称。
BossBarbossbar-number-abbreviationtrue,且文本包含 bossbar-keyword 中任意关键词。处理 BossBar 文本中的数字片段。
全息与实体名称hologram-number-abbreviationtrue,且名称包含 hologram-keyword 中任意关键词。处理实体元数据中的名称文本。实际实现使用 1.12.2 的实体元数据类型。

聊天消息

聊天消息只有在包含 message-replace-key 中至少一个字符串时,才会执行数字扫描。此范围处理服务器发送的聊天数据包,包括插件发送的消息。

关键词使用包含匹配,不要求整条消息与关键词完全相同。配置中的 & 颜色符号会转换为内部颜色占位符后参与匹配。

默认配置如下:

yaml
message-replace-key:
  - '系统'

物品 Lore

物品缩写只处理发送给客户端的物品 Lore。物品显示名称本身不会被缩写,但会参与整体黑名单检查。

规则效果
物品显示名称包含 item-abbreviation-black-list 内容整个物品不处理。
任意 Lore 行包含 item-abbreviation-black-list 内容整个物品不处理。
某一 Lore 行包含 item-line-black-list 内容仅跳过该行,其他 Lore 行仍可处理。

黑名单中的 & 颜色代码会转换为 § 后再进行包含匹配。

插件会克隆发给客户端的物品并修改显示内容,不直接修改服务器中的原物品。缩写前的名称和 Lore 会写入物品 NBT,用于玩家在创造模式提交该物品时恢复原始内容,并在恢复后移除临时 NBT。

物品恢复依赖当前 Minecraft 版本对应的 NMS NBT 实现。项目内提供了以下版本的 NBT 适配:

1.7.101.8.81.11.21.12.21.13.21.14.41.15.21.16.51.17.11.18.21.19.21.19.41.20.11.20.21.20.3

关闭物品缩写后,已经发送到客户端的显示内容不会立即自动恢复。配置文件说明要求通过重启服务器恢复;必要时也可以由管理员玩家执行 /lsp update,延迟 1 tick 刷新自己的背包和装备栏物品。

BossBar

BossBar 数字缩写默认关闭:

yaml
bossbar-number-abbreviation: false

开启后,只有 BossBar 数据包中的 JSON 文本包含 bossbar-keyword 中任意关键词时,才会执行数字缩写。关键词使用包含匹配。

默认关键词如下:

yaml
bossbar-keyword:
  - '生命'

全息与实体名称

该功能读取实体元数据中的名称字段,可处理非发包全息及怪物名称。只有名称包含 hologram-keyword 中任意关键词时才会处理。

该功能默认关闭:

yaml
hologram-number-abbreviation: false

默认关键词如下:

yaml
hologram-keyword:
  - '魔王'

项目实现直接使用 1.12.2 的 NMS 实体元数据类型,因此全息与实体名称缩写不能仅根据其他版本存在 NBT 适配,就视为跨版本全息支持。

配置项

配置文件为插件目录下的 config.yml

数字格式配置

配置键类型默认值说明
format字符串'%.2f'默认小数格式。
designated-placeholder-format对象包含 %ap_damage:min%%.0f 示例为指定 PlaceholderAPI 变量单独设置小数格式。
abbreviation-value数字4开始尝试缩写所需的最小整数位数。

示例:

yaml
format: '%.2f'
designated-placeholder-format:
  '%ap_damage:min%': '%.0f'
abbreviation-value: 4

聊天配置

配置键类型默认值说明
message-replace-key字符串列表['系统']聊天消息包含列表中任意字符串时,才执行数字扫描。

示例:

yaml
message-replace-key:
  - '系统'

物品配置

配置键类型默认值说明
item-number-abbreviation布尔值true是否缩写发送给客户端的物品 Lore。
item-abbreviation-black-list字符串列表['玩家属性']物品名称或任意 Lore 行包含列表内容时,整个物品不处理。
item-line-black-list字符串列表['QQ群:']Lore 某一行包含列表内容时,仅跳过该行。

示例:

yaml
item-number-abbreviation: true
item-abbreviation-black-list:
  - '玩家属性'
item-line-black-list:
  - 'QQ群:'

BossBar 配置

配置键类型默认值说明
bossbar-number-abbreviation布尔值false是否启用 BossBar 数字缩写。
bossbar-keyword字符串列表['生命']BossBar 文本包含列表中任意字符串时才处理。

示例:

yaml
bossbar-number-abbreviation: false
bossbar-keyword:
  - '生命'

全息配置

配置键类型默认值说明
hologram-number-abbreviation布尔值false是否启用全息与实体名称数字缩写。
hologram-keyword字符串列表['魔王']实体名称包含列表中任意字符串时才处理。

示例:

yaml
hologram-number-abbreviation: false
hologram-keyword:
  - '魔王'

重载影响

执行 /lsp reload 后,插件会重新读取 config.yml,更新 abbreviation-value,并重新注册聊天、物品、BossBar 和全息数据包监听器。

重载时会先移除插件原有的数据包监听器,再按照当前配置重新注册:

  • 聊天监听始终注册。
  • item-number-abbreviationtrue 时注册物品监听和创造模式物品恢复监听。
  • bossbar-number-abbreviationtrue 时注册 BossBar 监听。
  • hologram-number-abbreviationtrue 时注册全息与实体名称监听。

物品缩写具有客户端显示状态。仅重载配置不保证已经显示为缩写的物品立即恢复,特别是关闭 item-number-abbreviation 时,应按配置说明重启服务器,或由管理员玩家执行 /lsp update 刷新自身背包和装备栏显示。

依赖与兼容性

依赖用途
PlaceholderAPI注册 %lsp_...% 变量,并解析被嵌套的 PlaceholderAPI 变量。
ProtocolLib处理聊天、物品、BossBar 和实体元数据数据包。
MythicMobs项目声明为软依赖,配置示例中的 BossBar 缩写可用于兼容相关血量显示场景。

项目没有使用 MySQL 存储,也不需要安装 LyMySQLCore。

如果服务器版本不在项目提供的 NMS 适配列表中,物品 NBT 处理和相关物品恢复功能可能无法初始化。