真绿幕(True Greenscreen™)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | utilitiesinexcess:true_greenscreen |
| 类 | com.fouristhenumber.utilitiesinexcess.common.blocks.BlockTrueGreenscreen(extends BlockContainer) |
| 材质 / 硬度 / 脚步声 | Material.sponge / 0.5 / soundTypeCloth(BlockTrueGreenscreen.java:19-23) |
| 渲染类型 | -1(getRenderType(),BlockTrueGreenscreen.java:32-35)——不走方块渲染管线 |
| ItemBlock | BlockTrueGreenscreen.ItemBlockTrueGreenscreen(ModBlocks.java:183),实现 ITranslucentItem |
| TileEntity | BlockTrueGreenscreen.TileEntityTrueGreenscreen(ModTileEntities.java:86,枚举名 TRUE_GREENSCREEN),空类 |
| 着色器 | shaders/TrueGreenscreen.vert.glsl + shaders/TrueGreenscreen.frag.glsl(render/TESRTrueGreenscreen.java:35-36) |
| 开关 | BlockConfig.enableTrueGreenscreen(默认 true) |
功能
真绿幕把整个游戏画面的背景替换为纯绿(绿幕色),用于直播 / 抠像。它的实现不靠光影包或资源包,而是靠 3 个早加载 Mixin 改写客户端渲染与截图逻辑,再由一个 TileEntitySpecialRenderer 挂接自定义着色器。
方块本身被刻意"掏空":getRenderType() 返回 -1 交由 TESR 接管,registerBlockIcons 是空实现,TileEntityTrueGreenscreen 内部没有任何字段——它只是一个让方块成为 BlockContainer 的占位 TE,实际工作全在 render/TESRTrueGreenscreen.java 与 3 个 Mixin 里。
TESRTrueGreenscreen 通过 @EventBusSubscriber.Condition 在 BlockConfig.enableTrueGreenscreen 为真时才订阅事件(render/TESRTrueGreenscreen.java:153),并在客户端 tick 中调用 TESRTrueGreenscreen.onPostClientTick(event)(:158)。
它没有申请独立的 RenderingRegistry 渲染 ID——CommonProxy.preInit 只为 LAPIS_AETHERIUS 和 BLACKOUT_CURTAINS 申请了 render ID 并注册 ISBRH 处理器(CommonProxy.java:77-85),真绿幕不在其中。
数值
| 项目 | 值 |
|---|---|
| 相关 Mixin 条目 | 1 个 MixinBuilder:TRUE_TOUCHSCREEN_ARGB_SCREENSHOTS |
| 该条目包含的 Mixin 类 | 3 个 |
| 生效条件 | BlockConfig.enableTrueGreenscreen |
| 阶段 | Phase.EARLY(早于游戏本体加载) |
Mixin 来源:mixins/Mixins.java:31-37。三个类分别是:
MixinScreenShotHelper_TrueGreenscreen— 截图时写入 ARGBMixinRenderGlobal_TrueGreenscreen— 全局渲染MixinGuiIngame_TrueGreenscreen— HUD 层
交互
| 触发 | 行为 |
|---|---|
| 放置 | 方块本身作为绿幕的开关载体 |
| 客户端渲染 | 画面背景变为纯绿;showGenerationRate 类 UI 不受影响 |
| 截图 | 走 MixinScreenShotHelper 的 ARGB 分支 |
合成配方
这是本模组唯一一条不受任何配置开关控制的配方。 RecipeLoader.java:539-549 直接无条件调用 addShapedRecipe(ModBlocks.TRUE_GREENSCREEN, ...),外层没有 if (RecipeConfig.…) 判断——对比同文件中其余所有配方都带开关,这是一个可核实的不一致。
配方为 ege / gig / ege:e=以太玻璃、g=Lapis Aetherius meta 5(Lime)、i=反转金属锭(任意 meta)。
注意:即使把 RecipeConfig 中所有配方开关关掉,真绿幕仍然可合成;但若把 BlockConfig.enableTrueGreenscreen 关掉,方块不注册,届时该配方会因输出方块不存在而被 DisableableItemStack.isEnabled() 拦截(DisableableItemStack.java:26-32)。
相关条目
- 以太玻璃 - 真绿幕的主要原料
- Lapis Aetherius - 配方原料
- Mixin 与客户端注入 - 3 个早加载 Mixin 的说明
- 方块注册总表 - 真绿幕在完整表中的位置