温度计

基本信息

属性 值
注册物品数 2
基类 shedar.mods.ic2.nuclearcontrol.items.ItemToolThermometer(extends Item)
最大堆叠 1(ItemToolThermometer.java:21)
注册位置 IC2NuclearControl.java:160-161

功能

手持温度计右键 Thermal Monitor(metadata 0)或 Remote Thermal Monitor(metadata 3),即可读取该机器的当前温度与热量等级,用于远程排查反应堆过热。

两个已注册温度计

注册名 类 英文显示名 额外能力
ItemToolThermometer ItemToolThermometer Thermometer 无,纯手持工具
ItemToolDigitalThermometer ItemToolDigitalThermometer Digital Thermometer implements IElectricItem,可存电

类定义证据:ItemToolDigitalThermometer extends ItemToolThermometer implements IElectricItem(items/ItemToolDigitalThermometer.java:18),因此它继承温度计的全部右键行为,差别只在增加了 IC2 的用电接口。

数值

数值名 值
最大堆叠 1
每次成功使用消耗耐久 10(itemstack.damageItem(10, entityplayer),ItemToolThermometer.java:65)
数字温度计构造参数 new ItemToolDigitalThermometer(1, 80, 80)(IC2NuclearControl.java:136),三参分别赋给字段 tier、ratio、transfer(items/ItemToolDigitalThermometer.java:23-28)
数字温度计耐久上限 101(setMaxDamage(101),ItemToolDigitalThermometer.java:25)
数字温度计耗电倍率 扣耐久量先 i *= 50,再用 ElectricItem.manager.discharge 扣电(ItemToolDigitalThermometer.java:31-35)

数字温度计的差异

ItemToolDigitalThermometer 覆盖了 canTakeDamage:普通温度计的 damage() 走 damageItem(10, ...) 的耐久扣减,而数字温度计改为每次使用扣电——canTakeDamage 把扣减量乘 50 后交由 ElectricItem.manager.discharge(stack, i, Integer.MAX_VALUE, true, false, true) 判定(items/ItemToolDigitalThermometer.java:30-35)。

它还用 messagePlayer(EntityPlayer, IReactor) 输出带阈值的温度提示,格式为 ThermoDigital:<当前热量>:<50%阈值>:<85%阈值>,两个阈值分别是 maxHeat * 50 / 100 与 maxHeat * 85 / 100(items/ItemToolDigitalThermometer.java:41-45)。

交互

触发 行为
右键方块 onItemUseFirst 读取目标 TileEntity 的温度信息并发送给玩家,成功时按 damage(itemstack, 1, player) 走一次扣耐久(ItemToolThermometer.java:31、:51)
扣耐久实现(普通) damage 直接 itemstack.damageItem(10, entityplayer)(ItemToolThermometer.java:64-65)
扣耐久实现(数字) 由 canTakeDamage 覆盖为耗电,见上一节

相关条目