卡片与面板 API
基本信息
| 属性 | 值 |
|---|---|
| 包名 | shedar.mods.ic2.nuclearcontrol.api |
| 类型总数 | 15(8 个接口 + 6 个类 + 1 个枚举) |
| Gradle 声明 | apiPackage = api(gradle.properties:102),配合 modGroup = shedar.mods.ic2.nuclearcontrol |
| 文件数 | 16(含 package-info.java) |
apiPackage 在 gradle.properties:101-102 的注释中给出解析规则:(apiPackage = api) + (modGroup = shedar.mods.ic2.nuclearcontrol) → shedar.mods.ic2.nuclearcontrol.api。包内无 Gradle 占位符需要展开。
类型清单
api/ 目录下 15 个类型的声明(grep -hnE '^public (interface|class|abstract class|enum)' api/*.java):
| 类型 | 种类 | 说明 |
|---|---|---|
BonyDebugger |
class | 调试辅助类 |
CardHelper |
public final class(api/CardHelper.java:12) |
卡片包装器工厂 |
CardState |
enum | 卡片数据获取结果状态 |
DisplaySettingHelper |
class | 读取面板显示设置的工具类 |
IAdvancedCardSettings |
interface | 实现该接口的卡片只能用于高级面板 |
ICardGui |
interface | 卡片自定义 GUI 的契约 |
ICardSettingsWrapper |
interface | 卡片设置读写封装 |
ICardWrapper |
interface | 卡片 NBT 读写封装 |
IPanelDataSource |
interface | 面板数据源契约 |
IPanelMultiCard |
interface | 单卡片承载多数据类型的契约 |
IRangeTriggerable |
interface | 卡片可作为范围触发器 |
IRemoteSensor |
interface | 卡片可远程监测目标 |
NewPanelSetting |
class(extends PanelSetting) |
面板设置项 |
PanelSetting |
class | 面板设置项基类 |
PanelString |
class | 面板显示的一行文本 |
8 个接口:IAdvancedCardSettings、ICardGui、ICardSettingsWrapper、ICardWrapper、IPanelDataSource、IPanelMultiCard、IRangeTriggerable、IRemoteSensor。
扩展点
模组实现方的接入路径是实现 IPanelDataSource——ItemCardBase 本身就 implements IPanelDataSource(items/ItemCardBase.java:19),并声明 5 个抽象方法(items/ItemCardBase.java:41-58):
| 抽象方法 | 作用 |
|---|---|
update(TileEntity panel, ICardWrapper card, int range) |
在面板方块上下文中取数 |
update(World world, ICardWrapper card, int range) |
在纯世界上下文中取数 |
getCardType() |
返回该卡片的 UUID 类型标识 |
getStringData(DisplaySettingHelper, ICardWrapper, boolean) |
产出 PanelString 列表供面板渲染 |
getSettingsList() |
产出该卡片在面板 GUI 中的设置项 |
模组内已有 4 个物品实现远程相关接口:ItemCardReactorSensorLocation(IRemoteSensor)、ItemCardEnergySensorLocation(IRemoteSensor + IRangeTriggerable)、ItemCardMultipleSensorLocation(IRemoteSensor + IPanelMultiCard + IRangeTriggerable)、ItemCard55Reactor(IRemoteSensor)。
阵列成员接口 IScreenPart 不在 api 包内,而位于根包 shedar.mods.ic2.nuclearcontrol(IScreenPart.java:5),共 3 个方法 setScreen(Screen) / getScreen() / updateData()。
相关条目
- Information Panel 阵列 -
IScreenPart的实际使用场景 - 传感器定位卡 -
IPanelDataSource的官方实现 - 文本卡与时间卡 -
IAdvancedCardSettings的实现