染色方块(Colored Blocks)

基本信息

属性 值
注册名 utilitiesinexcess:colored_planks … colored_coal_block(13 个)
基类 com.fouristhenumber.utilitiesinexcess.common.blocks.BlockColored(extends Block)
注册方块数 13
颜色总数 16 色(meta 0–15),另加 1 个"任意染色"变体
创造标签 utilitiesinexcess(ModBlocks.java:193)

功能

BlockColored 是本模组"原版方块染色"机制的实现:一个方块种类 × 一种原版方块的组合,通过 meta 携带 RGB 颜色。13 个注册方块每种对应一个原版方块,各自的 meta 0–15 对应 16 种 Minecraft 染料色。

显示名不是硬编码在 en_US.lang 的 tile.colored_*.name,而是由 uie.colored_blocks.color.<meta> 模板拼出,形如 Colored Stone (White)(en_US.lang:327-343)。

硬度和抗性继承自对应原版方块:硬度直接取 base.getBlockHardness(...),抗性取 base.getExplosionResistance(...) * 5/3,脚步声取 base.stepSound(BlockColored.java:65-68)。发光方块类变体额外用 setLightLevel() 提升亮度(ModBlocks.java:90, 95, 100)。

数值

注册名 对应原版方块 颜色乘数 额外 开关
colored_planks Blocks.planks 1.5(默认) — BlockConfig.coloredBlocks.enableColoredBlocks
colored_glowstone Blocks.glowstone 1.5(默认) setLightLevel(1f) 同上
colored_stone Blocks.stone 1.5(默认) — 同上
colored_cobblestone Blocks.cobblestone 1.5(默认) — 同上
colored_quartz_block Blocks.quartz_block 1.0 — 同上
colored_soul_sand Blocks.soul_sand 1.5(默认) — 同上
colored_redstone_lamp Blocks.redstone_lamp 1.5(默认) setLightLevel(1f) 同上
colored_bricks Blocks.brick_block 1.5(默认) — 同上
colored_stone_bricks Blocks.stonebrick 1.5(默认) — 同上
colored_lapis_block Blocks.lapis_block 1.5(默认) — 同上
colored_obsidian Blocks.obsidian 1.5(默认) — 同上
colored_redstone_block Blocks.redstone_block 2.0 — 同上
colored_coal_block Blocks.coal_block 2.0 — 同上

来源:ModBlocks.java:89-101;默认值 DEFAULT_BRIGHTNESS = 1.5f 见 BlockColored.java:50。注意 colorMultiplier(染色渲染亮度)与 setLightLevel(方块光照等级)是两个独立参数——只有 colored_glowstone 与 colored_redstone_lamp 额外设置了光照等级。

交互

触发 行为
右键染色 使用油漆滚筒把当前颜色刷到目标方块上(RecipePaintRollerToPaint,RecipeLoader.java 内 2 处注册)
物品形态列表 安装 EndlessIDs 且 enableDying/enablePaintRoller 为真时,物品形态多出一个"任意颜色"变体(meta 0b0_11111_11111_11111);否则只有 16 个普通颜色变体(BlockColored.java:207-214)
客户端染色 colorMultiplier 在允许染色时从世界方块 meta 读取真实颜色,否则回退(BlockColored.java:216-221)

颜色 meta 编码:getRGBFromEIDMeta 把 meta 的 15 位按 5:5:5 拆成 RGB 三个通道(红取 meta >> 7、绿取 meta >> 2、蓝取 meta << 3,各掩码 0b11111000),再拼成 24 位颜色(BlockColored.java:162-166)。第 15 位是独立的"额外位"(getExtraMetaBit 取 meta & 0b1_00000_00000_00000),getRGBFromEIDMetaWithExtraBit 把它移到颜色的 bit 24 位置(BlockColored.java:156-159),从而在 EndlessIDs 的 16 位 meta 空间里多表达一倍颜色。setExtraMetaBit 通过 EIDsHelper.setBlockMeta 写回(BlockColored.java:186-192)。

合成配方

由 RecipeConfig.enableColoredBlockRecipes 控制(默认 true)。染色方块本身不靠合成获取,颜色变化由油漆滚筒的 RecipePaintRollerToPaint 配方完成。

相关条目