文本卡与时间卡
基本信息
| 属性 | 值 |
|---|---|
| 注册物品数 | 2 |
| 基类 | shedar.mods.ic2.nuclearcontrol.items.ItemCardBase(extends Item implements IPanelDataSource) |
| 最大堆叠 | 1(ItemCardBase.java:23) |
| 注册位置 | IC2NuclearControl.java:169-171 |
这两个卡片与传感器定位卡同属 ItemCardBase 家族,区别在于它们不查询机器,而是直接向面板输出文本。
Text Card(文本卡)
| 属性 | 值 |
|---|---|
| 注册名 | IC2NuclearControl:ItemTextCard |
| 类 | shedar.mods.ic2.nuclearcontrol.items.ItemCardText |
| 接口 | implements IAdvancedCardSettings |
| 英文显示名 | Text Card |
| 贴图名 | cardText(items/ItemCardText.java:29 传入基类构造函数) |
类定义证据:ItemCardText extends ItemCardBase implements IAdvancedCardSettings(items/ItemCardText.java:24)。实现 IAdvancedCardSettings 意味着它只能配合高级面板使用。
显示逻辑固定输出 10 行:从 line_9 倒序遍历到 line_0,跳过开头连续的空白行后逆序填入 PanelString 列表(items/ItemCardText.java:48-64)。也就是说文本内容存放在卡片的 line_0 … line_9 这 10 个 NBT 字符串键里。
编辑界面为 gui/GuiCardText.java,配合 gui/GuiTextArea.java 文本控件;容器为 containers/ContainerAdvancedInfoPanel.java。悬停时通过 CardHelper.getWrapper(itemStack).getTitle() 显示卡片标题(items/ItemCardText.java:67-73)。
Time Card(时间卡)
| 属性 | 值 |
|---|---|
| 注册名 | IC2NuclearControl:ItemTimeCard |
| 类 | shedar.mods.ic2.nuclearcontrol.items.ItemTimeCard |
| 接口 | 无附加接口 |
| 英文显示名 | Time Card |
| 贴图名 | cardTime(items/ItemTimeCard.java:26) |
类定义证据:ItemTimeCard extends ItemCardBase(items/ItemTimeCard.java:20)。
它输出单行时间文本,核心换算在 items/ItemTimeCard.java:45-63:
| 数值名 | 值 | 依据 |
|---|---|---|
| 卡片类型 UUID | new UUID(0, 1) |
items/ItemTimeCard.java:22 |
| 时间基准 | (worldTime + 6000) % 24000 |
items/ItemTimeCard.java:50 |
| 小时 | time / 1000 |
items/ItemTimeCard.java:51 |
| 分钟 | (time % 1000) * 6 / 100 |
items/ItemTimeCard.java:52 |
| 24 小时制开关常量 | MODE_24H = 1 |
items/ItemTimeCard.java:23 |
+ 6000 的偏移把游戏内 0 时刻对齐到正午。24 小时制开启时(getSetting(MODE_24H) 为真)追加 AM/PM 后缀并对 12 取模、0 时补为 12(items/ItemTimeCard.java:54-58)。
唯一的面板设置项是 24 小时制开关,label 取自语言键 msg.nc.cb24h(items/ItemTimeCard.java:67-70)。
数值
| 数值名 | 值 |
|---|---|
| Text Card 可存储行数 | 10(line_0 … line_9) |
| Time Card 输出行数 | 1(items/ItemTimeCard.java:47 的 new ArrayList<PanelString>(1)) |
| 两者最大堆叠 | 1 |
缺陷记录
ItemTimeCard.getStringData 通过 FMLClientHandler.instance().getClient().theWorld.getWorldTime() 直接取客户端世界时间(items/ItemTimeCard.java:50)。这意味着该卡片的数据生成只能在客户端执行。
相关条目
- 传感器定位卡 - 同族但查询机器数据的 6 个卡片
- Information Panel 阵列 - 文本卡只能用于其中的高级面板变体
- 卡片与面板 API -
IAdvancedCardSettings与PanelString定义