渲染管线与 GUI 组件

基本信息

属性 值
涉及包 codechicken.lib.render(20 类)、codechicken.lib.render.uv(8 类)、codechicken.lib.gui(2 类)、codechicken.core.gui(8 类)
公开类型数 38
核心类 CCRenderState(643 行)、CCRenderPipeline

功能

CCRenderState 是一套从 CCL 1.16 分支回移植的线程局部渲染状态机。类头注释明确写着 Backported from CCL - 1.16.x(CCRenderState.java:25)。

它用 private static final ThreadLocal<CCRenderState> instances = ThreadLocal.withInitial(CCRenderState::new)(:32)加 public static CCRenderState instance()(:38-40)取代了原先的静态字段。CCRenderState 目前没有任何 public static 字段,只有 5 个 public final 实例字段(其中 pipeline 持有 CCRenderPipeline,:30)与 35 个静态方法。

这套「静态方法 → 线程局部实例方法」的迁移正是 RedirectorTransformer 存在的原因:老 mod 字节码里对静态字段的访问会被重写成 instance().field。

类清单(codechicken.lib.render)

类 说明
CCRenderState 线程局部渲染状态核心
CCRenderPipeline 渲染管线(由 CCRenderState.pipeline 持有)
IVertexOperation 顶点操作接口(CCRenderState.java:55)
CCModel 模型数据(:716 处有模型表加载逻辑)
CCModelLibrary 模型库
BlockRenderer 方块渲染
EntityDigIconFX 挖掘裂纹特效
RenderUtils 渲染工具
ColourMultiplier 颜色乘算
IFaceRenderer 面渲染接口
ManagedTextureFX / TextureFX / TextureSpecial / PlaceholderTexture 纹理特效体系
TextureUtils 纹理工具(含 @SubscribeEvent,全仓仅 5 个事件订阅类之一)
TextureDataHolder 纹理数据容器
SpriteSheetManager 精灵图管理
ShaderProgram 着色器程序
FontUtils 字体工具
Vertex5 顶点格式
QBImporter Quake-Brush 模型导入(:633、:642 处有模型表与贴图导出逻辑)

codechicken.lib.render.uv(8 类)为 UV 坐标辅助。

GUI 组件

codechicken.core.gui(8 类):GuiWidget、GuiScreenWidget、GuiCCButton、GuiCCTextField、GuiScrollPane、GuiScrollSlot、ClickCounter、IGuiActionListener。

codechicken.lib.gui(2 类):Canvas9Seg(九宫格画布)、GuiDraw(绘制工具)。

按钮、文本框、滚动面板的配色全部取自 LocalizedColours(见 几何、颜色与数学库)中的 24 个常量。

相关条目