22
33import org .mangorage .bootstrap .api .launch .ILaunchTarget ;
44import org .mangorage .bootstrap .internal .JarHandler ;
5- import org .mangorage .bootstrap .internal .MangoLoader ;
5+ import org .mangorage .bootstrap .api . loader .MangoLoader ;
66import org .mangorage .bootstrap .internal .Util ;
77
88import java .lang .module .Configuration ;
99import java .lang .module .ModuleFinder ;
1010import java .nio .file .Files ;
1111import java .nio .file .Path ;
12+ import java .util .HashSet ;
1213import java .util .List ;
14+ import java .util .Set ;
1315
1416import static org .mangorage .bootstrap .internal .Util .callMain ;
1517
@@ -22,58 +24,67 @@ public String getId() {
2224 @ Override
2325 public void launch (ModuleLayer parent , String [] args ) throws Throwable {
2426 final var librariesPath = Path .of ("libraries" );
25- final var sortedLibraries = Path .of ("sorted-libraries" );
27+ final var sortedLibrariesPath = Path .of ("sorted-libraries" );
2628 final var pluginsPath = Path .of ("plugins" );
2729
28- JarHandler .safeHandle (librariesPath , sortedLibraries );
30+ JarHandler .safeHandle (librariesPath , sortedLibrariesPath );
2931
3032 List <Path > deleteFiles = List .of (
31- sortedLibraries .resolve ("okio-3.6.0.jar" )
33+ sortedLibrariesPath .resolve ("okio-3.6.0.jar" )
3234 );
3335
3436 for (Path deleteFile : deleteFiles ) {
3537 Files .deleteIfExists (deleteFile );
3638 }
3739
38- final var moduleLibrariesCfg = Configuration .resolve (
39- ModuleFinder .of (sortedLibraries ),
40+ Set <String > moduleNames = new HashSet <>();
41+ moduleNames .addAll (Util .getModuleNames (pluginsPath ));
42+ moduleNames .addAll (Util .getModuleNames (sortedLibrariesPath ));
43+
44+
45+ final var moduleCfg = Configuration .resolve (
46+ ModuleFinder .of (
47+ sortedLibrariesPath
48+ ),
4049 List .of (
4150 parent .configuration ()
4251 ),
43- ModuleFinder .of (),
44- Util . getModuleNames (
45- sortedLibraries
46- )
52+ ModuleFinder .of (
53+ pluginsPath
54+ ),
55+ moduleNames
4756 );
4857
49- final var moduleLibrariesCL = new MangoLoader (moduleLibrariesCfg .modules (), Thread .currentThread ().getContextClassLoader ());
50-
51- final var moduleLibrariesLayerController = ModuleLayer .defineModules (moduleLibrariesCfg , List .of (parent ), s -> moduleLibrariesCL );
52- final var moduleLibrariesLayer = moduleLibrariesLayerController .layer ();
58+ final var moduleCL = new MangoLoader (moduleCfg .modules (), Thread .currentThread ().getContextClassLoader ());
5359
60+ final var moduleLayerController = ModuleLayer .defineModules (moduleCfg , List .of (parent ), s -> moduleCL );
61+ final var moduleLayer = moduleLayerController .layer ();
5462
63+ Thread .currentThread ().setContextClassLoader (moduleCL );
5564
56- final var modulePluginsCfg = Configuration .resolve (
57- ModuleFinder .of (pluginsPath ),
58- List .of (
59- moduleLibrariesLayer .configuration ()
60- ),
61- ModuleFinder .of (),
62- Util .getModuleNames (
63- pluginsPath
64- )
65+ moduleLayerController .addExports (
66+ moduleLayer .findModule ("org.spongepowered.mixin" ).get (),
67+ "org.spongepowered.asm.mixin.transformer" ,
68+ moduleLayer .findModule ("org.mangorage.mangobotcore" ).get ()
6569 );
6670
67- final var modulePluginsCL = new MangoLoader (modulePluginsCfg .modules (), moduleLibrariesCL );
71+ moduleLayerController .addOpens (
72+ moduleLayer .findModule ("org.spongepowered.mixin" ).get (),
73+ "org.spongepowered.asm.mixin" ,
74+ moduleLayer .findModule ("org.mangorage.mangobotcore" ).get ()
75+ );
6876
69- final var modulePluginsLayerController = ModuleLayer .defineModules (modulePluginsCfg , List .of (moduleLibrariesLayer ), s -> modulePluginsCL );
70- final var modulePluginsLayer = modulePluginsLayerController .layer ();
77+ moduleLayerController .addExports (
78+ moduleLayer .findModule ("org.spongepowered.mixin" ).get (),
79+ "org.spongepowered.asm.transformers" ,
80+ moduleLayer .findModule ("org.mangorage.mangobotcore" ).get ()
81+ );
7182
72- Thread . currentThread (). setContextClassLoader ( modulePluginsCL );
83+ // "--add-exports", "org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer=org.mangorage.mangobotcore", "--add-opens", "org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer=org.mangorage.mangobotcore"
7384
74- moduleLibrariesCL .load ();
75- modulePluginsCL .load ();
85+ moduleCL .load ();
7686
77- callMain ("org.mangorage.entrypoint.MangoBotCore" , args , modulePluginsLayer .findModule ("org.mangorage.mangobotcore" ).get ());
87+ callMain ("org.mangorage.entrypoint.MangoBotCore" , args , moduleLayer .findModule ("org.mangorage.mangobotcore" ).get ());
7888 }
89+
7990}
0 commit comments