卡片与面板 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()。

相关条目