工具与随身物品(扳手 / 海绵棒 / 刮水器 / 游标 / 起重机控制器 / 起重机背包 / 计步器 / 史莱姆检测仪 / /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),本次未逐条核对其字符表,故不在此断言。

相关条目