Class MojangMappedMinecraftProvider.SplitImpl
java.lang.Object
net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider<SplitMinecraftProvider>
net.fabricmc.loom.configuration.providers.minecraft.mapped.MojangMappedMinecraftProvider<SplitMinecraftProvider>
net.fabricmc.loom.configuration.providers.minecraft.mapped.MojangMappedMinecraftProvider.SplitImpl
- All Implemented Interfaces:
MappedMinecraftProvider,MappedMinecraftProvider.ProviderImpl,MappedMinecraftProvider.Split
- Enclosing class:
MojangMappedMinecraftProvider<M extends MinecraftProvider>
public static final class MojangMappedMinecraftProvider.SplitImpl
extends MojangMappedMinecraftProvider<SplitMinecraftProvider>
implements MappedMinecraftProvider.Split
-
Nested Class Summary
Nested classes/interfaces inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.MojangMappedMinecraftProvider
MojangMappedMinecraftProvider.LegacyMergedImpl, MojangMappedMinecraftProvider.MergedImpl, MojangMappedMinecraftProvider.SingleJarImpl, MojangMappedMinecraftProvider.SplitImplNested classes/interfaces inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
AbstractMappedMinecraftProvider.MavenScope, AbstractMappedMinecraftProvider.OutputJar, AbstractMappedMinecraftProvider.ProvideContext, AbstractMappedMinecraftProvider.RemappedJars, AbstractMappedMinecraftProvider.RemapperHookKind, AbstractMappedMinecraftProvider.SimpleOutputJarNested classes/interfaces inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider
MappedMinecraftProvider.Merged, MappedMinecraftProvider.ProviderImpl, MappedMinecraftProvider.SingleJar, MappedMinecraftProvider.Split -
Field Summary
Fields inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
extension, minecraftProvider -
Constructor Summary
ConstructorsConstructorDescriptionSplitImpl(org.gradle.api.Project project, SplitMinecraftProvider minecraftProvider) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidconfigureRemapper(AbstractMappedMinecraftProvider.RemappedJars remappedJars, net.fabricmc.tinyremapper.TinyRemapper.Builder tinyRemapperBuilder) Methods inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.MojangMappedMinecraftProvider
getMavenScope, getTargetNamespaceMethods inherited from class net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider
cacheKey, configureSplitRemapper, createBackupJars, disableTaskProduction, getBackupJarPath, getDependencyNotation, getDependencyTypes, getJar, getMavenHelper, getMinecraftProvider, getName, getOutputJars, getProject, getRemapTask, getVersion, isUpToDate, provide, registerRemapTask, remapJar, requiresBackupJars, shouldRefreshOutputsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider
getMinecraftJarPathsMethods inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider.ProviderImpl
getJarMethods inherited from interface net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider.Split
getClientOnlyJar, getCommonJar, getMinecraftJars
-
Constructor Details
-
SplitImpl
-
-
Method Details
-
getRemappedJars
- Specified by:
getRemappedJarsin classAbstractMappedMinecraftProvider<SplitMinecraftProvider>- Returns:
- A list of jars that should be remapped
-
configureRemapper
protected void configureRemapper(AbstractMappedMinecraftProvider.RemappedJars remappedJars, net.fabricmc.tinyremapper.TinyRemapper.Builder tinyRemapperBuilder) - Overrides:
configureRemapperin classAbstractMappedMinecraftProvider<SplitMinecraftProvider>
-
remapperHookKind
Description copied from class:AbstractMappedMinecraftProviderReturns 本 provider 对AbstractMappedMinecraftProvider.configureRemapper(net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider.RemappedJars, net.fabricmc.tinyremapper.TinyRemapper.Builder)的覆写在投影视角下的形态..这是一个显式声明,不是探测:钩子是实例方法,它的效果(往
TinyRemapper.Builder上挂什么) 无法被序列化成任务输入,而反射只能确认「覆写了」、不能确认「覆写成什么」。因此默认值刻意保守:AbstractMappedMinecraftProvider.RemapperHookKind.UNKNOWN,即「不可假定」。不认识的覆写一律拒绝投影,而不是把它当作空实现—— 后者会得到「任务成功、产物却比配置期少了钩子改动」的静默损坏。三种形态各自意味着什么
AbstractMappedMinecraftProvider.RemapperHookKind.NO_OP:钩子什么也不挂,任务侧injectClientSidedVisitor = false就是精确复现。适用两种情形:「压根没有覆写」(基类的空实现,由overridesRemapperHook()判定,不需要声明),以及「覆写已被证明是空操作」。后者是对覆写体的一处断言,反射校验不了它, 只能靠证据支撑——把「为什么恒不挂」的证据写在声明处的注释里。AbstractMappedMinecraftProvider.RemapperHookKind.SPLIT_CLIENT_VISITOR_ONLY:钩子的效果恰好是AbstractMappedMinecraftProvider.configureSplitRemapper(net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider.RemappedJars, net.fabricmc.tinyremapper.TinyRemapper.Builder)——非 merged 且含客户端的 jar 挂SidedClassVisitor.CLIENT, 其余 jar 什么也不挂。任务侧已经按 jar 承载了这个效果(RemapMinecraftTask.getInjectClientSidedVisitor()), 所以声明之后本 provider 的每个 jar 都能被投影:需要 visitor 的那个 jar 由任务挂上, 不需要的那个两边都不挂。声明是对「覆写体干了什么」的断言,代码本身无法校验它,因此只有 「覆写体就是一行configureSplitRemapper(remappedJars, tinyRemapperBuilder)」这类 可以逐字核对的情形才该如此声明;覆写体的判据与configureSplitRemapper不同时 (例如按别的条件决定是否挂 visitor),即使「看起来是同一件事」也必须保持UNKNOWN:任务侧的注入条件复刻的是configureSplitRemapper的判据, 判据不同就会在某个 jar 上分叉。AbstractMappedMinecraftProvider.RemapperHookKind.UNKNOWN:无法判定,拒绝投影。第三方覆写只要不声明就落在这里。
- Overrides:
remapperHookKindin classAbstractMappedMinecraftProvider<SplitMinecraftProvider>- Returns:
- 本 provider 对
AbstractMappedMinecraftProvider.configureRemapper(net.fabricmc.loom.configuration.providers.minecraft.mapped.AbstractMappedMinecraftProvider.RemappedJars, net.fabricmc.tinyremapper.TinyRemapper.Builder)的覆写在投影视角下的形态
-