创造标签与知识书

基本信息

属性 值
标签类 ModCreativeTab(system/creativetab/ModCreativeTab.java)
标签数量 2 个:tabMain / tabCharms
知识书分类 9 个(KnowledgeCategories)
知识书条目类 6 个(KnowledgeFragment 系列 + KnowledgeObject)
资源域 hardcoreenderexpansion(+ 1 张跨域贴图在 baubles)
语言文件 lang/ 下 19 个 .lang + lang/compendium/ 独立语言包

功能

2 个创造标签(ModCreativeTab.java:16-43)

registerTabs() 创建两个实例(:18-21),type 字段为 0 / 1:

标签 type 翻译名(正常) 图标物品
tabMain 0 Hardcore Ender Expansion ItemList.essence
tabCharms 1 Hardcore Ender Expansion - Charms ItemList.charm_pouch

愚人节模式:ModCommonProxy.hardcoreEnderbacon 为真时,标签名整体替换为 Hardcore Bacon Expansion / Hardcore Bacon Expansion - Charms(:34-36)。该标志由配置项 hardcoreEnderbaconMode 驱动(0 = 仅 4 月 1 日 / 1 = 始终 / 2 = 从不),见 配置项。

⚠️ getTranslatedTabLabel() 返回的是硬编码英文字面量,不是 lang key(:33-37)。也就是说这两个标签名不参与本地化。仓库无测试、无注释、无 commit 提及这一点,故仅记录事实,不断言为缺陷。

displayAllReleventItems(:45-54)遍历 list.getBlocks() 调 block.getSubBlocks(...)、再遍历 list.getItems() 调 item.getSubItems(...) —— 走原版标准路径,因此 ItemBlockWithSubtypes 类物品的多个 meta 会自动展开成多个条目。

跨域资源(check #3 实例)

本模组附带 1 张 属于另一个 mod 资源域的贴图:

src/main/resources/assets/baubles/textures/items/empty_bauble_slot_charm_pouch.png

用于替换 Baubles 的空护符槽位图标(配合 item/ItemCharmPouch.java:36-37 的 @Optional.Interface)。assets/baubles/ 目录下只有这一张贴图,无 lang、无 model。

资源域总览

域 内容
hardcoreenderexpansion blockstates/、lang/、models/、textures/、sounds/ + 根目录 hee_logo.png
baubles 仅 textures/items/empty_bauble_slot_charm_pouch.png(1 个文件)
src/main/resources/soundmeta/ durations.json(声音时长表,GTNH 音效打包需要)
src/main/resources/META-INF/ mixin refmap / coremod 声明
根目录 hee_logo.png(供 mcmod.info 的 logoFile 引用,mcmod.info:8)

语言:19 个 .lang(cs_CZ、da_DK、de_DE、en_US、es_ES …),知识书另有独立的 lang/compendium/ 语言包(en_US.lang / ru_RU.lang / zh_CN.lang / cs_CZ.lang / da_DK.lang …),与主 lang 分开维护。

数值

9 个知识书分类(mechanics/compendium/KnowledgeCategories.java:15-32)

分类常量 显示名 图标物品 行
OVERWORLD Overworld Blocks.stonebrick 16
DRAGON_LAIR Dragon Lair Blocks.dragon_egg 17
ENDSTONE_BLOBS Endstone Blob Blocks.end_stone 18
DUNGEON_TOWER Dungeon Tower BlockList.obsidian_special meta 1 19
METEOROIDS Meteoroid BlockList.sphalerite 20
BIOME_ISLANDS Biome Islands BlockList.special_effects meta BlockSpecialEffects.metaBiomeIslandIcon 21-23
BIOME_ISLAND_FOREST Biome Island - Infested Forest BlockList.end_terrain meta 0 24-26
BIOME_ISLAND_MOUNTAINS Biome Island - Burning Mountains BlockList.end_terrain meta 1 27-29
BIOME_ISLAND_ENCHISLAND Biome Island - Enchanted Island BlockList.end_terrain meta 2 30-32

分类顺序与源码无关(categoryList 数组按声明顺序),但 9 个分类正好覆盖生态岛的 3 种生态 + 世界生成的 6 个生成器(WorldGenObsidianSpike / WorldGenBlob / WorldGenEnergyCluster / WorldGenEndiumOre / WorldGenMeteoroid / MapGenTower),另加 Dragon Lair(末影龙)与 Overworld(主世界生态岛)。

知识书对象类型(mechanics/compendium/,25 个文件)

类别 文件
条目类型 KnowledgeFragment(基类)、KnowledgeFragmentCharm、KnowledgeFragmentCrafting、KnowledgeFragmentEnhancement、KnowledgeFragmentItemConversion、KnowledgeFragmentText(6 个)
对象载体 KnowledgeObject、IKnowledgeObjectInstance、ObjectBlock、ObjectDummy、ObjectItem、ObjectMob(6 个)
展示元件 CategoryDisplayElement、ObjectDisplayElement、PurchaseDisplayElement、IGuiItemStackRenderer(4 个)
玩家数据 PlayerCompendiumData、PlayerDiscoveryList、KnowledgeObservation(3 个)
事件 / 工具 CompendiumEvents、CompendiumEventsClient、KnowledgeUtils、KnowledgeRegistrations、KnowledgeCategory(5 个)

KnowledgeRegistrations 在 Loader.isModLoaded("NotEnoughItems") 时额外注册 NEI 相关内容(mechanics/compendium/KnowledgeRegistrations.java:271)。

交互

触发 行为
打开知识书 快捷键(CompendiumEventsClient.getCompendiumKeyCode(),客户端可配置)
NEI 物品列表中按快捷键 NotEnoughItemsIntegration 的 IContainerInputHandler.lastKeyTyped 直接打开对应条目(见 第三方模组集成)
获得新知识 触发成就时发 C03KnowledgeNotification(见 网络包)
同步 C19CompendiumData 下发条目数据;S02CompendiumPurchase 上行购买
购买 知识书条目可用精华购买(PurchaseDisplayElement)
愚人节 hardcoreEnderbaconMode 控制标签名与 ItemHardcoreEnderbacon.mode

相关条目