AxolotlClient渲染

AxolotlClient渲染

AxolotlClient的GUI渲染库。方便且简单地渲染一些形状、静态SVG和TrueType字体。

基础库

AxolotlClient 渲染

此库允许基于着色器渲染一些圆角形状(例如矩形)、静态 SVG 和 TrueType 字体。

对于 SVG,包含了 Apache Batik 库;对于字体,则使用了 FreeType¹。

对于玩家

这是一个库,您通常无需手动安装它。(除非有人错误声明了其依赖项或忘记将其包含在内)

对于模组开发者

将其包含到您的项目中

该库发布于 https://maven.axolotlclient.com。

dependencies {
  modImplementation(include("io.github.axolotlclient.rendering:AxolotlClient-rendering:VERSION+MINECRAFT_VERSION")!!)
}

注意:如果您不希望将此库嵌入到模组中,可以省略 include 语句。在这种情况下,请确保正确声明依赖项,以便启动器下载该库。

提示:如果您正在编写一个使用此库的库,请将 modImplementation 替换为 modApi!

常规用法

此库的大多数方法可通过注入的 GuiGraphicsExtension 接口,使用 Minecraft 的 GuiGraphics 类来访问。 在 1.8.9 版本中,由于没有 GuiGraphics 类,您应使用 DrawUtil.get() 获取 GuiGraphicsExtension。 通过这种方式暴露的所有方法均以 axolotlclient_rendering 为前缀。

字体可以使用 Font.read(...) 加载。如果您使用变体字体, 它会自动读取变体并适当地使用它们, 但 FreeType 直接支持的字体特性相当有限。 如果某个特定特性由单独的字体文件提供(例如斜体或粗体变体),可以使用 Font#addSubFont 添加,并指定在何种条件下应使用它们 (某些标签和值可以在 Font 类中找到静态定义)。

使用此库的项目

您的项目使用了此库并且希望它出现在这里?请告诉我们!

FAQ

  • 我在 1.20.1 上使用此库,但字体看起来很糟糕
    • 答:因为 Minecraft 1.20.1 使用的 lwjgl 3.3.1 尚未包含 FreeType 绑定,因此此库使用 STB_Truetype,它不支持微调(也可能存在其他我们未知的错误)。
  • 但 1.8.9 使用的 lwjgl2 不是也低于 3.3.2 吗?
    • 答:确实如此,但通过 legacy-lwjgl3,我们可以在 lwjgl 3.3.6 上运行,在那里我们有 FreeType 的绑定。
  • 难道不能在 1.20.1 上也使用较新的 lwjgl 吗?
    • 答:可以,但这更难,会进一步增加 jar 大小,并且可能会与诸如 sodium 之类的模组产生不兼容性,因为它们会检查自身运行在哪个 lwjgl 版本上。

¹请参阅 FAQ,问题 #1