Hardcore Ender Expansion

[!INFO] Git Commit: abfc964 | Updated: 2026-10-02

Hardcore Ender Expansion(HEE)由 chylex 编写,是 GTNH 平台上覆盖原版末地的大型内容 mod。它不新增维度,而是把维度 ID 1 的末地整体重做:末影龙的死亡次数会被持久化并加进世界种子(world/WorldProviderHardcoreEnd.java:18),每多杀一次龙,末地地形、塔与生态岛的位置全部改变。核心内容是 49 个方块、44 个物品、48 个自建实体 + 2 个原版实体替换(合计 50 个实体注册)、1 个被完全替换的末影人种群、22 条诅咒配方与 2 个创造标签。

它带 1 个 coremod(HEECore)、1 个 early mixin(替换原版龙蛋方块)、7 类可强化物品系统、21 种护符 / 6 种符文、14 个 IMC 扩展点,以及末地专属的「能量」经济(区块按距离回充,抽取能量把物品换成精华)。

身份字符串

以下字符串互不相同,是本 mod 记录在案的全部身份标识:

身份 值 来源
modid HardcoreEnderExpansion HardcoreEnderExpansion.java:61(@Mod(modid = …));gradle.properties:10 modId = HardcoreEnderExpansion
分类名 / 目录名 hardcore-ender-expansion 本 wiki 分类名,驼峰转小写(relation.md 行)
目录名(源码包) chylex.hee gradle.properties:14 modGroup = chylex.hee
GUI 工厂 chylex.hee.gui.core.ModGuiFactory HardcoreEnderExpansion.java:65 的 @Mod(guiFactory = …)
@Mod 显示名 Hardcore Ender Expansion HardcoreEnderExpansion.java:62;gradle.properties:6 modName = Hardcore Ender Expansion
FML 容器 modid(coremod 类) chylex.hee.HEECore gradle.properties:131 coreModClass = HEECore;类上 @IFMLLoadingPlugin.MCVersion("1.7.10")(HEECore.java:12-13)。coremod 本身无自己的 modid,getModContainerClass() 与 getSetupClass() 都返回 null(HEECore.java:31-38)
资源域 hardcoreenderexpansion(全小写、无下划线) src/main/resources/assets/hardcoreenderexpansion/
注册域 方块走 GameRegistry.registerBlock 3 参重载 → 域取自当前 modid,即 HardcoreEnderExpansion;物品与 TileEntity 显式传 "HardcoreEnderExpansion"(system/util/GameRegistryUtil.java:20-30) 同左
网络频道名 hee packets/PacketPipeline.java:45
混合配置名 mixins.HardcoreEnderExpansion.json / mixins.HardcoreEnderExpansion.early.json src/main/resources/
Access Transformer 文件 hee_at.cfg gradle.properties:107 accessTransformersFile = hee_at.cfg
jar 名 customArchiveBaseName 被注释掉,jar 名回落到 modId,即 HardcoreEnderExpansion-1.12.28-GTNH.jar gradle.properties:199 # customArchiveBaseName =(注释掉)
结构 IO 前缀 hardcoreenderdragon_EndTower / …_EndTowerC / hardcoreenderdragon_EndIsland / …_EndIslandC(注意 hardcoreenderdragon 无 e) world/DimensionOverride.java:36-39
创造标签显示名 Hardcore Ender Expansion / Hardcore Ender Expansion - Charms(愚人节时变 Hardcore Bacon Expansion) system/creativetab/ModCreativeTab.java:34-36

@Mod 类数量 = 1:chylex.hee.HardcoreEnderExpansion(HardcoreEnderExpansion.java:60-66;grep -rc '@Mod(' 在全树只命中这 1 个文件)。@Mod 另带 useMetadata = true(:64)与 guiFactory = "chylex.hee.gui.core.ModGuiFactory"(:65)。HEECore 不是 @Mod,它是 IFMLLoadingPlugin。

依赖

层级 模组 modid 声明位置
硬依赖(唯一) GTNHLib gtnhlib(小写) @Mod(dependencies = "required-after:gtnhlib@[0.5.22,)")(HardcoreEnderExpansion.java:66)+ dependencies.gradle:4 implementation 'com.github.GTNewHorizons:GTNHLib:0.11.48:dev'
编译期(非 FML 硬依赖) NotEnoughItems NotEnoughItems dependencies.gradle:5 implementation。@Mod 依赖串里没有它
软依赖 Baubles-Expanded Baubles|Expanded dependencies.gradle:7 compileOnly + 处理器(坐标名 ≠ modid)
软依赖 Thaumcraft Thaumcraft dependencies.gradle:8 compileOnly + 处理器
软依赖 Mobs-Info mobsinfo dependencies.gradle:9 compileOnly + 4 处 @Optional.Interface(坐标名 ≠ modid)
软依赖 Baubles Baubles 8 处 @Optional.Interface(仅 ItemCharmPouch 用)
纯运行时(无 gradle 声明) MineFactory Reloaded MineFactoryReloaded 只在 handlers/MineFactoryReloadedIntegration.java:19-21 用 Class.forName("powercrystals.minefactoryreloaded.MFRRegistry") 反射接入
引用但非依赖 Minecraft minecraft mechanics/misc/StardustDecomposition.java:93、:111、:128

版本

MC 1.7.10 / Forge 10.13.4.1614。三种版本门控形式的实际结果:

  • 形式 ① gradle.properties:没有 modVersion 键(GTNH 约定插件从 git tag 派生),但含 minecraftVersion = 1.7.10(:24)与 forgeVersion = 10.13.4.1614(:27)—— 这是本 mod 采用的 MC 版本证据
  • 形式 ② build.gradle:只有 id 'com.gtnewhorizons.gtnhconvention',无版本字符串
  • 形式 ③ Tags 类:源码树中不存在(generateGradleTokenClass = chylex.hee.Tags,gradle.properties:77 + gradleTokenVersion = VERSION,:80,构建期生成),但 @Mod(version = Tags.VERSION)(HardcoreEnderExpansion.java:63)证明接线正确
  • 旁证:mcmod.info:6 的 "mcversion": "${minecraftVersion}" 指向同一键;HEECore.java:12 的 @IFMLLoadingPlugin.MCVersion("1.7.10")

本仓库不是反编译 jar,是带完整 gradle 构建的源码树(gradlew / settings.gradle / dependencies.gradle / gradle.properties 齐备),因此适用简报检查 #1 的正常路径,不属于 (A)/(B) 两种例外。

为什么不用 git describe:git describe --tags 在 HEAD 上给出 1.12.28-GTNH(git tag --points-at HEAD 同值,已用 git cat-file -t abfc9640f622389a81ca6e1c6b6acce928c0f44b → commit 验证为合法提交对象)。这是模组自身版本号,不是 Minecraft 版本号 —— 简报列举的 computronics 1.9.10-GTNH、openblocks 1.12.22-GTNH、worldedit-gtnh v0.0.10 等同类陷阱都发生在 1.7.10 源码树上,1.12.28 同样如此。故 MC 版本只依据 gradle.properties 的 minecraftVersion / forgeVersion。

注册内容(活注册)

类别 数量 证据
方块 49 init/BlockList.java:182-406;grep -c setBlockName( → 49 交叉验证
物品 44 init/ItemList.java:130-308;grep -c setUnlocalizedName( → 46 − 2 条注释行 = 44 交叉验证
TileEntity 13 init/BlockList.java:500-515(registerTileEntities())
自建实体(GameRegistryUtil.registerEntity) 48 init/EntityList.java:60-134(47 个单行 + 2 个 GameRegistryUtil / .registerEntity 跨行调用,L95、L105)
原版实体替换(replaceVanillaEntity) 2 init/EntityList.java:57-58:原版末影人(ID 58)与末影水晶(ID 200)
实体合计 50 48 + 2
实际配方 71 mechanics/RecipeList.java,见合成配方总表
怪物 / Boss 14 / 4 init/EntityList.java:64-77 / :60-63
成就 / 挑战 24 / 3 system/achievements/AchievementManager.java
网络包 25 packets/client/ 20 + packets/server/ 5
集成处理器 4 system/integration/handlers/
IMC 消息 key 14 api/message/handlers/ 6 个类
物品字典名 7 BlockList.java:491-497(6 条 oreHee*/blockHeeEndium)+ ItemList.java:364(ingotHeeEndium)
液体 1 BlockEnderGoo.fluid,BlockList.java:180
结构生成器 2 MapGenIsland / MapGenTower;另 TempleGenerator 为末影龙召唤时的程序化建造器
粒子/世界生成特性 6 world/feature/WorldGen*.java,全部在 BiomeDecoratorHardcoreEnd.java:47-52 实例化
创造标签 2 tabMain / tabCharms
维度 0 不新增维度,覆盖维度 ID 1

未注册内容(不算缺陷 —— 有 intent evidence)

world/structure/sanctuary/ 整棵子树 8 个文件(BlockSanctuaryBrain / EntityMobSanctuaryOverseer / TileEntitySanctuaryBrain / ComponentSanctuary / MapGenSanctuary / StructureSanctuary / SanctuaryConquerPointGen / SanctuaryMazeGen)完全没有接入。证据:

  • init/BlockList.java:402 与 init/EntityList.java:78-79 的注册调用被 // TODO SANCTUARY 注释掉
  • world/DimensionOverride.java:40-41 的两行 MapGenStructureIO 注册被 // TODO SANCTUARY 注释掉
  • 全仓库非注释引用扫描显示这 8 个类只在彼此之间互相引用,外部零引用

Intent evidence = 源码中 6 处 // TODO SANCTUARY 注释 + world/biome/BiomeDecoratorHardcoreEnd.java:36 的块注释仍把 Insidious Sanctuary | linear+− | 3200–8500–36000 列在规格表里。同理,ItemList.java:215、:285-286 的 sacred_wand / sacred_wand_cores 与 BlockList.java:261 的 sacred_stone 也是同一批未完成内容。

EntityProjectileSacredWand(init/EntityList.java:106)已注册,但其唯一来源 ItemSacredWand 未注册,故该投射物在正常游戏流程中不可获得。

方块列表

  • 建筑方块 - 19 个建材方块:黑曜石系列、破坏方砖家族、实验室废墟、诡异树
  • 矿石 - 6 种末地矿石,含 16 meta 星尘矿石与 6 条物品字典
  • 功能方块 - 9 个带 TileEntity 的机器方块与 7 类强化系统
  • 技术方块 - 17 个不可破坏/内部方块,含能量簇与末影传送门

物品列表

  • 材料 - 28 个材料类物品与 32 项能量定价表
  • 工具与功能物品 - 16 个主动使用的物品,含 16 种药水与 Baubles 接口
  • 护符与符文 - 21 种护符、6 种符文、护符合成匹配算法

机制列表

实体列表

  • Boss - 4 个 Boss 及其血量公式,含一处实体 ID 21 冲突
  • 怪物 - 14 种怪物(其中 12 种有刷怪蛋)、15 个刷怪蛋 meta、刷怪列表替换逻辑

世界列表

  • 末地维度覆盖 - 维度 ID 1 的完整接管流程与完整性校验
  • 生态岛 - 3 种生态、7 种内容变体、9 种随机偏差
  • 结构 - 2 个 MapGen、5 条概率曲线、8 层龙巢神殿
  • 世界生成 - 6 个生成器的逐项概率与数量参数

API 列表

  • IMC API - 14 个消息 key、12 种元素值类型、冻结注册表

集成列表

配置列表

  • 配置项 - 3 个配置节 19 个配置项,及其首次加载门控与配置迁移

系统列表

  • 网络包 - 25 个包的目录扫描发现机制与方向约定
  • 成就 - 24 个成就、3 个挑战与 ID 偏移公式
  • 创造标签与知识书 - 2 个标签、9 个知识书分类、19 个语言文件

配方列表