染色方块(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 配方完成。
相关条目
- Lapis Aetherius 染色变体 -
BlockLapisAetheriusDyable继承自BlockColored - 油漆滚筒 - 染色操作的唯一工具
- 方块注册总表 - 13 个染色方块在完整表中的位置
- 配置总览 -
ColoredBlocksConfig的 4 个开关