传感器定位卡
基本信息
| 属性 | 值 |
|---|---|
| 注册物品数 | 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 不会被消耗 |
相关条目
- 传感器工具包 - 用来「安装」定位卡的工具
- Information Panel 阵列 - 卡片的实际显示载体
- 卡片与面板 API -
IPanelDataSource/ICardWrapper等接口定义