工具与随身物品(扳手 / 海绵棒 / 刮水器 / 游标 / 起重机控制器 / 起重机背包 / 计步器 / 史莱姆检测仪 / /dev/null / 史诗橡皮擦 / 睡袋 / 行李箱 / 滑翔翼)
基本信息
14 个功能各异的随身物品。它们没有共享基类(除 ItemArmor 三件),因此归为一页索引对照。
| 注册名 | 类 | 堆叠/耐久 | 声明位置 |
|---|---|---|---|
OpenBlocks:wrench |
ItemWrench |
默认 | OpenBlocks.java:494 |
OpenBlocks:spongeonastick |
ItemSpongeOnAStick |
1 / Config.spongeMaxDamage |
OpenBlocks.java:485 |
OpenBlocks:squeegee |
ItemSqueegee |
1 | OpenBlocks.java:455 |
OpenBlocks:cursor |
ItemCursor |
默认 | OpenBlocks.java:476 |
OpenBlocks:craneControl |
ItemCraneControl |
1 | OpenBlocks.java:434 |
OpenBlocks:craneBackpack |
ItemCraneBackpack extends ItemArmor |
1(胸甲位) | OpenBlocks.java:437 |
OpenBlocks:pedometer |
ItemPedometer |
1 | OpenBlocks.java:488 |
OpenBlocks:slimalyzer |
ItemSlimalyzer |
默认 | OpenBlocks.java:440 |
OpenBlocks:devnull |
ItemDevNull |
默认 | OpenBlocks.java:482 |
OpenBlocks:epicEraser |
ItemEpicEraser |
1 | OpenBlocks.java:491 |
OpenBlocks:sleepingBag |
ItemSleepingBag extends ItemArmor |
1(胸甲位) | OpenBlocks.java:446 |
OpenBlocks:luggage |
ItemLuggage |
1 | OpenBlocks.java:413 |
OpenBlocks:hangglider |
ItemHangGlider |
默认 | OpenBlocks.java:407 |
OpenBlocks:genericUnstackable:pointer |
MetasGenericUnstackable.pointer |
1 | OpenBlocks.java:473 + MetasGenericUnstackable.java:14 |
功能
扳手(ItemWrench)
切换方块状态。有潜行独占方块名单(ItemWrench.java:37-39):BlockLever 拉杆、BlockButton 按钮、BlockChest 箱子——即潜行时不会误触这些方块。动作走 onItemUseFirst(:64)。
海绵棒(ItemSpongeOnAStick)
手动版液体清除器:在 Config.spongeStickRange 半径内清除液体方块(ItemSpongeOnAStick.java:41-43),耐久消耗 Config.spongeMaxDamage。
起重机控制器(ItemCraneControl)
远距离操纵起重机的手持控制器。Config.craneShiftControl 决定用潜行还是用右键切换伸展状态(ItemCraneControl.java:74)。有防抖:MapMaker().weakKeys() 的 debouncerTime 弱键映射(:40),避免同一玩家连点刷指令。
起重机背包(ItemCraneBackpack)
ItemArmor,胸甲位(ItemCraneBackpack.java:24),贴图 openblocks:textures/models/crane.png(:25)。Config.doCraneCollisionCheck 控制是否做碰撞检查(:63)。
计步器(ItemPedometer)
记录行走距离。实现 IPedometer(common/PedometerHandler.java),渲染有 pedometer_still / 移动中贴图两种状态(OpenBlocks.java:488)。
/dev/null(ItemDevNull)
打开自定义 GUI(ItemDevNull.java:92),条件是 Config.devNullSneakGui 为假或玩家在潜行。内部有个 DevNullInventory extends PlayerItemInventory(:42)和一个事件处理器内类(:161)。
睡袋(ItemSleepingBag)
ItemArmor 伪装成胸甲(ARMOR_CHESTPIECE_TYPE = 1、ARMOR_CHESTPIECE_SLOT = 2,ItemSleepingBag.java:48-49),实际用作睡觉点。NBT 键:Spawn、Position、Sleeping、Slot(:44-47)。另有 FieldAccess<Boolean> IS_SLEING 反射字段(:51)用于跨版本兼容访问 EntityPlayer 的睡眠状态。
滑翔翼(ItemHangGlider)
唯一的第二套配置系统:它不走 @ConfigProperty,而是在 loadConfig(FMLPreInitializationEvent) 里自己 new Configuration(event.getSuggestedConfigurationFile())(ItemHangGlider.java:80-82),键 general.BlacklistedDimensions,类型 int[](:84-89)。
默认值是一个 int 数组,默认禁用了 39 个维度:
95 94 93 92 86 85 84 83 82 81 77 74 71 69 63 54 51 49 48 47
46 45 44 43 42 41 40 39 38 37 36 35 33 32 31 30 29 28 25
(ItemHangGlider.java:87-88。)配置项注释为「List of dimension IDs where the glider doesn’t work」(:89)。对全部 openblocks 源码 grep new Configuration 只有这一处。
计数核对:数组跨两行书写,且第 87 行以
},结尾。对这两行用「所有整数」与「词边界整数」两种正则分别统计,结果都是 39。肉眼按行分组数会得到 40,是错的。
另有 Config.hanggliderEnableThermal(默认 true,Config.java:599)启用热气流上升。EntityHangGlider 在 Backhand 存在时处理副手(isBackhandLoaded 常量,EntityHangGlider.java:55、:79),并在 Et Futurum 存在时接管鞘翅(ModPresence.ET_FUTURUM + IElytraPlayer,EntityHangGlider.java:167、:172)。
行李箱(ItemLuggage)
生成 EntityLuggage 实体(OpenBlocks.java:722 通过 IMC 把 EntityLuggage 名字发给 MFR 加入刷怪笼黑名单)。掉落逻辑在 common/LuggageDropHandler.java。
数值
| 数值名 | 来源 | 值 |
|---|---|---|
| 扳手潜行独占方块数 | 硬编码 | 3(ItemWrench.java:37-39) |
| 海绵棒堆叠 | 硬编码 | 1(ItemSpongeOnAStick.java:19) |
| 海绵棒耐久 | Config.spongeMaxDamage |
见配置页(ItemSpongeOnAStick.java:20) |
| 海绵棒半径 | Config.spongeStickRange |
见配置页(ItemSpongeOnAStick.java:41-43) |
| 起重机控制器堆叠 | 硬编码 | 1(ItemCraneControl.java:37) |
| 起重机控制器防抖表 | 硬编码 | 弱键 MapMaker(ItemCraneControl.java:40) |
| 起重机背包槽位 | 硬编码 | 胸甲 1(ItemCraneBackpack.java:24) |
| /dev/null GUI 条件 | Config.devNullSneakGui |
见配置页(ItemDevNull.java:92) |
| 睡袋槽位 | 硬编码 | 类型 1 / 槽 2(ItemSleepingBag.java:48-49) |
| 滑翔翼热气流 | Config.hanggliderEnableThermal |
true(Config.java:599) |
| 滑翔翼维度黑名单 | 独立 Configuration,general.BlacklistedDimensions |
ItemHangGlider.loadConfig |
交互
| 触发 | 行为 |
|---|---|
| 潜行 + 扳手右键 | 只对非独占名单方块生效(ItemWrench.java:37-39) |
| 手持游标右键 | 打开 GuiOpenHandler 记录的 GUI;距离超过 Config.cursorDistanceLimit 拒绝(ItemCursor.java:43-57、:63) |
| 起重机控制器潜行/右键 | 切换起重机伸展(受 Config.craneShiftControl 影响,ItemCraneControl.java:74) |
| 潜行 + /dev/null | 打开 GUI(ItemDevNull.java:92) |
| 睡袋右键 | 在该处设置重生点并睡觉(NBT Spawn/Position,ItemSleepingBag.java:44-45) |
| 滑翔翼 + 跳跃 | 起飞;热气流配置开启时 Vario 声学设备可爬升(Config.java:598 注释) |
合成配方
起重机控制器(Config.java:1192-1207):
ili
grg
iri
| 字符 | 物品 |
|---|---|
i |
ingotIron 铁锭 |
g |
nuggetGold 金粒 |
r |
dustRedstone 红石粉 |
l |
dustGlowstone 荧石粉 |
起重机背包(Config.java:1209 起,无序):MetasGeneric.line + MetasGeneric.beam(Config.java:1210-1211)等材料。
其余 12 件的具体配方集中在 Config.registerCraftingRecipes 的物品段(Config.java:1210-1450),本次未逐条核对其字符表,故不在此断言。
相关条目
- 通用 meta 物品 - 起重机的
line/beam/craneEngine部件 - 实体 / 磁铁与投射物 - 行李箱与磁铁实体
- 配置项全表 - 本页涉及的全部配置项 + 滑翔翼的独立
BlacklistedDimensions - 游戏规则与指令 -
/dev/null等指令与/flimflam的关系