Integrate modlauncher changes for mixin.
Signed-off-by: cpw <cpw+github@weeksfamily.ca>
This commit is contained in:
parent
2392a4c184
commit
f4bab8b8c1
|
@ -405,7 +405,7 @@ project(':forge') {
|
||||||
installer 'org.ow2.asm:asm:6.2'
|
installer 'org.ow2.asm:asm:6.2'
|
||||||
installer 'org.ow2.asm:asm-commons:6.2'
|
installer 'org.ow2.asm:asm-commons:6.2'
|
||||||
installer 'org.ow2.asm:asm-tree:6.2'
|
installer 'org.ow2.asm:asm-tree:6.2'
|
||||||
installer 'cpw.mods:modlauncher:3.2.+'
|
installer 'cpw.mods:modlauncher:4.0.+'
|
||||||
installer 'cpw.mods:grossjava9hacks:1.1.+'
|
installer 'cpw.mods:grossjava9hacks:1.1.+'
|
||||||
installer 'net.minecraftforge:accesstransformers:1.0.+:shadowed'
|
installer 'net.minecraftforge:accesstransformers:1.0.+:shadowed'
|
||||||
installer 'net.minecraftforge:eventbus:1.0.+:service'
|
installer 'net.minecraftforge:eventbus:1.0.+:service'
|
||||||
|
|
|
@ -83,4 +83,9 @@ public class FMLClientLaunchProvider extends FMLCommonLaunchHandler implements I
|
||||||
protected String getNaming() {
|
protected String getNaming() {
|
||||||
return "srg";
|
return "srg";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Path[] getPaths() {
|
||||||
|
return FMLLoader.getMCPaths();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ import net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer;
|
||||||
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
|
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
|
||||||
import net.minecraftforge.forgespi.Environment;
|
import net.minecraftforge.forgespi.Environment;
|
||||||
import net.minecraftforge.forgespi.coremod.ICoreModProvider;
|
import net.minecraftforge.forgespi.coremod.ICoreModProvider;
|
||||||
|
import net.minecraftforge.forgespi.locating.IModFile;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
@ -85,7 +86,7 @@ public class FMLLoader
|
||||||
LOGGER.debug(CORE,"FML {} loading", version);
|
LOGGER.debug(CORE,"FML {} loading", version);
|
||||||
final Package modLauncherPackage = ITransformationService.class.getPackage();
|
final Package modLauncherPackage = ITransformationService.class.getPackage();
|
||||||
LOGGER.debug(CORE,"FML found ModLauncher version : {}", modLauncherPackage.getImplementationVersion());
|
LOGGER.debug(CORE,"FML found ModLauncher version : {}", modLauncherPackage.getImplementationVersion());
|
||||||
if (!modLauncherPackage.isCompatibleWith("2.0")) {
|
if (!modLauncherPackage.isCompatibleWith("4.0")) {
|
||||||
LOGGER.fatal(CORE,"Found incompatible ModLauncher specification : {}, version {} from {}", modLauncherPackage.getSpecificationVersion(), modLauncherPackage.getImplementationVersion(), modLauncherPackage.getImplementationVendor());
|
LOGGER.fatal(CORE,"Found incompatible ModLauncher specification : {}, version {} from {}", modLauncherPackage.getSpecificationVersion(), modLauncherPackage.getImplementationVersion(), modLauncherPackage.getImplementationVendor());
|
||||||
throw new IncompatibleEnvironmentException("Incompatible modlauncher found "+modLauncherPackage.getSpecificationVersion());
|
throw new IncompatibleEnvironmentException("Incompatible modlauncher found "+modLauncherPackage.getSpecificationVersion());
|
||||||
}
|
}
|
||||||
|
@ -195,12 +196,13 @@ public class FMLLoader
|
||||||
|
|
||||||
runtimeDistCleaner.getExtension().accept(dist);
|
runtimeDistCleaner.getExtension().accept(dist);
|
||||||
}
|
}
|
||||||
public static void beginModScan(final Map<String,?> arguments)
|
public static Map<IModFile.Type, List<ModFile>> beginModScan(final Map<String,?> arguments)
|
||||||
{
|
{
|
||||||
LOGGER.debug(SCAN,"Scanning for Mod Locators");
|
LOGGER.debug(SCAN,"Scanning for Mod Locators");
|
||||||
modDiscoverer = new ModDiscoverer(arguments);
|
modDiscoverer = new ModDiscoverer(arguments);
|
||||||
final BackgroundScanHandler backgroundScanHandler = modDiscoverer.discoverMods();
|
final BackgroundScanHandler backgroundScanHandler = modDiscoverer.discoverMods();
|
||||||
loadingModList = backgroundScanHandler.getLoadingModList();
|
loadingModList = backgroundScanHandler.getLoadingModList();
|
||||||
|
return backgroundScanHandler.getModFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ICoreModProvider getCoreModProvider() {
|
public static ICoreModProvider getCoreModProvider() {
|
||||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraftforge.api.distmarker.Dist;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -78,4 +79,8 @@ public class FMLServerLaunchProvider extends FMLCommonLaunchHandler implements I
|
||||||
return "srg";
|
return "srg";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Path[] getPaths() {
|
||||||
|
return FMLLoader.getMCPaths();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,13 +25,23 @@ import cpw.mods.modlauncher.api.ITransformer;
|
||||||
import cpw.mods.modlauncher.api.IncompatibleEnvironmentException;
|
import cpw.mods.modlauncher.api.IncompatibleEnvironmentException;
|
||||||
import joptsimple.ArgumentAcceptingOptionSpec;
|
import joptsimple.ArgumentAcceptingOptionSpec;
|
||||||
import joptsimple.OptionSpecBuilder;
|
import joptsimple.OptionSpecBuilder;
|
||||||
|
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
|
||||||
import net.minecraftforge.forgespi.Environment;
|
import net.minecraftforge.forgespi.Environment;
|
||||||
|
import net.minecraftforge.forgespi.locating.IModFile;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.*;
|
import java.nio.file.Path;
|
||||||
|
import java.util.AbstractMap;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
|
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
|
||||||
|
|
||||||
|
@ -86,8 +96,19 @@ public class FMLServiceProvider implements ITransformationService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beginScanning(final IEnvironment environment) {
|
public void beginScanning(final IEnvironment environment) {
|
||||||
|
throw new IllegalStateException("WHY ARE YOU HERE??????");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Map.Entry<String, Path>> runScan(final IEnvironment environment) {
|
||||||
LOGGER.debug(CORE,"Initiating mod scan");
|
LOGGER.debug(CORE,"Initiating mod scan");
|
||||||
FMLLoader.beginModScan(arguments);
|
final Map<IModFile.Type, List<ModFile>> foundFiles = FMLLoader.beginModScan(arguments);
|
||||||
|
return foundFiles
|
||||||
|
.values()
|
||||||
|
.stream()
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.map(modFile -> new AbstractMap.SimpleImmutableEntry<>(modFile.getFileName(), modFile.getFilePath()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,11 +21,13 @@ package net.minecraftforge.fml.loading.moddiscovery;
|
||||||
|
|
||||||
import net.minecraftforge.forgespi.language.ModFileScanData;
|
import net.minecraftforge.forgespi.language.ModFileScanData;
|
||||||
import net.minecraftforge.fml.loading.LoadingModList;
|
import net.minecraftforge.fml.loading.LoadingModList;
|
||||||
|
import net.minecraftforge.forgespi.locating.IModFile;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
@ -40,9 +42,11 @@ public class BackgroundScanHandler
|
||||||
private final List<ModFile> pendingFiles;
|
private final List<ModFile> pendingFiles;
|
||||||
private final List<ModFile> scannedFiles;
|
private final List<ModFile> scannedFiles;
|
||||||
private final List<ModFile> allFiles;
|
private final List<ModFile> allFiles;
|
||||||
|
private final Map<IModFile.Type, List<ModFile>> modFiles;
|
||||||
private LoadingModList loadingModList;
|
private LoadingModList loadingModList;
|
||||||
|
|
||||||
public BackgroundScanHandler() {
|
public BackgroundScanHandler(final Map<IModFile.Type, List<ModFile>> modFiles) {
|
||||||
|
this.modFiles = modFiles;
|
||||||
modContentScanner = Executors.newSingleThreadExecutor(r -> {
|
modContentScanner = Executors.newSingleThreadExecutor(r -> {
|
||||||
final Thread thread = Executors.defaultThreadFactory().newThread(r);
|
final Thread thread = Executors.defaultThreadFactory().newThread(r);
|
||||||
thread.setDaemon(true);
|
thread.setDaemon(true);
|
||||||
|
@ -53,6 +57,10 @@ public class BackgroundScanHandler
|
||||||
allFiles = new ArrayList<>();
|
allFiles = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<IModFile.Type, List<ModFile>> getModFiles() {
|
||||||
|
return modFiles;
|
||||||
|
}
|
||||||
|
|
||||||
public void submitForScanning(final ModFile file) {
|
public void submitForScanning(final ModFile file) {
|
||||||
if (modContentScanner.isShutdown()) {
|
if (modContentScanner.isShutdown()) {
|
||||||
throw new IllegalStateException("Scanner has shutdown");
|
throw new IllegalStateException("Scanner has shutdown");
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class ModDiscoverer {
|
||||||
.collect(Collectors.groupingBy(IModFile::getType));
|
.collect(Collectors.groupingBy(IModFile::getType));
|
||||||
|
|
||||||
FMLLoader.getLanguageLoadingProvider().addAdditionalLanguages(modFiles.get(IModFile.Type.LANGPROVIDER));
|
FMLLoader.getLanguageLoadingProvider().addAdditionalLanguages(modFiles.get(IModFile.Type.LANGPROVIDER));
|
||||||
BackgroundScanHandler backgroundScanHandler = new BackgroundScanHandler();
|
BackgroundScanHandler backgroundScanHandler = new BackgroundScanHandler(modFiles);
|
||||||
final List<ModFile> mods = modFiles.getOrDefault(IModFile.Type.MOD, Collections.emptyList());
|
final List<ModFile> mods = modFiles.getOrDefault(IModFile.Type.MOD, Collections.emptyList());
|
||||||
final List<ModFile> brokenFiles = new ArrayList<>();
|
final List<ModFile> brokenFiles = new ArrayList<>();
|
||||||
for (Iterator<ModFile> iterator = mods.iterator(); iterator.hasNext(); )
|
for (Iterator<ModFile> iterator = mods.iterator(); iterator.hasNext(); )
|
||||||
|
|
Loading…
Reference in New Issue