Staff of Intangibility

基本信息

属性 值
注册名 littletiles:collisionTool
内部名 collision_tool
显示名 Staff of Intangibility
类 com.creativemd.littletiles.common.items.ItemCollisionTool
最大堆叠 1(setMaxStackSize(1))
物品提示 item.collision_tool.tooltip = Right-click to toggle tile collision
无 GUI 是(只 extends Item)

功能

Staff of Intangibility(虚无形杖)切换单个微砖的碰撞开关,让装饰性微砖不再阻挡玩家与实体,同时保留视觉。

触发链:

  1. 客户端 onItemUse 检测目标方块是 TileEntityLittleTiles
  2. 发送 LittleBlockPacket.Action.TOGGLE_COLLISION
  3. 服务端在 LittleBlockPacket.java:246 的 case TOGGLE_COLLISION 中再次校验玩家手持物确实是 LittleTiles.collisionTool(防作弊),然后翻转 loadedTile.disableCollision
  4. 聊天栏回显 message.littletiles.tile_collision.enabled 或 message.littletiles.tile_collision.disabled

disableCollision 是 LittleTile 的实例字段(LittleTile.java:124,public boolean disableCollision = false;),因此每个微砖独立记录状态,同一方块内不同微砖可分别开关。NBT 序列化时只在值为 true 时写入该键(LittleTile.java:211),读取时无条件回填(LittleTile.java:243)。

源码中另有一处防滥用处理:saveTileForItem 在把微砖存成物品时显式移除该键——

// To prevent abuse, collision disabling is placed block only
nbt.removeTag("disableCollision");

(LittleTile.java:196-200)。即「关闭碰撞」的状态不会被烘焙进 Little Recipe / Multi-Tile-Structure 录制的图案物品,复制图案得到的是始终参与碰撞的微砖。

本物品是全 mod 唯一在 LittleTiles.java 里没有调用 setCreativeTab 于构造函数的物品——创造标签由静态字段初始化时统一赋予(LittleTiles.java:98-99)。

数值

数值名 值
最大堆叠 1
状态存储 每微砖 1 个 boolean(LittleTile.disableCollision,LittleTile.java:124)
物品序列化 该状态被 saveTileForItem 剥离,不随图纸复制
耐久 无(类中无 setMaxDamage)

交互

触发 行为
左键 Little Tile 方块 翻转被指向微砖的碰撞开关
聊天栏反馈 Tile collision enabled / Tile collision disabled
服务端校验 手持物非本物品时封包被丢弃,不产生效果

合成配方

没有合成配方。 6 条 GameRegistry.addRecipe(LittleTiles.java:147-169)不含 collisionTool。

相关条目