Skip to content

Improve meta json. #3936

Open
Open
@ZekerZhayard

Description

@ZekerZhayard

Role

Forge 1.17.x

Suggestion

Since forge 1,17 decided to apply project jigsaw, and multimc is not support adding jvm args in meta jsons, so it is necessary to improve it.

Since Lex showed the arguments to launch the dedicate server, the more details is appeared:
https://discord.com/channels/313125603924639766/313125603924639766/864730120190951454

-p libraries/cpw/mods/securejarhandler/0.9.39/securejarhandler-0.9.39.jar;\
    libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar;\
    libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar;\
    libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar;\
    libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar;\
    libraries/org/ow2/asm/asm/9.1/asm-9.1.jar\
--add-modules cpw.mods.securejarhandler,org.objectweb.asm,org.objectweb.asm.tree,org.objectweb.asm.util,org.objectweb.asm.tree.analysis,org.objectweb.asm.commons\
--add-opens java.base/java.util.jar=cpw.mods.securejarhandler\
--add-exports java.base/sun.security.util=cpw.mods.securejarhandler\
-DignoreList=securejarhandler-0.9.39.jar,asm-commons-9.1.jar,asm-util-9.1.jar,asm-analysis-9.1.jar,asm-tree-9.1.jar,asm-9.1.jar\
-DlibraryDirectory=libraries\
-DlegacyClassPath=\
   libraries/cpw/mods/securejarhandler/0.9.39/securejarhandler-0.9.39.jar;\
    libraries/org/ow2/asm/asm/9.1/asm-9.1.jar;\
    libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar;\
    libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar;\
    libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar;\
    libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar;\
    libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar;\
    libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar;\
    libraries/net/minecraftforge/eventbus/5.0.3/eventbus-5.0.3.jar;\
    libraries/net/minecraftforge/forgespi/4.0.9/forgespi-4.0.9.jar;\
    libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar;\
    libraries/cpw/mods/modlauncher/9.0.6/modlauncher-9.0.6.jar;\
    libraries/cpw/mods/bootstraplauncher/0.1.13/bootstraplauncher-0.1.13.jar;\
    libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar;\
    libraries/com/electronwill/night-config/core/3.6.3/core-3.6.3.jar;\
    libraries/com/electronwill/night-config/toml/3.6.3/toml-3.6.3.jar;\
    libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar;\
    libraries/org/apache/maven/maven-artifact/3.6.3/maven-artifact-3.6.3.jar;\
    libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar;\
    libraries/org/apache/logging/log4j/log4j-api/2.14.1/log4j-api-2.14.1.jar;\
    libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar;\
    libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar;\
    libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar;\
    libraries/org/openjdk/nashorn/nashorn-core/15.1.1/nashorn-core-15.1.1.jar;\
    libraries/com/google/guava/guava/21.0/guava-21.0.jar;\
    libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar;\
    libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar;\
    libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar;\
    libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar;\
    libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar\
cpw.mods.bootstraplauncher.BootstrapLauncher

Here is my solution:

"libraries": [
    {
        "downloads": {
            "artifact": {
                "path": "cpw/mods/securejarhandler/0.9.36/securejarhandler-0.9.36.jar",
                "sha1": "ab10da0b40232bb432090feee70e1a4540c493f4",
                "size": 71081,
                "url": "https://maven.minecraftforge.net/cpw/mods/securejarhandler/0.9.36/securejarhandler-0.9.36.jar"
            }
        },
        "name": "cpw.mods:securejarhandler:0.9.36",
        "module": {
            "add-exports": [
                "java.base/sun.security.util"
            ],
            "add-opens": [
                "java.base/java.util.jar"
            ],
            "add-reads": [
                "example.module.name1"
            ],
            "name": "cpw.mods.securejarhandler",
            "patch-module": false
        }
    }
]

This is to add a sub-attribute module under the original libraries attribute. All of libraries which contains this attribute would be added into --module-path. This attribute would be ignored if the java version is < 9:

  • name: the module name, to indicate what should be filled in the --add-modules, if missing, then other attributes of module would be ignored and wouldn't be added into --add-modules;
  • add-exports: corresponds to the --add-exports argument, it would be parsed as --add-exports=java.base/sun.security.util=<module-name>;
  • add-opens: similar to add-exports;
  • add-reads: it would be parsed as --add-reads=<module-name>=example.module.name1;
  • patch-module: the default value is false. If true, it would be parsed as --patch-module=cpw.mods.securejarhandler=<libraries-dir>/cpw/mods/securejarhandler/0.9.36/securejarhandler-0.9.36.jar.

This suggestion is unique

  • I have searched the issue tracker and did not find an issue describing my suggestion, especially not one that has been rejected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreminecraftIssue with Minecraft or mods

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions