传感器定位卡

基本信息

属性 值
注册物品数 6
基类 shedar.mods.ic2.nuclearcontrol.items.ItemCardBase(extends Item implements IPanelDataSource)
最大堆叠 1(ItemCardBase.java:23)
可修复 否(canRepair = false,ItemCardBase.java:24)
创造标签 IC2NuclearControl.tabIC2NC(ItemCardBase.java:25)
注册位置 IC2NuclearControl.registerBlocks(),IC2NuclearControl.java:165-168、:172-173

这 6 个物品是本模组的核心道具。它们本身不含数据,而是作为「数据源」被写入 Information Panel,再由面板渲染出机器状态。

功能

卡片是面板与机器之间的桥:把卡放进面板的卡槽并设定范围后,面板按 sensorDataRefreshPeriod 周期读取目标机器的 EU、液量、发电量等数据,转成 PanelString 列表显示。抽象方法 update(...)、getStringData(...)、getSettingsList()、getCardType() 全部由 ItemCardBase 声明(ItemCardBase.java:41-58),每个子类各自实现。

6 个已注册卡片:

注册名 类 接口 英文显示名
ItemSensorLocationCard ItemCardReactorSensorLocation IRemoteSensor Reactor Sensor Location Card
ItemEnergySensorLocationCard ItemCardEnergySensorLocation IRemoteSensor, IRangeTriggerable Energy Sensor Location Card
ItemEnergyArrayLocationCard ItemCardEnergyArrayLocation 无(仅 ItemCardBase) Energy Array Location Card
ItemMultipleSensorLocationCard ItemCardMultipleSensorLocation IRemoteSensor, IPanelMultiCard, IRangeTriggerable 见下方「显示名缺陷」
ItemLiquidArrayLocationCard ItemCardLiquidArrayLocation 无(仅 ItemCardBase) Liquid Array Location Card
Item55ReactorCard ItemCard55Reactor IRemoteSensor 5x5 Reactor Sensor Location Card

类继承关系证据:ItemCard55Reactor extends ItemCardEnergySensorLocation implements IRemoteSensor(items/ItemCard55Reactor.java:28)、ItemCardMultipleSensorLocation extends ItemCardBase implements IRemoteSensor, IPanelMultiCard, IRangeTriggerable(items/ItemCardMultipleSensorLocation.java:43-44)、ItemCardEnergyArrayLocation 与 ItemCardLiquidArrayLocation extends ItemCardBase(items/ItemCardEnergyArrayLocation.java:29、items/ItemCardLiquidArrayLocation.java:30)。

数值

ItemCardMultipleSensorLocation 用一个类承载三种数据类型,靠 UUID 区分(items/ItemCardMultipleSensorLocation.java:56-58):

常量 值 用途
CARD_TYPE_COUNTER new UUID(0, 4) 计数器类
CARD_TYPE_LIQUID 210dc1f0-118c-48ee-9d08-42bfbee1ea15 流体类
CARD_TYPE_GENERATOR 210dc1f0-118c-48ee-9d08-42bfbee1ea16 发电机类

同一类的显示模式常量(items/ItemCardMultipleSensorLocation.java:50-54):DISPLAY_ENERGY = 1、DISPLAY_LIQUID_NAME = 1、DISPLAY_LIQUID_AMOUNT = 2、DISPLAY_LIQUID_FREE = 3、DISPLAY_LIQUID_CAPACITY = 4、DISPLAY_LIQUID_PERCENTAGE = 5。

显示名缺陷

itemMultipleSensorLocationCard = new ItemCardMultipleSensorLocation();(IC2NuclearControl.java:146)是 initBlocks() 中唯一没有链式调用 .setUnlocalizedName(...) 的卡片。items/ 下所有卡片的 grep setUnlocalizedName 结果为 0 命中——未本地化名一律在 initBlocks() 里链式设置,只有这一处漏了。

语言文件中与它对应的键是 item.itemCounterSensorLocationCard.name=Counter Sensor Location Card(assets/nuclearcontrol/lang/en_US.lang),键名与实际未本地化名不一致。

交互

触发 行为
放入面板卡槽 由 ItemCardBase 的 IPanelDataSource 实现读取,面板按范围设定查询
破坏面板 卡片随面板容器内容一起散落,ItemCardBase.isDamageable() 返回 false 不会被消耗

相关条目