富文本渲染(drawable/text 包)
基本信息
| 属性 |
值 |
| 包路径 |
com.cleanroommc.modularui.drawable.text |
| 文件数 |
18 |
| 入口 |
TextRenderer(基类)、RichText(复合文本) |
| 接口 |
ITextLine(api/drawable/ITextLine.java)、IKey(api/drawable/IKey.java) |
| 调试颜色 |
debugTextColor(#FFAAAAAA)、debugOutlineColor(#DCB42873) |
ModularUI2 有自己的文本渲染实现(drawable/text/ 的 18 个类),
但并非完全不用原版字体:绘制入口 drawable/GuiDraw.java 同时 import 了
net.minecraft.client.gui.FontRenderer(:17)并在 :360 取
Minecraft.getMinecraft().fontRenderer;
另有 core/mixins/early/minecraft/FontRendererAccessor.java:9
(@Mixin(FontRenderer.class))为原版字体生成访问器,
GuiScreenMixin.java:58/:68 用它接管原版 drawHoveringText 的 tooltip 渲染。
功能
文本键(IKey 家族,5 个实现)
文本的「键」把「要显示什么」抽象出来,同一份内容可被替换或延迟求值:
| 类 |
文件 |
说明 |
LangKey |
drawable/text/LangKey.java |
取自语言文件的文本(modularui2.* / modularui.*) |
StringKey |
drawable/text/StringKey.java |
字面字符串 |
DynamicKey |
drawable/text/DynamicKey.java |
动态求值的文本 |
BaseKey |
drawable/text/BaseKey.java |
上述的抽象基类 |
KeyIcon |
drawable/text/KeyIcon.java |
把文本键渲染成图标 |
TextIcon |
drawable/text/TextIcon.java |
文本图标 |
文本结构
| 类 |
文件 |
说明 |
TextLine |
drawable/text/TextLine.java |
一行文本(实现 ITextLine) |
ComposedLine |
drawable/text/ComposedLine.java |
由多段拼接成的行 |
CompoundKey |
drawable/text/CompoundKey.java |
复合键(多段拼接) |
Spacer |
drawable/text/Spacer.java |
空白间隔 |
富文本与渲染
| 类 |
文件 |
说明 |
RichText |
drawable/text/RichText.java |
富文本容器 |
RichTextCompiler |
drawable/text/RichTextCompiler.java |
把带格式的源码编译成 TextLine |
StyledText |
drawable/text/StyledText.java |
带样式的文本 |
FormattingState |
drawable/text/FormattingState.java |
格式状态机 |
TextRenderer |
drawable/text/TextRenderer.java |
渲染器基类(TextFieldRenderer 继承它) |
FontRenderHelper |
drawable/text/FontRenderHelper.java |
字体渲染辅助 |
TextDrawParams |
drawable/text/TextDrawParams.java |
绘制参数 |
AnimatedText |
drawable/text/AnimatedText.java |
带动画的文本 |
格式语法
格式语法可在仓库自带示例中看到
(src/main/resources/assets/modularui2/guis/test.json:18):
§{#3058B8}Blue §nUnderlined§rBlue §{#469E8F}Mint Hello
| 记号 |
含义 |
§{...} |
自定义颜色(#RRGGBB 形式) |
§n |
下划线 |
§r |
重置格式 |
同仓库的 assets/modularui/lang/en_us.lang 大量使用原版颜色码
(§b、§7、§6、§e、§a、§9、§c),两套语法共存。
消费者
| 消费者 |
文件 |
用途 |
RichTooltip |
screen/RichTooltip.java:35 |
提示气泡内容(implements IRichTextBuilder<RichTooltip>) |
RichTextWidget |
widgets/RichTextWidget.java |
可交互的富文本控件 |
TextFieldRenderer |
widgets/textfield/TextFieldRenderer.java |
文本框渲染(extends TextRenderer) |
数值
| 数值名 |
值 |
来源 |
| 文本相关类数 |
18 |
drawable/text/ |
| 调试文字色 |
#FFAAAAAA |
ModularUIConfig.java:42 |
| 调试轮廓色 |
#DCB42873 |
ModularUIConfig.java:46 |
| 兜底部件文字尺寸 |
18 |
api/IThemeApi.java:35(darkTextNoShadow(18, 18, null)) |
交互
| 触发 |
行为 |
| 界面渲染 |
TextRenderer 逐 TextLine 绘制 |
配置了 guiDebugMode |
叠加控件轮廓与调试文字(用上述两种调试色) |
| 悬停控件 |
RichTooltip 用同一套系统渲染提示内容 |
相关条目
- 可绘制对象 -
drawable/ 顶层 28 个类
- 提示气泡 -
RichTooltip 的 8 种锚定方式
- 配置项 -
debug_text_color、debug_outline_color、gui_debug_mode