Class ExecutionProcessorContext
- All Implemented Interfaces:
ProcessorContext
ProcessorContext 实现.
ProcessorContextImpl 只能在配置期使用:它持有 ConfigContext,并通过
LoomGradleExtension 读项目模型。本类把这些依赖整体换成两类输入——**可被配置缓存
序列化的值**与**执行期由 ServiceFactory 取得的服务**,从而让 jar 处理器能在 Gradle 任务
里运行。
各项输入的来源
| 接口方法 | 本类输入 | 配置期对应物 |
|---|---|---|
isSplit() | ExecutionProcessorContext.JarConfigurationKind |
是否 MinecraftJarConfiguration.SPLIT |
isMerged() / includesClient() / includesServer() |
MinecraftJar.Type | MinecraftJar 实例上的同名方法 |
getMappings() | TinyMappingsService.Options |
MappingConfiguration.getMappingsService(...) |
createRemapper(MappingsNamespace, MappingsNamespace) |
TinyRemapperService.Options |
TinyRemapperHelper.getTinyRemapper(project, ...) |
disableObfuscation() / getProductionNamespace() /
getIntermediaryNamespace() |
布尔值 / 两个枚举 | LoomGradleExtension 上的同名取值 |
与原实现的语义差异
ProcessorContextImpl.createRemapper返回的LazyCloseable在close()时 调用TinyRemapper.finish();本类返回的 remapper 归TinyRemapperService所有, 由该服务在自身close()时 finish,故本类的close()不再重复 finish。 这与MinecraftJarRemap对「外部装配的 remapper」的处理一致。createRemapper只能提供任务已经装配好的那一对命名空间(见该方法说明)。
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionExecutionProcessorContext(ServiceFactory serviceFactory, ExecutionProcessorContext.JarConfigurationKind jarConfiguration, MinecraftJar.Type jarType, boolean disableObfuscation, MappingsNamespace productionNamespace, MappingsNamespace intermediaryNamespace, TinyMappingsService.Options mappingsOptions, TinyRemapperService.Options remapperOptions) -
Method Summary
Modifier and TypeMethodDescriptionLazyCloseable<net.fabricmc.tinyremapper.TinyRemapper> createRemapper(MappingsNamespace from, MappingsNamespace to) boolean本平台在工具链中自带数据文件所用的命名空间:fabric/quilt 为intermediary、 forge 为srg、neoforge 为mojang.net.fabricmc.mappingio.tree.MemoryMappingTreebooleanbooleanbooleanisMerged()booleanisSplit()本上下文服务的 jar 是否来自 split(客户端与服务端分开产出)配置.
-
Constructor Details
-
ExecutionProcessorContext
public ExecutionProcessorContext(ServiceFactory serviceFactory, ExecutionProcessorContext.JarConfigurationKind jarConfiguration, MinecraftJar.Type jarType, boolean disableObfuscation, MappingsNamespace productionNamespace, MappingsNamespace intermediaryNamespace, TinyMappingsService.Options mappingsOptions, TinyRemapperService.Options remapperOptions) - Parameters:
serviceFactory- 执行期的作用域服务工厂,通常在一次任务动作内创建并随任务结束关闭jarConfiguration- 本次构建的 jar 配置身份jarType- 本上下文服务的那个 jar 的类型disableObfuscation- 是否禁用混淆productionNamespace- 生产命名空间intermediaryNamespace- 平台默认命名空间,例如 Forge 的srgmappingsOptions- 取映射树所需的映射服务配置remapperOptions- 取重映射器所需的重映射服务配置
-
-
Method Details
-
isSplit
public boolean isSplit()Description copied from interface:ProcessorContext本上下文服务的 jar 是否来自 split(客户端与服务端分开产出)配置.split 配置会产出两个 jar,它们与 client only / server only 配置产出的 jar 在
ProcessorContext.isMerged()、ProcessorContext.includesClient()、ProcessorContext.includesServer()上完全一致: 单看一个 jar 无法区分「这是 split 的一半」还是「本来就是单边配置」。 只有本方法能给出这一信息,需要在 split 下改变行为的 processor 必须用它判断。- Specified by:
isSplitin interfaceProcessorContext- Returns:
- 本 jar 是否属于 split 配置
-
isMerged
public boolean isMerged()- Specified by:
isMergedin interfaceProcessorContext
-
includesClient
public boolean includesClient()- Specified by:
includesClientin interfaceProcessorContext
-
includesServer
public boolean includesServer()- Specified by:
includesServerin interfaceProcessorContext
-
getMappings
public net.fabricmc.mappingio.tree.MemoryMappingTree getMappings()- Specified by:
getMappingsin interfaceProcessorContext
-
disableObfuscation
public boolean disableObfuscation()- Specified by:
disableObfuscationin interfaceProcessorContext
-
getProductionNamespace
- Specified by:
getProductionNamespacein interfaceProcessorContext
-
getIntermediaryNamespace
Description copied from interface:ProcessorContext本平台在工具链中自带数据文件所用的命名空间:fabric/quilt 为intermediary、 forge 为srg、neoforge 为mojang.它与
ProcessorContext.getProductionNamespace()不是一回事:后者可以被用户配置成official之类的取值,而平台自带的文件(例如 Forge 的accesstransformer.cfg) 始终写在平台自己的命名空间里。- Specified by:
getIntermediaryNamespacein interfaceProcessorContext- Returns:
- 平台默认命名空间
-
createRemapper
public LazyCloseable<net.fabricmc.tinyremapper.TinyRemapper> createRemapper(MappingsNamespace from, MappingsNamespace to) 执行期的重映射器由
TinyRemapperService统一装配,而它的 from/to 是任务输入的一部分, 不能被调用方任意改写。因此只有当请求的命名空间对与TinyRemapperService.Options声明的 那一对一致时才返回 remapper,否则抛出异常——现有处理器请求的都是productionNamespace -> named,任务按这一对装配即可。- Specified by:
createRemapperin interfaceProcessorContext
-