Package dev.architectury.loom.forge
Class JarClassHierarchy
java.lang.Object
dev.architectury.loom.forge.JarClassHierarchy
- All Implemented Interfaces:
AccessTransformerRuleTranslator.ClassHierarchy
public final class JarClassHierarchy
extends Object
implements AccessTransformerRuleTranslator.ClassHierarchy
从 jar 里读出类继承关系,供
AccessTransformerRuleTranslator 做继承回退.
AT 允许把规则写在子类上、而成员声明在父类;翻译时必须沿继承链找到声明类。 映射表只按「声明类」收录成员,这个索引补的正是映射表没有的那部分信息。
为什么从 jar 读而不是从映射读
tiny 映射不含父类关系,只含类与成员的名字对应。继承关系必须以字节码为准, 因此这里直接读待处理 jar 的 class 头部(只取 this/super/interfaces,不碰指令体)。名称一律保持 jar 里的原始形态(notch 名、斜杠分隔),与映射树的 official 列一致, 命名空间换算交给翻译器,本类不做任何名称翻译。
-
Method Summary
-
Method Details
-
read
读取若干 jar 的继承关系.多个 jar 合并成一张表:MC 的 client/server/merged jar 与 forge jar 会分头提供一部分类, 继承链可能跨越它们。同名类以先出现者为准(与「同一份产物只该有一个定义」一致)。
- Parameters:
jars- 待扫描的 jar;不存在或无法打开的直接跳过- Returns:
- 继承关系索引
- Throws:
IOException- 读 jar 失败(文件存在但内容损坏)
-
parentsOf
Description copied from interface:AccessTransformerRuleTranslator.ClassHierarchyReturns 该类的直接父类型(父类与接口). 名称用斜杠形式(net/minecraft/...); 无父类型时返回空列表。- Specified by:
parentsOfin interfaceAccessTransformerRuleTranslator.ClassHierarchy- Returns:
- 该类的直接父类型(父类与接口)
-