📖 基本字体知识

试着用不同的字体发送文本

Minecraft的聊天组件包含许多装饰符,其中之一是字体。大多数字符存储在 minecraft:default 字体中。细字体字符存储在 minecraft:uniform 字体中,附魔台字符存储在 minecraft:alt 字体中。

你可以通过运行简单的命令发送带有字体的文本。很容易发现,不同字体中相同的文本具有不同的形状。

/tellraw @p {"text":"Hello!","font":"minecraft:default"}
/tellraw @p {"text":"Hello","font":"minecraft:uniform"}
/tellraw @p {"text":"Hello","font":"minecraft:alt"}

Minecraft wiki对“Bitmap provider”的解释

Bitmap provider

bitmap 提供者定义简单的位图字形 - 来自纹理的字形。它引用单个PNG文件,适用于其中的字符列表,可选的高度和上升值。

纹理可以是任何尺寸,字形可以是任何颜色。白色字形可以在游戏中着任何其他颜色。其他颜色在重新着色时保留该色调。黑色字形始终显示为黑色。根据包含任何alpha值大于0的最右列像素自动确定字形的宽度。字形本身不能大于512×512像素。chars 字段是一个字符串列表。该列表中每个字符串条目中的字符映射到引用文件中的相应位置。根据列表中字符串的数量以及该列表中最长字符串的长度,纹理被均匀地划分。

height 字段是生成字形的比例。该比例通常应与字形的单个高度匹配,或者是其幂。虽然允许在此推荐范围之外的高度,并且是有效的,但在游戏中渲染时,位于提供程序中声明的字形出现扭曲。height 字段是可选的。如果未定义,则默认为8,而不管底层纹理分辨率如何。

ascent 字段是应用于字形的垂直偏移量。在排版学中,ascent 是基线到大写字母的高度(字形顶部)的距离。字形中的基线是下降部分开始的线。例如,在小写字母 y 中,y 的底部延伸到基线之外。在Vanilla中,当高度为8时,上升值大多为7,因为下降部分为1。

在 CustomNameplates 中,你可以简单地理解为

image: bell # 图像文件
height: 10  # 图像的尺寸
ascent: 4   # 字符的Y位置(不得高于height)

与 minecraft:default 相比,使用其他字体的好处是什么?

我们可以很容易地看到,ItemsAdder 和 Oraxen 都使用该字体来注册自定义图像。问题是,“minecraft:default”字体是默认字体,因此玩家如果找到原始字符,就可以发送图像。因此,这些插件将尽力阻止玩家发送这些字符。如果你不将图像注册到 minecraft:default 字体中,你就不必担心玩家发送你的自定义图像。

如何在其他插件中使用 CustomNameplates 占位符

并非市场上所有的插件都支持自定义字体。如果你看到一个支持 "MiniMessage" 和 "PlaceholderAPI" 的插件,那么它有90%的机会支持它。有些插件开发者会将 MiniMessage 转换为旧版格式,并让 Spigot 处理旧版颜色代码,这真是遗憾。

这有帮助吗?