模组兼容

GuideNH 通过可插拔 provider 与宿主 mod 集成,宿主清单在 com/hfstudio/guidenh/integration/Mods.java 的枚举里,共 22 个。

集成代码在 integration/ 包(150 文件),由两个引导类拉起: GuideNhIntegrationBootstrap(通用,preInitCommon())与 GuideNhClientIntegrationBootstrap(客户端)。

⚠️ integration/ 下有 21 个子包,最大的三个是 api(29)、 ae2(28)、structurelib(23)——宿主数是 22,但集成代码量 不与宿主数成正比:NEI 一个宿主就占 nei(14)+ neicustomdiagram(1)包。

宿主 modid 清单(22)

modid 取自 Mods 枚举的构造参数,逐字照抄,含大小写与竖线:

枚举名 modid 说明
NotEnoughItems NotEnoughItems NEI,本 wiki 已收录
NeiCustomDiagram neicustomdiagram 小写全
BetterQuesting betterquesting 本 wiki 已收录
StructureLib structurelib 结构导出依赖
AE2 appliedenergistics2 Applied Energistics 2
GregTech gregtech 本 wiki 已收录
BartWorks bartworks GT 附属
KubaTech kubatech GT 附属
CarpentersBlocks CarpentersBlocks 首字母大写
ForgeMultipart ForgeMultipart Forge 自身的多方块
Railcraft Railcraft 本 wiki 已收录
BuildCraftTransport BuildCraft|Transport 带竖线
LogisticsPipes LogisticsPipes 本 wiki 已收录
WirelessRedstoneCore WR-CBE|Core 带竖线 + 连字符
DistantHorizons distanthorizons
EtFuturum etfuturum
SimpleSkinBackport simpleskinbackport
ChromaticTooltips chromatictooltips
Translocators Translocator 枚举名复数、modid 单数
TinkersConstruct TConstruct 枚举名与 modid 完全不同
BlockRenderer6343 blockrenderer6343
Angelica angelica

⚠️ 三个 modid 陷阱:

陷阱 枚举名 实际 modid
枚举名 ≠ modid TinkersConstruct TConstruct
单复数不一致 Translocators Translocator
带竖线 BuildCraftTransport BuildCraft|Transport

Mods 枚举还提供 resourceDomain 字段,由 modid.toLowerCase(Locale.ENGLISH) 推导——所以 CarpentersBlocks 的资源域是 carpentersblocks,贴图查找要用小写。

Provider 接口

注册中心 integration/api/GuideNhIntegrationRegistry.java 提供 28 个 register* 方法 (:82-769),覆盖 24 类可插拔 provider。

与方块显示直接相关的 5 个(也是 grep 'registerBlock' 的主要来源):

方法 用途 已注册的实现
registerBlockDisplayProvider(BlockDisplayProvider) <Block> / <BlockImage> 的方块显示 LogisticsPipesBlockDisplayProvider、BuildCraftBlockDisplayProvider、CarpentersBlocksBlockDisplayProvider
registerBlockDisplayNameProvider(BlockDisplayNameProvider) 方块显示名 CarpentersBlocksBlockDisplayNameProvider
registerBlockStatsProvider(BlockStatsProvider) <BlockStats> Ae2BlockStatsProvider、ForgeMultipartBlockStatsProvider、CarpentersBlocksBlockStatsProvider
registerBlockExportIdProvider(BlockExportIdProvider) 导出用方块 ID ForgeMultipartBlockExportIdProvider
registerItemStackNormalizationProvider(ItemStackNormalizationProvider) 物品堆栈归一化 GregTechHelpers::applyOreDictUnification

其余方法覆盖预览(registerPreviewTileEntityProvider / registerPreviewPrepareContributor 等)、配方(registerRawRecipeHandlerProvider / registerRecipeEntryProvider / registerRecipeHandlerRenderProvider 等 8 个)、 语法(registerSyntaxContributor / registerTagCompilerProvider)、 假世界(registerFakeWorldIntegration)与编辑器(registerEditorAction)等。

有 provider 的宿主(14)

22 个宿主里有 14 个注册了 provider,8 个只是被探测:

宿主 提供的 provider
NEI 8 个配方 provider(raw / entry / tooltip / animation / metadata / slot / drawable / render)
BetterQuesting GuideBuilderIntegrationHook + TagCompilerProvider + QuestHoverProvider
GregTech ItemStackNormalizationProvider(oreDict 统一)、FakeWorldIntegration、PreviewPrepareContributor、4 个注册/放置/预览/状态同步
ForgeMultipart BlockStatsProvider + BlockExportIdProvider + PreviewTileEntityProvider + PreviewTileEntityFinalizer + PreviewBlockRenderProvider
AE2 BlockStatsProvider + FakeWorldIntegration + PreviewPrepareContributor
BartWorks FakeWorldIntegration
Distant Horizons FakeWorldIntegration
LogisticsPipes BlockDisplayProvider + PreviewPrepareContributor
BuildCraft BlockDisplayProvider + PreviewPrepareContributor
CarpentersBlocks BlockDisplayProvider + BlockDisplayNameProvider + BlockStatsProvider
Railcraft PreviewPrepareContributor
Tinkers’ Construct PreviewPrepareContributor
SimpleSkinBackport 2 个玩家预览 provider(slim arm / preview player model)
EtFuturum 2 个玩家预览 provider(slim arm / elytra)

其余 8 个宿主(NeiCustomDiagram、StructureLib、KubaTech、 WirelessRedstoneCore、ChromaticTooltips、Translocators、 BlockRenderer6343、Angelica)在 Mods 枚举里被探测并写入 registerModDescriptor,但没有向 GuideNhIntegrationRegistry 注册任何 provider—— 这一结论来自对两个 bootstrap 全部 register* 调用点的穷举检索。

ForgeMultipart 尤其值得注意:ForgeMultipart 的方块在 ItemStack 里 可能是 multipart 组合而非单一 Block,所以需要 BlockExportIdProvider 与 BlockStatsProvider 两条专门处理。

跨分类链接

以下宿主在 relation.md 中已登记,可做跨分类引用:

  • betterquesting — BetterQuesting,只读显示兼容(3 个 mixin,无任务定义)。⚠️ 该分类尚未撰写,属前向引用
  • structurelib — StructureLib,结构导出的目标格式宿主 mod
  • gregtech — GregTech
  • logisticspipes — LogisticsPipes
  • railcraft — Railcraft

⚠️ NotEnoughItems(NEI)不在 relation.md 收录范围, 因此不建分类、也不做链接,仅在此点名。 (注意别与已收录的 nei-recipe-panels 混淆,那是 modid neirecipepanels 的另一个 mod。)

其余 8 个宿主(AE2、BartWorks、KubaTech、CarpentersBlocks、BuildCraft、 Tinkers’ Construct、Angelica、Distant Horizons 等)不在收录范围,故只在本页点名。

相关条目