Little Color Tube

基本信息

属性 值
注册名 littletiles:colorTube
内部名 LTColorTube
显示名 Little Color Tube
类 com.creativemd.littletiles.common.items.ItemColorTube
最大堆叠 1(setMaxStackSize(1))
贴图 LTColorTube + LTColorTube-Overlay(双渲染通道)
GUI SubGuiColorTube / SubContainerColorTube(CreativeCore)

功能

Little Color Tube(微砖颜料管)给微砖染色,颜色存在物品 NBT 的 color 整数键上(ItemColorTube.setColor / getColor)。

它使用 Minecraft 的多渲染通道:物品模型本体在 pass 0 输出 ColorUtils.WHITE,pass 1 输出 overlay 贴图并叠加 getColor(stack) 的染色值,因此物品外观会随 NBT 颜色变化(getColorFromItemStack + requiresMultipleRenderPasses())。

服务端 LittleBlockPacket.Action.COLOR 的逻辑(LittleBlockPacket.java:178-200):

  • 右键微砖:把微砖替换为同尺寸的 LittleTileBlockColored(染色版微砖),颜色取自当前 NBT
  • 潜行 + 右键:从指向的微砖吸色回颜料管;若指向的是 LittleTileBlockColored 则取其颜色,否则重置为白色

目标微砖必须是 LittleTileBlock.class 或 LittleTileBlockColored 子类,否则无效。失败时 System.out.println("Failed to use color tube!")。

⚠️ 物品提示与实现不一致:addInformation 写的是 Right Click: dyes a tile / Shift + Right Click: copies tile's color,但实际染色逻辑写在 onItemUse(左键点击方块)中,而 onItemRightClick(右键空气)会打开选色 GUI。潜行与吸色的分流在服务端 LittleBlockPacket.Action.COLOR 分支里由 player.isSneaking() 判定。两处行为均以源码为准。

数值

数值名 值
最大堆叠 1
默认颜色 ColorUtils.WHITE(NBT 无 color 键时自动写入白色)
耐久 无(类中无 setMaxDamage)

交互

触发 行为
左键微砖(onItemUse) 发送 COLOR 包,把该微砖替换为 LittleTileBlockColored 并染色
潜行 + 左键微砖 服务端改为吸色:把微砖颜色写回颜料管(普通微砖则重置为白)
右键空气(onItemRightClick) 打开 SubGuiColorTube 选色 GUI(GUI ID 1)
左键非微砖方块 返回 false

合成配方

3×3 有序配方(LittleTiles.java:167-169):

XXX
XLX
XXX
字符 数量 物品
X 8 任意染料(Items.dye,不限 meta)
L 1 铁锭(Items.iron_ingot)

产出 1 个 Little Color Tube。

相关条目