Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Locator rewrite #112

Merged
merged 39 commits into from
May 1, 2024
Merged

Locator rewrite #112

merged 39 commits into from
May 1, 2024

Conversation

Matyrobbrt
Copy link
Member

@Matyrobbrt Matyrobbrt commented Apr 8, 2024

The overall goal of this PR is to make the code structure in the FML mod discovery process easier to follow and to support a better end-to-end error reporting experience for mod loading issues of all kinds.

To this end, the PR rewrites the mod discovery system with the following changes:

  • Remove superfluous API surface
  • Add test coverage to the mod discovervy process by trying to simulate our common installation environments (Production, NeoForge Developoment, Mod Development)
  • Unify the reporting of mod loading errors and warnings on a single type ModLoadingIssue, and provide a single exception that can report one or more such issues up the call chain (ModLoadingException)
  • Allow locators to produce output at different levels of the discovery pipeline:
    • Unprocessed filesystem locations (i.e. from files in the mods folder)
    • Virtual Jar Files combined from various file-system locations and filtered (i.e. userdev locator that splits the combined Minecraft+Neoforge Jar into multiple separate virtual Jar files)
    • Fully built mod files (such as the Minecraft mod-file for which the locator provides the mod metadata on-the-fly)
  • Allow locators to also supply mod loading issues (warnings and errors) on a per-file basis
  • Introduce a priority system for locators and readers, allowing user supplied implementations to go before/after the built-in ones
  • Untangle the dependency between locators and launch targets by having launch targets supply additional locators that are specific to the environment they are concerned with (i.e. the production launch targets supply locators for the production client/server)
  • Untagle the dependency on the early phase ModLauncher discovery by determining whether a file has already been loaded not by reaching into previous locators statically, but rather by inspecting the ModLauncher ModuleLayers that have already been built when FML starts mod discovery.

Update PR in NeoForge: neoforged/NeoForge#834

@Matyrobbrt Matyrobbrt added enhancement New feature or request breaking-change labels Apr 8, 2024
@neoforged-pr-publishing
Copy link

neoforged-pr-publishing bot commented Apr 8, 2024

  • Publish PR to GitHub Packages

Last commit published: d65af2fe7676d16fa80e2beef52a1707ebb7a0b2.

PR Publishing

The artifacts published by this PR:

Repository Declaration

In order to use the artifacts published by the PR, add the following repository to your buildscript:

repositories {
    maven {
        name 'Maven for PR #112' // https://github.com/neoforged/FancyModLoader/pull/112
        url 'https://prmaven.neoforged.net/FancyModLoader/pr112'
        content {
            includeModule('net.neoforged.fancymodloader', 'earlydisplay')
            includeModule('net.neoforged.fancymodloader', 'loader')
        }
    }
}

@shartte shartte force-pushed the locator-rewrite branch 4 times, most recently from fad1320 to 53f4350 Compare April 16, 2024 23:53
README.md Outdated Show resolved Hide resolved
@shartte shartte force-pushed the locator-rewrite branch 2 times, most recently from bb2b143 to ab90b46 Compare April 20, 2024 17:41
@neoforged-compatibility-checks
Copy link

neoforged-compatibility-checks bot commented Apr 20, 2024

@Matyrobbrt, this PR introduces breaking changes.
Fortunately, this project is currently accepting breaking changes, but if they are not intentional, please revert them.
Last checked commit: d65af2fe7676d16fa80e2beef52a1707ebb7a0b2.

Compatibility checks

loader (:loader)

  • net/neoforged/fml/loading/ClasspathTransformerDiscoverer
    • scanModClasses()V: ❗ Method was removed
    • lambda$scanModClasses$3(I)[Ljava/nio/file/Path;: ❗ Method was removed
    • lambda$scanModClasses$4(Ljava/lang/String;Ljava/util/List;)V: ❗ Method was removed
    • lambda$scanModClasses$2(I)[Ljava/nio/file/Path;: ❗ Method was removed
    • locateTransformers(Ljava/lang/String;)V: ❗ Method was removed
    • scan(Ljava/nio/file/Path;)V: ❗ Method was removed
    • <clinit>()V: ❗ Method was removed
    • lambda$allExcluded$1(Lcpw/mods/modlauncher/api/NamedPath;)Ljava/nio/file/Path;: ❗ Method was removed
    • allExcluded()Ljava/util/List;: ❗ Method was removed
    • found:Ljava/util/List;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/JarInJarDependencyLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/BackgroundScanHandler$ScanStatus
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/CommonLaunchHandler$1ExplodedModPath
    • modid()Ljava/lang/String;: ❗ Method was removed
    • modid:Ljava/lang/String;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/AbstractModProvider$DefaultModFileInfo
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/EarlyLoadingException$ExceptionData
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/ModSorter
    • lambda$verifyDependencyVersions$16(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$20(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Ljava/lang/String;: ❗ Method was removed
    • lambda$verifyDependencyVersions$21(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$25(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Ljava/lang/String;: ❗ Method was removed
    • lambda$modVersionNotContained$26(Ljava/util/Map;Ljava/lang/String;Lorg/apache/maven/artifact/versioning/VersionRange;)Z: ❗ Method was removed
    • lambda$detectSystemMods$9(Ljava/util/jar/Attributes;)Ljava/lang/String;: ❗ Method was removed
    • lambda$verifyDependencyVersions$14(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$23(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$17(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$22(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Ljava/lang/String;: ❗ Method was removed
    • lambda$verifyDependencyVersions$13(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$detectSystemMods$10(Ljava/util/Set;Ljava/lang/String;)V: ❗ Method was removed
    • lambda$verifyDependencyVersions$18(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$verifyDependencyVersions$11(Lnet/neoforged/neoforgespi/language/IModInfo;)Ljava/util/stream/Stream;: ❗ Method was removed
    • lambda$sort$5(Ljava/lang/String;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
    • lambda$verifyDependencyVersions$19(Ljava/util/Map;Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Z: ❗ Method was removed
    • lambda$detectSystemMods$8(Lnet/neoforged/fml/loading/moddiscovery/ModFile;)Z: ❗ Method was removed
  • net/neoforged/fml/loading/moddiscovery/ModFile
    • lambda$identifyLanguage$8(Lnet/neoforged/neoforgespi/language/IModFileInfo$LanguageSpec;)Lnet/neoforged/neoforgespi/language/IModLanguageProvider;: ❗ Method was removed
    • <init>(Lcpw/mods/jarhandling/SecureJar;Lnet/neoforged/neoforgespi/locating/IModProvider;Lnet/neoforged/neoforgespi/locating/ModFileFactory$ModFileInfoParser;)V: ❗ Method was removed
    • <init>(Lcpw/mods/jarhandling/SecureJar;Lnet/neoforged/neoforgespi/locating/IModProvider;Lnet/neoforged/neoforgespi/locating/ModFileFactory$ModFileInfoParser;Ljava/lang/String;)V: ❗ Method was removed
    • parseType(Lcpw/mods/jarhandling/SecureJar;)Ljava/lang/String;: ❗ Method was removed
    • getProvider()Lnet/neoforged/neoforgespi/locating/IModProvider;: ❗ Method was removed
    • provider:Lnet/neoforged/neoforgespi/locating/IModProvider;: ❗ Field was removed
  • net/neoforged/fml/loading/targets/FMLClientDevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModAnnotationVisitor
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/InvalidModFileException
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModAnnotation
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLDataUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModDiscoverer
    • lambda$new$10(Lnet/neoforged/neoforgespi/locating/IModLocator;)Ljava/lang/String;: ❗ Method was removed
    • lambda$new$4()Ljava/util/ServiceLoader;: ❗ Method was removed
    • lambda$new$7()Ljava/util/ServiceLoader;: ❗ Method was removed
    • lambda$discoverMods$14(Lnet/neoforged/neoforgespi/locating/IModFile;)Z: ❗ Method was removed
    • lambda$new$3(Lcpw/mods/modlauncher/api/TypesafeMap$Key;)Ljava/util/function/Consumer;: ❗ Method was removed
    • lambda$discoverMods$12(Lnet/neoforged/neoforgespi/locating/ModFileLoadingException;)Lnet/neoforged/neoforgespi/language/IModFileInfo;: ❗ Method was removed
    • lambda$new$1(Ljava/lang/String;)V: ❗ Method was removed
    • lambda$new$8(Ljava/util/ServiceConfigurationError;)V: ❗ Method was removed
    • lambda$new$0(Lcpw/mods/modlauncher/api/TypesafeMap$Key;)Lnet/neoforged/neoforgespi/locating/IModDirectoryLocatorFactory;: ❗ Method was removed
    • lambda$discoverMods$13(Lnet/neoforged/neoforgespi/locating/IModFile;)Z: ❗ Method was removed
    • <init>(Ljava/util/Map;)V: ❗ Method was removed
    • handleLocatedFiles(Ljava/util/List;Ljava/util/List;)V: ❗ Method was removed
    • lambda$new$5(Ljava/util/ServiceConfigurationError;)V: ❗ Method was removed
    • lambda$new$6(Ljava/util/Map;Lnet/neoforged/neoforgespi/locating/IModLocator;)V: ❗ Method was removed
    • lambda$new$2()Ljava/util/function/Consumer;: ❗ Method was removed
    • lambda$new$11(Lnet/neoforged/neoforgespi/locating/IDependencyLocator;)Ljava/lang/String;: ❗ Method was removed
    • lambda$new$9(Ljava/util/Map;Lnet/neoforged/neoforgespi/locating/IDependencyLocator;)V: ❗ Method was removed
    • modLocators:Ljava/util/ServiceLoader;: ❗ Field was removed
    • modLocatorList:Ljava/util/List;: ❗ Field was removed
    • dependencyLocatorList:Ljava/util/List;: ❗ Field was removed
  • net/neoforged/fml/LoadingFailedException
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModAnnotation$EnumHolder
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/locating/IModLocator$ModFileOrException
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLClientUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/locating/ModFileFactory
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/language/IModLanguageProvider
    • consumeLifecycleEvent(Ljava/util/function/Supplier;)V: ❗ Method was removed
  • net/neoforged/fml/ModList
    • <clinit>()V: ❗ Method was removed
    • newForkJoinWorkerThread(Ljava/util/concurrent/ForkJoinPool;)Ljava/util/concurrent/ForkJoinWorkerThread;: ❗ Method was removed
    • LOGGER:Lorg/apache/logging/log4j/Logger;: ❗ Field was removed
  • net/neoforged/neoforgespi/locating/IModDirectoryLocatorFactory
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeDataDevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/FMLEnvironment
    • secureJarsEnabled:Z: ❗ Field was removed
  • net/neoforged/fml/loading/EarlyLoadingException
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModFileInfo
    • lambda$new$0()Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
    • lambda$new$1()Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
    • missingLicense()Z: ❗ Method was removed
  • net/neoforged/fml/loading/LoadingModList
    • addForScanning(Lnet/neoforged/fml/loading/moddiscovery/BackgroundScanHandler;)V: ❗ Method was removed
    • getErrors()Ljava/util/List;: ❗ Method was removed
    • of(Ljava/util/List;Ljava/util/List;Lnet/neoforged/fml/loading/EarlyLoadingException;)Lnet/neoforged/fml/loading/LoadingModList;: ❗ Method was removed
    • getBrokenFiles()Ljava/util/List;: ❗ Method was removed
    • setBrokenFiles(Ljava/util/List;)V: ❗ Method was removed
    • getWarnings()Ljava/util/List;: ❗ Method was removed
    • brokenFiles:Ljava/util/List;: ❗ Field was removed
    • preLoadWarnings:Ljava/util/List;: ❗ Field was removed
    • preLoadErrors:Ljava/util/List;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/ExplodedDirectoryLocator$ExplodedMod
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/AbstractJarFileModProvider
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/BuiltinGameLibraryLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/BackgroundScanHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModValidator
    • <init>(Ljava/util/Map;Ljava/util/List;Ljava/util/List;)V: ❗ Method was removed
    • stage2Validation()Lnet/neoforged/fml/loading/moddiscovery/BackgroundScanHandler;: ❗ Method was removed
    • validateFiles(Ljava/util/List;)Ljava/util/List;: ❗ Method was removed
    • validateLanguages()Ljava/util/List;: ❗ Method was removed
    • discoveryErrorData:Ljava/util/List;: ❗ Field was removed
    • brokenFiles:Ljava/util/List;: ❗ Field was removed
  • net/neoforged/fml/loading/targets/ForgeClientDevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/CommonServerLaunchHandler
    • lambda$getMinecraftPaths$0(Ljava/lang/String;Ljava/lang/String;)Z: ❗ Method was removed
    • processMCStream(Lnet/neoforged/fml/loading/VersionInfo;Ljava/util/stream/Stream$Builder;Ljava/util/stream/Stream$Builder;)V: ❗ Method was removed
    • getMinecraftPaths()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths;: ❗ Method was removed
  • net/neoforged/fml/loading/ModSorter$DependencyResolutionResult
    • lambda$buildErrorMessages$1(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
    • lambda$buildErrorMessages$2(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
    • lambda$buildWarningMessages$0(Lnet/neoforged/neoforgespi/language/IModInfo$ModVersion;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
  • net/neoforged/fml/loading/targets/CommonUserdevLaunchHandler
    • processStreams([Ljava/lang/String;Lnet/neoforged/fml/loading/VersionInfo;Ljava/util/stream/Stream$Builder;Ljava/util/stream/Stream$Builder;)V: ❗ Method was removed
    • getMinecraftPaths()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths;: ❗ Method was removed
    • lambda$getMinecraftPaths$0(Ljava/util/stream/Stream$Builder;Ljava/lang/String;Ljava/util/List;)V: ❗ Method was removed
  • net/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/locating/ModFileFactory$ModFileInfoParser
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLServerUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/LauncherVersion
    • LOGGER:Lorg/slf4j/Logger;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/AbstractJarFileModLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/UniqueModListBuilder
    • lambda$buildUniqueList$6(Ljava/lang/String;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
    • lambda$buildUniqueList$10(Ljava/lang/String;)Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;: ❗ Method was removed
  • net/neoforged/fml/loading/moddiscovery/ModMethodVisitor
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/LanguageLoadingProvider
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/JarInJarDependencyLocator$ModWithVersionRange
    • ❗ Class no longer exists
  • net/neoforged/fml/ModLoader
    • lambda$collectLoadingErrors$0(Lnet/neoforged/neoforgespi/locating/IModFile;)Lnet/neoforged/fml/ModLoadingWarning;: ❗ Method was removed
    • lambda$gatherAndInitializeMods$8(Lnet/neoforged/neoforgespi/locating/ForgeFeature$Bound;)Lnet/neoforged/fml/ModLoadingException;: ❗ Method was removed
    • lambda$collectLoadingErrors$1(Lnet/neoforged/neoforgespi/language/IModInfo;Lnet/neoforged/neoforgespi/language/IModInfo;)Z: ❗ Method was removed
    • lambda$dispatchParallelTask$12(Lnet/neoforged/fml/loading/progress/ProgressMeter;Ljava/lang/Void;Ljava/lang/Throwable;)V: ❗ Method was removed
    • lambda$postEvent$20(Lnet/neoforged/bus/api/EventPriority;Lnet/neoforged/bus/api/Event;Lnet/neoforged/fml/ModContainer;)V: ❗ Method was removed
    • lambda$gatherAndInitializeMods$7(Lnet/neoforged/neoforgespi/locating/ForgeFeature$Bound;)Z: ❗ Method was removed
    • lambda$buildModContainerFromTOML$18(Ljava/lang/String;)Lnet/neoforged/fml/ModLoadingException;: ❗ Method was removed
    • lambda$collectLoadingErrors$2(Lnet/neoforged/neoforgespi/language/IModInfo;)Z: ❗ Method was removed
    • lambda$dispatchParallelTask$13(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;Lnet/neoforged/fml/loading/progress/ProgressMeter;Lnet/neoforged/fml/ModContainer;)Ljava/util/concurrent/CompletableFuture;: ❗ Method was removed
    • lambda$dispatchParallelEvent$10(Ljava/util/function/BiFunction;Lnet/neoforged/fml/DeferredWorkQueue;Lnet/neoforged/fml/ModContainer;)V: ❗ Method was removed
    • lambda$postEventWrapContainerInModOrder$22(Lnet/neoforged/fml/ModContainer;Lnet/neoforged/bus/api/Event;)V: ❗ Method was removed
    • lambda$postEventWrapContainerInModOrder$21(Lnet/neoforged/fml/ModContainer;Lnet/neoforged/bus/api/Event;)V: ❗ Method was removed
    • lambda$constructMods$9(Lnet/neoforged/fml/DeferredWorkQueue;Lnet/neoforged/fml/ModContainer;)V: ❗ Method was removed
    • lambda$buildMods$15(Lnet/neoforged/neoforgespi/locating/IModFile;Ljava/util/Map;Ljava/util/Map$Entry;)Lnet/neoforged/fml/ModContainer;: ❗ Method was removed
    • lambda$runEventGenerator$19(Ljava/util/List;Ljava/util/function/Function;Lnet/neoforged/fml/ModContainer;)V: ❗ Method was removed
    • lambda$computeLanguageList$5(Lnet/neoforged/neoforgespi/language/IModLanguageProvider;)Ljava/lang/String;: ❗ Method was removed
    • lambda$computeModLauncherServiceList$6(Ljava/util/Map;)Ljava/lang/String;: ❗ Method was removed
    • lambda$dispatchParallelTask$11(Lnet/neoforged/fml/ModContainer;Ljava/util/function/Consumer;)V: ❗ Method was removed
    • addWarning(Lnet/neoforged/fml/ModLoadingWarning;)V: ❗ Method was removed
    • lambda$collectLoadingErrors$4(Lnet/neoforged/fml/loading/moddiscovery/ModFileInfo;)Lnet/neoforged/fml/ModLoadingException;: ❗ Method was removed
    • lambda$waitForFuture$14(Ljava/lang/Throwable;)Z: ❗ Method was removed
    • isDataGenRunning()Z: ❗ Method was removed
    • collectLoadingErrors(Lnet/neoforged/fml/loading/LoadingModList;)V: ❗ Method was removed
    • lambda$buildMods$16(Lnet/neoforged/fml/ModContainer;)Ljava/lang/String;: ❗ Method was removed
    • lambda$buildMods$17(Lnet/neoforged/fml/ModContainer;)Z: ❗ Method was removed
    • lambda$collectLoadingErrors$3(Lnet/neoforged/fml/loading/moddiscovery/ModFileInfo;)Z: ❗ Method was removed
    • lambda$postEventWithWrapInModOrder$23(Ljava/util/function/BiConsumer;Lnet/neoforged/bus/api/Event;Lnet/neoforged/bus/api/EventPriority;Ljava/util/function/BiConsumer;Lnet/neoforged/fml/ModContainer;)V: ❗ Method was removed
    • getWarnings()Ljava/util/List;: ❗ Method was removed
    • loadingWarnings:Ljava/util/List;: ❗ Field was removed
    • loadingStateValid:Z: ❗ Field was removed
    • runningDataGen:Z: ❗ Field was removed
    • loadingExceptions:Ljava/util/List;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/MavenDirectoryLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/VersionInfo
    • <init>(Ljava/util/Map;)V: ❗ Method was removed
  • net/neoforged/fml/ModLoadingWarning
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/CommonClientLaunchHandler
    • processMCStream(Lnet/neoforged/fml/loading/VersionInfo;Ljava/util/stream/Stream$Builder;Ljava/util/stream/Stream$Builder;)V: ❗ Method was removed
    • getMinecraftPaths()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths;: ❗ Method was removed
  • net/neoforged/fml/loading/TransformerDiscovererConstants
    • shouldLoadInServiceLayer([Ljava/nio/file/Path;)Z: ❗ Method was removed
  • net/neoforged/neoforgespi/locating/IDependencyLocator
    • ❗ Class missing interface: net/neoforged/neoforgespi/locating/IModProvider
    • scanMods(Ljava/lang/Iterable;)Ljava/util/List;: ❗ Method was removed
    • scanMods(Ljava/util/List;Lnet/neoforged/neoforgespi/locating/IDiscoveryPipeline;)V: ❗ Method was made abstract
  • net/neoforged/fml/loading/moddiscovery/ModFileParser
    • lambda$getMixinConfigs$2(Lnet/neoforged/neoforgespi/language/IModFileInfo;)Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
    • lambda$getAccessTransformers$4(Lnet/neoforged/neoforgespi/language/IModFileInfo;)Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
    • readModList(Lnet/neoforged/fml/loading/moddiscovery/ModFile;Lnet/neoforged/neoforgespi/locating/ModFileFactory$ModFileInfoParser;)Lnet/neoforged/neoforgespi/language/IModFileInfo;: ❗ Method was removed
  • net/neoforged/fml/loading/targets/CommonLaunchHandler
    • lambda$getModClasses$2(Ljava/lang/String;)[Ljava/lang/String;: ❗ Method was removed
    • lambda$getModClasses$3([Ljava/lang/String;)Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$1ExplodedModPath;: ❗ Method was removed
    • isProduction()Z: ❗ Method was made abstract
    • getMinecraftPaths()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths;: ❗ Method was removed
    • getFmlPaths([Ljava/lang/String;)Ljava/util/List;: ❗ Method was removed
    • lambda$getFmlPaths$0([Ljava/lang/String;Ljava/lang/String;)Z: ❗ Method was removed
    • lambda$getFmlPaths$1(Ljava/lang/String;)Ljava/nio/file/Path;: ❗ Method was removed
    • getLegacyClasspath()[Ljava/lang/String;: ❗ Method was removed
    • getModClasses()Ljava/util/Map;: ❗ Method was removed
  • net/neoforged/fml/loading/targets/FMLServerDevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ExplodedDirectoryLocator
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/locating/IModFile
    • getDiscoveryAttributes()Lnet/neoforged/neoforgespi/locating/ModFileDiscoveryAttributes;: ❗ Method was made abstract
    • getProvider()Lnet/neoforged/neoforgespi/locating/IModProvider;: ❗ Method was removed
  • net/neoforged/fml/loading/moddiscovery/MinecraftLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/LanguageLoadingProvider$ModLanguageWrapper
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModFieldVisitor
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeServerUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/CommonDevLaunchHandler
    • getMcFilter(Ljava/nio/file/Path;Ljava/util/List;Ljava/util/stream/Stream$Builder;)Lcpw/mods/niofs/union/UnionPathFilter;: ❗ Method was removed
    • lambda$getMcFilter$3(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z: ❗ Method was removed
    • lambda$searchJarOnClasspath$0(Ljava/lang/String;Ljava/lang/String;)Z: ❗ Method was removed
    • lambda$searchJarOnClasspath$1(Ljava/lang/String;)Ljava/nio/file/Path;: ❗ Method was removed
    • lambda$findJarOnClasspath$2(Ljava/lang/String;)Ljava/lang/IllegalStateException;: ❗ Method was removed
    • searchJarOnClasspath([Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional;: ❗ Method was removed
    • findJarOnClasspath([Ljava/lang/String;Ljava/lang/String;)Ljava/nio/file/Path;: ❗ Method was removed
    • getExcludedPrefixes()[Ljava/lang/String;: ❗ Method was removed
    • getMinecraftPaths()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler$LocatedPaths;: ❗ Method was removed
    • lambda$getMcFilter$4([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z: ❗ Method was removed
    • lambda$getMcFilter$5(I)[Ljava/nio/file/Path;: ❗ Method was removed
  • net/neoforged/fml/loading/targets/ForgeClientUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/InvalidModIdentifier
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModInfo$ModVersion
    • lambda$new$2(Lnet/neoforged/neoforgespi/language/IConfigurable;Lnet/neoforged/neoforgespi/language/IModInfo;)Lnet/neoforged/neoforgespi/language/IModInfo$DependencyType;: ❗ Method was removed
    • lambda$new$0()Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
  • net/neoforged/fml/javafmlmod/AutomaticEventSubscriber
    • lambda$inject$4(Lnet/neoforged/fml/loading/moddiscovery/ModAnnotation$EnumHolder;)Lnet/neoforged/api/distmarker/Dist;: ❗ Method was removed
  • net/neoforged/fml/loading/moddiscovery/ModClassVisitor
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/FMLServiceProvider
    • lambda$initialize$1(Lcpw/mods/modlauncher/api/TypesafeMap$Key;)Lnet/neoforged/neoforgespi/locating/ModFileFactory;: ❗ Method was removed
    • mappingsOption:Ljoptsimple/ArgumentAcceptingOptionSpec;: ❗ Field was removed
    • targetMcpMappings:Ljava/lang/String;: ❗ Field was removed
    • arguments:Ljava/util/Map;: ❗ Field was removed
    • targetMcVersion:Ljava/lang/String;: ❗ Field was removed
    • targetMcpVersion:Ljava/lang/String;: ❗ Field was removed
    • targetForgeVersion:Ljava/lang/String;: ❗ Field was removed
    • targetFMLVersion:Ljava/lang/String;: ❗ Field was removed
  • net/neoforged/fml/loading/FMLLoader
    • getLaunchHandler()Lnet/neoforged/fml/loading/targets/CommonLaunchHandler;: ❗ Method was removed
    • setupLaunchHandler(Lcpw/mods/modlauncher/api/IEnvironment;Ljava/util/Map;)V: ❗ Method was removed
    • getModDiscoverer()Lnet/neoforged/fml/loading/moddiscovery/ModDiscoverer;: ❗ Method was removed
    • onInitialLoad(Lcpw/mods/modlauncher/api/IEnvironment;Ljava/util/Set;)V: ❗ Method was removed
    • isSecureJarEnabled()Z: ❗ Method was removed
    • completeScan(Lcpw/mods/modlauncher/api/IModuleLayerManager;Ljava/util/List;)Ljava/util/List;: ❗ Method was removed
    • getLanguageLoadingProvider()Lnet/neoforged/fml/loading/LanguageLoadingProvider;: ❗ Method was removed
    • beginModScan(Ljava/util/Map;)Ljava/util/List;: ❗ Method was removed
    • modDiscoverer:Lnet/neoforged/fml/loading/moddiscovery/ModDiscoverer;: ❗ Field was removed
    • moduleLayerManager:Lcpw/mods/modlauncher/api/IModuleLayerManager;: ❗ Field was removed
    • languageLoadingProvider:Lnet/neoforged/fml/loading/LanguageLoadingProvider;: ❗ Field was removed
  • net/neoforged/fml/loading/targets/ForgeServerDevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLServerLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeServerLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/locating/IModLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeDataUserdevLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/Environment$Keys
    • MODFOLDERFACTORY:Ljava/util/function/Supplier;: ❗ Field was removed
    • MODDIRECTORYFACTORY:Ljava/util/function/Supplier;: ❗ Field was removed
    • MODFILEFACTORY:Ljava/util/function/Supplier;: ❗ Field was removed
  • net/neoforged/fml/loading/JarVersionLookupHandler
    • getImplementationTitle(Ljava/lang/Class;)Ljava/util/Optional;: ❗ Method was removed
    • getSpecificationVersion(Ljava/lang/String;)Ljava/util/Optional;: ❗ Method was removed
    • getSpecificationVersion(Ljava/lang/Class;)Ljava/util/Optional;: ❗ Method was removed
    • getImplementationVersion(Ljava/lang/Class;)Ljava/util/Optional;: ❗ Method was removed
    • getImplementationVersion(Ljava/lang/String;)Ljava/util/Optional;: ❗ Method was removed
  • net/neoforged/fml/ModLoadingException
    • getModInfo()Lnet/neoforged/neoforgespi/language/IModInfo;: ❗ Method was removed
    • getContext()[Ljava/lang/Object;: ❗ Method was removed
    • formatToString()Ljava/lang/String;: ❗ Method was removed
    • lambda$fromEarlyException$0(Lnet/neoforged/fml/loading/EarlyLoadingException;Lnet/neoforged/fml/loading/EarlyLoadingException$ExceptionData;)Lnet/neoforged/fml/ModLoadingException;: ❗ Method was removed
    • <init>(Lnet/neoforged/neoforgespi/language/IModInfo;Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)V: ❗ Method was removed
    • fromEarlyException(Lnet/neoforged/fml/loading/EarlyLoadingException;)Ljava/util/stream/Stream;: ❗ Method was removed
    • getCleanMessage()Ljava/lang/String;: ❗ Method was removed
    • getI18NMessage()Ljava/lang/String;: ❗ Method was removed
    • i18nMessage:Ljava/lang/String;: ❗ Field was removed
    • context:Ljava/util/List;: ❗ Field was removed
    • modInfo:Lnet/neoforged/neoforgespi/language/IModInfo;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/ModsFolderLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/FMLClientLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/Scanner
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/language/ILifecycleEvent
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/targets/ForgeClientLaunchHandler
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/LibraryFinder
    • <clinit>()V: ❗ Method was removed
    • getForgeLibraryPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/nio/file/Path;: ❗ Method was removed
    • getMCPaths(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/nio/file/Path;: ❗ Method was removed
    • pathStatus(Ljava/nio/file/Path;)Ljava/lang/String;: ❗ Method was removed
    • findPathForMaven(Ljava/lang/String;)Ljava/nio/file/Path;: ❗ Method was removed
    • libsPath:Ljava/nio/file/Path;: ❗ Field was removed
    • LOGGER:Lorg/slf4j/Logger;: ❗ Field was removed
  • net/neoforged/fml/loading/moddiscovery/ClasspathLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/AbstractJarFileDependencyLocator
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/AbstractModProvider
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/FMLEnvironment$Keys
    • ❗ Class no longer exists
  • net/neoforged/fml/loading/moddiscovery/ModInfo
    • lambda$new$0(Lnet/neoforged/fml/loading/moddiscovery/ModFileInfo;)Lnet/neoforged/fml/loading/moddiscovery/InvalidModFileException;: ❗ Method was removed
  • net/neoforged/neoforgespi/locating/IModProvider
    • ❗ Class no longer exists
  • net/neoforged/neoforgespi/Environment
    • lambda$new$1()Ljava/lang/RuntimeException;: ❗ Method was removed
    • getModFileFactory()Lnet/neoforged/neoforgespi/locating/ModFileFactory;: ❗ Method was removed
    • lambda$new$0()Ljava/lang/RuntimeException;: ❗ Method was removed
    • environment:Lcpw/mods/modlauncher/api/IEnvironment;: ❗ Field was removed
    • modFileFactory:Lnet/neoforged/neoforgespi/locating/ModFileFactory;: ❗ Field was removed

@shartte shartte marked this pull request as ready for review April 27, 2024 13:42
@shartte shartte mentioned this pull request Apr 27, 2024
@shartte shartte self-assigned this Apr 29, 2024
@shartte shartte requested a review from Technici4n April 29, 2024 11:19
@Matyrobbrt Matyrobbrt merged commit 0844898 into neoforged:main May 1, 2024
3 checks passed
@Matyrobbrt Matyrobbrt deleted the locator-rewrite branch May 1, 2024 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking-change enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants