通用插件(Universal Plugin)

基本信息

属性 值
插件 uid universal(UniversalPlugin.java:18,常量 Identifiers.NAMESPACE_UNIVERSAL,Identifiers.java:61)
依赖 mod 无
配置分类 plugins_autogen.universal(UniversalPlugin.registerClient 末段 setLanguageKey)
注册调用 服务端 6 次 / 客户端 8 次
生效侧 两侧

功能

universal 提供三类通用扩展视图,与具体方块/实体无关,靠接口探测自动生效:

  • 物品存储(ItemStorageProvider):面向 IInventory 与马匹背包,展示容器内容
  • 流体存储(FluidStorageProvider):面向 IFluidHandler,读取 getTankInfo(ForgeDirection.UNKNOWN)
  • 进度条(ProgressProvider):统一的进度显示抽象

流体的服务端包装在 CommonProxy.wrapFluidStorage:仅当 accessor 是 BlockAccessor 且其 TileEntity 实现 IFluidHandler 时才返回数据(CommonProxy.java:144-153);CommonProxy.fromFluidStorage 负责把 FluidTankInfo[] 聚合成 ViewGroup,并把超出 normalAmount 的部分折叠成一个 +N 记号(CommonProxy.java:155-179)。物品容器的收集同样带分派:EntityHorse 走 horse.horseChest,其余 IInventory 走通用迭代器(CommonProxy.java:123-142)。

注册内容

服务端(UniversalPlugin.register):

方法 目标类 provider
registerBlockDataProvider Block ItemStorageProvider.getBlock()
registerEntityDataProvider Entity ItemStorageProvider.getEntity()
registerBlockDataProvider Block FluidStorageProvider.getBlock()
registerEntityDataProvider Entity FluidStorageProvider.getEntity()
registerBlockDataProvider Block ProgressProvider.getBlock()
registerEntityDataProvider Entity ProgressProvider.getEntity()

客户端(UniversalPlugin.registerClient):同样 6 条 component 注册,外加

方法 provider
registerItemStorageClient ItemStorageProvider.Extension.INSTANCE
registerFluidStorageClient FluidStorageProvider.Extension.INSTANCE

三个 provider 都用 getBlock() / getEntity() 工厂方法而非常量,因为同一 provider 类需按方块侧/实体侧返回不同实现。

数值

配置项 默认值 作用
universal.itemstorage.normalamount 9 普通模式最多显示的物品数
universal.itemstorage.detailedamount 54 按住「显示详细信息」键时最多显示的物品数
universal.itemstorage.itemsperline 9 每行物品数
universal.itemstorage.shownameamount 4 显示物品名而非图标的物品数
universal.fluidstorage.normalamount 4 普通模式最多聚合的流体种数(CommonProxy.java:163 据此 break)
universal.fluidstorage.detailed false 详细模式开关
universal.fluidstorage.mode GAUGE GAUGE / ICON_TEXT / TEXT
universal.energystorage.* — 空分类,仅 // reserved(PluginsConfig.java:154-157)

进度条颜色取自 general.progresscolor(ProgressStyle.java:24-25、FluidStorageProvider.java:126,130)。

相关条目