Skip to content

Commit c6a7abb

Browse files
authored
Merge pull request #2 from TheKodeToad/merge-upstream
Merge upstream
2 parents 4eec3c9 + 9d6db39 commit c6a7abb

File tree

14 files changed

+245
-446
lines changed

14 files changed

+245
-446
lines changed

build.gradle

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ group = "io.github.zekerzhayard"
1616
archivesBaseName = rootProject.name
1717

1818
configurations {
19-
provided {
20-
implementation.extendsFrom provided
21-
}
2219
multirelase {
2320
implementation.extendsFrom multirelase
2421
}
@@ -38,8 +35,6 @@ dependencies {
3835
compileOnly "net.minecraftforge:installer:2.2.7"
3936
compileOnly "net.sf.jopt-simple:jopt-simple:5.0.4"
4037

41-
provided project(":common")
42-
provided project(":legacy")
4338
multirelase project(":jigsaw")
4439
}
4540

@@ -61,10 +56,6 @@ jar {
6156
"GitCommit": String.valueOf(System.getenv("GITHUB_SHA"))
6257
])
6358

64-
from configurations.provided.files.collect {
65-
zipTree(it)
66-
}
67-
6859
into "META-INF/versions/9", {
6960
from configurations.multirelase.files.collect {
7061
zipTree(it)

common/build.gradle

Lines changed: 0 additions & 11 deletions
This file was deleted.

common/src/main/java/io/github/zekerzhayard/forgewrapper/util/CheckedLambdaUtil.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

jigsaw/build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,3 @@ configurations {
2626
}
2727
}
2828
}
29-
30-
dependencies {
31-
compileOnly project(":common")
32-
}

jigsaw/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,16 @@
1212
import java.net.URL;
1313
import java.nio.file.Path;
1414
import java.nio.file.Paths;
15+
import java.util.ArrayList;
1516
import java.util.HashMap;
1617
import java.util.HashSet;
1718
import java.util.List;
1819
import java.util.Map;
1920
import java.util.Optional;
2021
import java.util.Set;
2122
import java.util.function.Function;
22-
import java.util.stream.Collectors;
2323
import java.util.stream.Stream;
2424

25-
import io.github.zekerzhayard.forgewrapper.util.CheckedLambdaUtil;
2625
import sun.misc.Unsafe;
2726

2827
public class ModuleUtil {
@@ -53,17 +52,27 @@ public static void addModules(String modulePath) throws Throwable {
5352
MethodHandle loadModuleMH = IMPL_LOOKUP.findVirtual(Class.forName("jdk.internal.loader.BuiltinClassLoader"), "loadModule", MethodType.methodType(void.class, ModuleReference.class));
5453

5554
// Resolve modules to a new config and load all extra modules in system class loader (unnamed modules for now)
56-
Configuration config = Configuration.resolveAndBind(finder, List.of(ModuleLayer.boot().configuration()), finder, finder.findAll().stream().filter(mref -> !ModuleLayer.boot().findModule(mref.descriptor().name()).isPresent()).peek(CheckedLambdaUtil.wrapConsumer(mref -> loadModuleMH.invokeWithArguments(ClassLoader.getSystemClassLoader(), mref))).map(mref -> mref.descriptor().name()).collect(Collectors.toList()));
55+
List<String> roots = new ArrayList<>();
56+
for (ModuleReference mref : finder.findAll()) {
57+
String name = mref.descriptor().name();
58+
if (!ModuleLayer.boot().findModule(name).isPresent()) {
59+
loadModuleMH.invokeWithArguments(ClassLoader.getSystemClassLoader(), mref);
60+
roots.add(name);
61+
}
62+
}
63+
Configuration config = Configuration.resolveAndBind(finder, List.of(ModuleLayer.boot().configuration()), finder, roots);
5764

5865
// Copy the new config graph to boot module layer config
5966
MethodHandle graphGetter = IMPL_LOOKUP.findGetter(Configuration.class, "graph", Map.class);
6067
HashMap<ResolvedModule, Set<ResolvedModule>> graphMap = new HashMap<>((Map<ResolvedModule, Set<ResolvedModule>>) graphGetter.invokeWithArguments(config));
6168
MethodHandle cfSetter = IMPL_LOOKUP.findSetter(ResolvedModule.class, "cf", Configuration.class);
6269
// Reset all extra resolved modules config to boot module layer config
63-
graphMap.forEach(CheckedLambdaUtil.wrapBiConsumer((k, v) -> {
64-
cfSetter.invokeWithArguments(k, ModuleLayer.boot().configuration());
65-
v.forEach(CheckedLambdaUtil.wrapConsumer(m -> cfSetter.invokeWithArguments(m, ModuleLayer.boot().configuration())));
66-
}));
70+
for (Map.Entry<ResolvedModule, Set<ResolvedModule>> entry : graphMap.entrySet()) {
71+
cfSetter.invokeWithArguments(entry.getKey(), ModuleLayer.boot().configuration());
72+
for (ResolvedModule resolvedModule : entry.getValue()) {
73+
cfSetter.invokeWithArguments(resolvedModule, ModuleLayer.boot().configuration());
74+
}
75+
}
6776
graphMap.putAll((Map<ResolvedModule, Set<ResolvedModule>>) graphGetter.invokeWithArguments(ModuleLayer.boot().configuration()));
6877
IMPL_LOOKUP.findSetter(Configuration.class, "graph", Map.class).invokeWithArguments(ModuleLayer.boot().configuration(), new HashMap<>(graphMap));
6978

@@ -92,7 +101,17 @@ public static void addModules(String modulePath) throws Throwable {
92101

93102
// Add reads from extra modules to jdk modules
94103
MethodHandle implAddReadsMH = IMPL_LOOKUP.findVirtual(Module.class, "implAddReads", MethodType.methodType(void.class, Module.class));
95-
config.modules().forEach(rm -> ModuleLayer.boot().findModule(rm.name()).ifPresent(m -> oldBootModules.forEach(brm -> ModuleLayer.boot().findModule(brm.name()).ifPresent(CheckedLambdaUtil.wrapConsumer(bm -> implAddReadsMH.invokeWithArguments(m, bm))))));
104+
for (ResolvedModule resolvedModule : config.modules()) {
105+
Module module = ModuleLayer.boot().findModule(resolvedModule.name()).orElse(null);
106+
if (module != null) {
107+
for (ResolvedModule bootResolvedModule : oldBootModules) {
108+
Module bootModule = ModuleLayer.boot().findModule(bootResolvedModule.name()).orElse(null);
109+
if (bootModule != null) {
110+
implAddReadsMH.invokeWithArguments(module, bootModule);
111+
}
112+
}
113+
}
114+
}
96115
}
97116

98117
public static void addExports(List<String> exports) {
@@ -124,13 +143,26 @@ private enum TypeToAdd {
124143
}
125144

126145
void implAdd(List<String> extras) {
127-
extras.stream().map(ModuleUtil::parseModuleExtra).filter(Optional::isPresent).map(Optional::get).forEach(CheckedLambdaUtil.wrapConsumer(data -> ModuleLayer.boot().findModule(data.module).ifPresent(CheckedLambdaUtil.wrapConsumer(m -> {
128-
if ("ALL-UNNAMED".equals(data.target)) {
129-
this.implAddToAllUnnamedMH.invokeWithArguments(m, data.packages);
130-
} else {
131-
ModuleLayer.boot().findModule(data.target).ifPresent(CheckedLambdaUtil.wrapConsumer(tm -> this.implAddMH.invokeWithArguments(m, data.packages, tm)));
146+
for (String extra : extras) {
147+
ParserData data = ModuleUtil.parseModuleExtra(extra).orElse(null);
148+
if (data != null) {
149+
Module module = ModuleLayer.boot().findModule(data.module).orElse(null);
150+
if (module != null) {
151+
try {
152+
if ("ALL-UNNAMED".equals(data.target)) {
153+
this.implAddToAllUnnamedMH.invokeWithArguments(module, data.packages);
154+
} else {
155+
Module targetModule = ModuleLayer.boot().findModule(data.target).orElse(null);
156+
if (targetModule != null) {
157+
this.implAddMH.invokeWithArguments(module, data.packages, targetModule);
158+
}
159+
}
160+
} catch (Throwable t) {
161+
throw new RuntimeException(t);
162+
}
163+
}
132164
}
133-
}))));
165+
}
134166
}
135167
}
136168

legacy/build.gradle

Lines changed: 0 additions & 22 deletions
This file was deleted.

legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/AbstractInstaller.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/InstallerV0.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

settings.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
rootProject.name = 'ForgeWrapper'
22

3-
include 'common'
4-
include 'legacy'
53
include 'jigsaw'

src/main/java/io/github/zekerzhayard/forgewrapper/installer/Bootstrap.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
import io.github.zekerzhayard.forgewrapper.installer.util.ModuleUtil;
88

99
public class Bootstrap {
10-
public static void bootstrap(List<String> jvmArgs, String minecraftJar, String libraryDir) throws Throwable {
10+
public static void bootstrap(String[] jvmArgs, String minecraftJar, String libraryDir) throws Throwable {
1111
// Replace all placeholders
12-
List<String> replacedJvmArgs = new ArrayList<>();
13-
for (String arg : jvmArgs) {
14-
replacedJvmArgs.add(arg.replace("${classpath}", System.getProperty("java.class.path").replace(File.separator, "/")).replace("${classpath_separator}", File.pathSeparator).replace("${library_directory}", libraryDir).replace("${version_name}", minecraftJar.substring(0, minecraftJar.lastIndexOf('.'))));
12+
String[] replacedJvmArgs = new String[jvmArgs.length];
13+
for (int i = 0; i < jvmArgs.length; i++) {
14+
String arg = jvmArgs[i];
15+
replacedJvmArgs[i] = arg.replace("${classpath}", System.getProperty("java.class.path").replace(File.separator, "/")).replace("${classpath_separator}", File.pathSeparator).replace("${library_directory}", libraryDir).replace("${version_name}", minecraftJar.substring(0, minecraftJar.lastIndexOf('.')));
1516
}
1617
jvmArgs = replacedJvmArgs;
1718

@@ -27,23 +28,23 @@ public static void bootstrap(List<String> jvmArgs, String minecraftJar, String l
2728
String modulePath = null;
2829
List<String> addExports = new ArrayList<>();
2930
List<String> addOpens = new ArrayList<>();
30-
for (int i = 0; i < jvmArgs.size(); i++) {
31-
String arg = jvmArgs.get(i);
31+
for (int i = 0; i < jvmArgs.length; i++) {
32+
String arg = jvmArgs[i];
3233

3334
if (arg.equals("-p") || arg.equals("--module-path")) {
34-
modulePath = jvmArgs.get(i + 1);
35+
modulePath = jvmArgs[i + 1];
3536
} else if (arg.startsWith("--module-path=")) {
3637
modulePath = arg.split("=", 2)[1];
3738
}
3839

3940
if (arg.equals("--add-exports")) {
40-
addExports.add(jvmArgs.get(i + 1));
41+
addExports.add(jvmArgs[i + 1]);
4142
} else if (arg.startsWith("--add-exports=")) {
4243
addExports.add(arg.split("=", 2)[1]);
4344
}
4445

4546
if (arg.equals("--add-opens")) {
46-
addOpens.add(jvmArgs.get(i + 1));
47+
addOpens.add(jvmArgs[i + 1]);
4748
} else if (arg.startsWith("--add-opens=")) {
4849
addOpens.add(arg.split("=", 2)[1]);
4950
}

0 commit comments

Comments
 (0)