Cable Camouflages(伪装方块)
基本信息
| 属性 | 值 |
|---|---|
| modid | StevesFactoryManager |
| FML 注册键 | StevesFactoryManager:BlockCableCamouflageName(CABLE_CAMOUFLAGE_NAME_TAG,ModBlocks.java:60,163) |
| 方块类 | BlockCableCamouflages(类名是复数,BlockCableCamouflages.java:19) |
| 未本地化名 | sfm.BlockCableCamouflage / sfm.BlockCableInsideCamouflage / sfm.BlockCableShapeCamouflage |
| 显示名 | 伪装方块 / 伪装方块-双面 / 伪装方块-变换 |
| TileEntity | TileEntityCamouflage(BlockCableCamouflages.java:30) |
| 方块类 | BlockCableCamouflages extends BlockCamouflageBase(BlockCableCamouflages.java:19) |
| 硬度 | 1.2(setHardness(1.2F),BlockCableCamouflages.java:25) |
| 爆炸抗性 | 10.0 — 源码未设置,Block 默认值 |
| 伪装类型数 | 3 |
| 渲染 ID | ModBlocks.CAMOUFLAGE_RENDER_ID(BlockCamouflageBase.java:111) |
伪装类型(TileEntityCamouflage.CamouflageType)
只有 3 个枚举值(TileEntityCamouflage.java:102-104):
| 枚举 | 未本地化名 | 贴图 | 双面渲染 | 特殊形状 | 中文名 |
|---|---|---|---|---|---|
NORMAL |
BlockCableCamouflage |
cable_camo |
否 | 否 | 伪装方块 |
INSIDE |
BlockCableInsideCamouflage |
cable_camo_inside |
是 | 否 | 伪装方块-双面 |
SHAPE |
BlockCableShapeCamouflage |
cable_camo_shape |
是 | 是 | 伪装方块-变换 |
三者在同一个方块上按 metadata 切换(getId(meta) = meta % 3,BlockCableCamouflages.java:66-68;getCamouflageType() 反查,TileEntityCamouflage.java:137)。
功能
- 伪装状态存在
TileEntityCamouflage里,不靠 metadata;metadata 只是"当前伪装类型"的选择器,放置时由物品getItemDamage()写入(BlockCableCamouflages.java:75-81) damageDropped(meta) = meta,拆方块保留伪装类型(BlockCableCamouflages.java:70-73)- SHAPE 型可模拟非方块碰撞箱:
isUseCollision()为假时碰撞箱归零、选中框也归零(BlockCamouflageBase.java:24-54);isFullCollision()为真时回退整格(BlockCamouflageBase.java:48-50) - SHAPE 型关闭碰撞时硬度变成 600000(近乎不可破坏),用于防误拆(BlockCamouflageBase.java:95-102)
- 隐藏自己:
isOpaqueCube()恒false,renderAsNormalBlock()恒false,走CAMOUFLAGE_RENDER_ID自定义渲染(BlockCamouflageBase.java:109-138) - 透光性:非普通方块时
getBlocksMovement()跟随伪装目标(BlockCamouflageBase.java:56-61)
数值
| 参数 | 值 | 证据 |
|---|---|---|
| 伪装类型数量 | 3 | TileEntityCamouflage.java:102-104 |
| 物品形态 metadata | 0/1/2 对应 NORMAL/INSIDE/SHAPE | BlockCableCamouflages.java:60-64;ItemCamouflage.java:20-21 |
| 堆叠 / 耐久 | 64 / 无 | ItemCamouflage.java:14 setMaxDamage(0) |
| SHAPE 无碰撞时硬度 | 600000 | BlockCamouflageBase.java:99 |
交互
| 触发 | 行为 |
|---|---|
| 左键 | 无特殊行为 |
| 右键 | 无特殊行为(onBlockActivated 未覆写) |
| 放置 | 按手持物品 getItemDamage() 选定伪装类型 |
合成配方
- meta 0:无序 工厂线缆 + 红羊毛(14) + 粉羊毛(13) + 黑羊毛(11)(ModBlocks.java:268-273)
- meta 1:无序 伪装方块(meta 0) ×2 + 铁栅栏 ×2(ModBlocks.java:275-280)
- meta 2:无序 伪装方块(meta 1) + 黏性活塞(ModBlocks.java:282-285)
审计订正
- 编造内容:「通过
CamouflageType枚举定义多种伪装类型,包括实心方块、楼梯、台阶等多种形状变体」→ 全部凭空。源码只有 3 个类型:NORMAL / INSIDE(双面)/ SHAPE(变换)(TileEntityCamouflage.java:102-104)。没有任何"楼梯""台阶"伪装。 - 数值未落实:「伪装类型数量 | 由
CamouflageType.VALUES决定」→VALUES就是values(),长度 3。原文明明有确定答案却写成占位式描述。已填。 - 登记名词形错:原文标题/注册名
blockCableCamouflage(单数)——方块类名是复数BlockCableCamouflages,而registerBlock传入的实参常量值是单数"BlockCableCamouflageName"(ModBlocks.java:60,163)。已分别标注。 - modid 错:原文
stevesfactorymanager→StevesFactoryManager。 - 补正:原文未写 SHAPE 型的两个关键行为——关闭碰撞时硬度变 600000(BlockCamouflageBase.java:95-102)、可模拟非方块碰撞箱(BlockCamouflageBase.java:24-54);未写"伪装状态存在 TileEntity 而非 metadata";未写三条合成配方。
- 原文"伪装数据通过 metadata 存储"→ 半错:metadata 只索引
CamouflageType,真正的伪装形状/碰撞配置在TileEntityCamouflage(TileEntityCamouflage.java:137 只做数组反查)。已改写。
相关条目
- Cable - 基础电缆
- Connection Block - 连接抽象(非注册物品)