Class MinecraftLegacyPatchedProvider
-
Nested Class Summary
Nested classes/interfaces inherited from class dev.architectury.loom.forge.minecraft.MinecraftPatchedProvider
MinecraftPatchedProvider.ProductionOptions, MinecraftPatchedProvider.ThrowingProducer, MinecraftPatchedProvider.Type -
Field Summary
Fields inherited from class dev.architectury.loom.forge.minecraft.MinecraftPatchedProvider
dirty, logger, minecraftProvider, project, type -
Constructor Summary
ConstructorsConstructorDescriptionMinecraftLegacyPatchedProvider(org.gradle.api.Project project, MinecraftProvider minecraftProvider, MinecraftPatchedProvider.Type type) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean锁内二次确认:判定现有产物能否复用,并返回本次是否需要整链重建.protected Path[]Returns 本配置下必须可复用的共享产物列表,供MinecraftPatchedProvider.needsWork()判定.protected void对给定 jar 执行 Forge 的 binary patch.protected voidvoidprovide()voidremapJar(ServiceFactory serviceFactory) Methods inherited from class dev.architectury.loom.forge.minecraft.MinecraftPatchedProvider
accessTransform, accessTransformForge, copyMissingClasses, createAccessTransformerOptions, createBinpatcherTool, createMcpExecutor, createNeoForgeInstallerTools, createPrePatchJarMcpOptions, createPrePatchJarMcpOptions, get, getMinecraftPatchedIntermediateAtJar, getOrProduceMinecraftPatchedIntermediateJar, getPrePatchJarProducerTaskPath, isDirty, isPatchedJarUpToDate, isReusableJar, produceFinalJarsForTask, produceFinalJarsInto, producePatchedIntermediateForTask, productionOptions, provideProjectionBlocker, publishAtomically, remapJarProjectionBlocker, runAccessTransformer, runBinpatcher, runMcpExecutor, runProduction, withLock, withPatchedLock
-
Constructor Details
-
MinecraftLegacyPatchedProvider
public MinecraftLegacyPatchedProvider(org.gradle.api.Project project, MinecraftProvider minecraftProvider, MinecraftPatchedProvider.Type type)
-
-
Method Details
-
provide
- Overrides:
providein classMinecraftPatchedProvider- Throws:
Exception
-
checkCache
锁内二次确认:判定现有产物能否复用,并返回本次是否需要整链重建.与父类一致,本方法不再删除共享产物:删除会让锁外只做存在性判定的读方拿到缺失文件, 也会让其它工作树互相触发重建。legacy 链没有单一版本标记产物,任一件缺失即无法确认 其余产物与当前算法同代,因此按整链重建处理(各件仍以「临时文件 + 原子落位」重新生成)。
- Overrides:
checkCachein classMinecraftPatchedProvider- Returns:
- 是否需要整链重建
- Throws:
IOException
-
getGlobalCaches
Description copied from class:MinecraftPatchedProviderReturns 本配置下必须可复用的共享产物列表,供MinecraftPatchedProvider.needsWork()判定..列表只包含当前 jar 配置确实会生成的产物:server-only 不提供 client jar,
client-extra.jar既不生成也不进 classpath、不注册进 FORGE_EXTRA(见MinecraftPatchedProvider.providesClientJar()), 把它计入判定会让MinecraftPatchedProvider.needsWork()恒为真、每次构建都白取一次跨进程锁。- Overrides:
getGlobalCachesin classMinecraftPatchedProvider- Returns:
- 本配置下必须可复用的共享产物列表,供
MinecraftPatchedProvider.needsWork()判定
-
produceIntermediateJarIfMissing
Description copied from class:MinecraftPatchedProvider确保MinecraftPatchedProvider.getMinecraftPatchedIntermediateJar()指向的产物已存在.默认实现调用
MinecraftPatchedProvider.provide();legacy 链的产物在MinecraftPatchedProvider.remapJar(ServiceFactory)阶段生成(provide()只做判定),由子类覆盖补齐。任务路径下不能走
provide():那条路径只做接线、不写产物。本方法只被**配置期读者**调用 (getOrProduceMinecraftPatchedIntermediateJar的调用方:mappings 迁移的配置期回退路径), 而那个读者与MinecraftPatchedProvider.provideProjectionBlocker()用的是同一个判据——走到这里时任务路径本不该生效。 真走到这里(产物在判定之后被其它工作树删掉或写坏)时,provide()只做接线, 随后getOrProduceMinecraftPatchedIntermediateJar的可复用性复检会以明确异常报出, 而不是把不存在的路径交给迁移器去读。- Overrides:
produceIntermediateJarIfMissingin classMinecraftPatchedProvider- Throws:
Exception
-
remapJar
- Overrides:
remapJarin classMinecraftPatchedProvider- Throws:
Exception
-
patchJars
Description copied from class:MinecraftPatchedProvider对给定 jar 执行 Forge 的 binary patch.工具的 classpath、主类与参数模板都由
ForgeExternalToolService.Options声明: classpath 是惰性的(配置期只接线,取值推迟到真正执行时),发起调用也只依赖ServiceFactory。 因此本方法既能在配置期路径里调用,也能在把它连同调用点搬进任务之后于执行期调用—— 那条路径上不再有任何需要Project的同步求值。- Overrides:
patchJarsin classMinecraftPatchedProvider- Throws:
Exception
-
getMinecraftIntermediateJar
- Overrides:
getMinecraftIntermediateJarin classMinecraftPatchedProvider
-
getMinecraftPatchedIntermediateJar
- Overrides:
getMinecraftPatchedIntermediateJarin classMinecraftPatchedProvider
-
getMinecraftPatchedJar
- Overrides:
getMinecraftPatchedJarin classMinecraftPatchedProvider
-