Split userdev data entry point into it's own provider to fix duplicate mod issue.
This commit is contained in:
parent
e81c330694
commit
c284de366b
10
build.gradle
10
build.gradle
|
@ -335,6 +335,14 @@ project(':forge') {
|
||||||
'Implementation-Title': 'FML Launcher',
|
'Implementation-Title': 'FML Launcher',
|
||||||
'Implementation-Version': SPEC_VERSION,
|
'Implementation-Version': SPEC_VERSION,
|
||||||
'Implementation-Vendor': 'Forge'
|
'Implementation-Vendor': 'Forge'
|
||||||
|
] as LinkedHashMap,
|
||||||
|
'net/minecraftforge/fml/userdev/': [
|
||||||
|
'Specification-Title': 'Forge User Development',
|
||||||
|
'Specification-Vendor': 'Forge Development LLC',
|
||||||
|
'Specification-Version': SPEC_VERSION,
|
||||||
|
'Implementation-Title': project.group,
|
||||||
|
'Implementation-Version': project.version.substring(MC_VERSION.length() + 1),
|
||||||
|
'Implementation-Vendor': 'Forge Development LLC'
|
||||||
] as LinkedHashMap
|
] as LinkedHashMap
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -881,7 +889,7 @@ project(':forge') {
|
||||||
data {
|
data {
|
||||||
main 'net.minecraftforge.userdev.LaunchTesting'
|
main 'net.minecraftforge.userdev.LaunchTesting'
|
||||||
|
|
||||||
environment 'target', 'fmldevdata'
|
environment 'target', 'fmluserdevdata'
|
||||||
|
|
||||||
environment 'MC_VERSION', "${MC_VERSION}"
|
environment 'MC_VERSION', "${MC_VERSION}"
|
||||||
environment 'FORGE_GROUP', "${project.group}"
|
environment 'FORGE_GROUP', "${project.group}"
|
||||||
|
|
|
@ -64,6 +64,24 @@ minecraft {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data {
|
||||||
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
|
// Recommended logging data for a userdev environment
|
||||||
|
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||||
|
|
||||||
|
// Recommended logging level for the console
|
||||||
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
|
args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/')
|
||||||
|
|
||||||
|
mods {
|
||||||
|
examplemod {
|
||||||
|
source sourceSets.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
|
||||||
# Does this dependency have to exist - if not, ordering below must be specified
|
# Does this dependency have to exist - if not, ordering below must be specified
|
||||||
mandatory=true #mandatory
|
mandatory=true #mandatory
|
||||||
# The version range of the dependency
|
# The version range of the dependency
|
||||||
versionRange="[26,)" #mandatory
|
versionRange="[27,)" #mandatory
|
||||||
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
||||||
ordering="NONE"
|
ordering="NONE"
|
||||||
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
||||||
|
@ -51,6 +51,6 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
|
||||||
[[dependencies.examplemod]]
|
[[dependencies.examplemod]]
|
||||||
modId="minecraft"
|
modId="minecraft"
|
||||||
mandatory=true
|
mandatory=true
|
||||||
versionRange="[1.14.2]"
|
versionRange="[1.14.3]"
|
||||||
ordering="NONE"
|
ordering="NONE"
|
||||||
side="BOTH"
|
side="BOTH"
|
|
@ -52,6 +52,7 @@ public class ExplodedDirectoryLocator implements IModLocator {
|
||||||
Path resources = pathPathPair.getLeft();
|
Path resources = pathPathPair.getLeft();
|
||||||
Path modtoml = resources.resolve(modstoml);
|
Path modtoml = resources.resolve(modstoml);
|
||||||
if (Files.exists(modtoml)) {
|
if (Files.exists(modtoml)) {
|
||||||
|
LOGGER.debug(LOADING, "Found exploded directory mod manifest at {}", modtoml.toString());
|
||||||
ModFile mf = new ModFile(pathPathPair.getLeft(), this);
|
ModFile mf = new ModFile(pathPathPair.getLeft(), this);
|
||||||
mods.put(mf, pathPathPair);
|
mods.put(mf, pathPathPair);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -67,6 +67,7 @@ public class ClasspathLocator extends AbstractJarFileLocator {
|
||||||
if (Files.isDirectory(path))
|
if (Files.isDirectory(path))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
LOGGER.debug(CORE, "Found classpath mod: {}", path);
|
||||||
this.modCoords.add(path);
|
this.modCoords.add(path);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* Minecraft Forge
|
||||||
|
* Copyright (c) 2016-2019.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation version 2.1
|
||||||
|
* of the License.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.minecraftforge.userdev;
|
||||||
|
|
||||||
|
import cpw.mods.modlauncher.api.ILaunchHandlerService;
|
||||||
|
import cpw.mods.modlauncher.api.ITransformingClassLoader;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
|
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
|
||||||
|
|
||||||
|
public class FMLUserdevDataLaunchProvider extends FMLUserdevLaunchProvider implements ILaunchHandlerService
|
||||||
|
{
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name()
|
||||||
|
{
|
||||||
|
return "fmluserdevdata";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Callable<Void> launchService(String[] arguments, ITransformingClassLoader launchClassLoader)
|
||||||
|
{
|
||||||
|
return () -> {
|
||||||
|
LOGGER.debug(CORE, "Launching minecraft in {} with arguments {}", launchClassLoader, arguments);
|
||||||
|
super.beforeStart(launchClassLoader);
|
||||||
|
launchClassLoader.addTargetPackageFilter(getPackagePredicate());
|
||||||
|
Thread.currentThread().setContextClassLoader(launchClassLoader.getInstance());
|
||||||
|
Class.forName("net.minecraft.data.Main", true, launchClassLoader.getInstance()).getMethod("main", String[].class).invoke(null, (Object)arguments);
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dist getDist()
|
||||||
|
{
|
||||||
|
return Dist.CLIENT;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
net.minecraftforge.userdev.FMLUserdevClientLaunchProvider
|
net.minecraftforge.userdev.FMLUserdevClientLaunchProvider
|
||||||
net.minecraftforge.userdev.FMLUserdevServerLaunchProvider
|
net.minecraftforge.userdev.FMLUserdevServerLaunchProvider
|
||||||
|
net.minecraftforge.userdev.FMLUserdevDataLaunchProvider
|
||||||
net.minecraftforge.userdev.FMLDevClientLaunchProvider
|
net.minecraftforge.userdev.FMLDevClientLaunchProvider
|
||||||
net.minecraftforge.userdev.FMLDevServerLaunchProvider
|
net.minecraftforge.userdev.FMLDevServerLaunchProvider
|
||||||
net.minecraftforge.userdev.FMLDevDataLaunchProvider
|
net.minecraftforge.userdev.FMLDevDataLaunchProvider
|
||||||
|
|
Loading…
Reference in New Issue