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(虚无形杖)切换单个微砖的碰撞开关,让装饰性微砖不再阻挡玩家与实体,同时保留视觉。
触发链:
- 客户端
onItemUse检测目标方块是TileEntityLittleTiles - 发送
LittleBlockPacket.Action.TOGGLE_COLLISION - 服务端在
LittleBlockPacket.java:246的case TOGGLE_COLLISION中再次校验玩家手持物确实是LittleTiles.collisionTool(防作弊),然后翻转loadedTile.disableCollision - 聊天栏回显
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。
相关条目
- Little Tile - 被施加碰撞开关的方块
- 微砖类型与 TileEntity -
disableCollision字段所在类 - 网络封包 -
TOGGLE_COLLISION封包动作