返回首页

《 Minecraft 》为什么要以启动器的形式启动

来源:www.ahlulin.com   时间:2023-03-31 11:19   点击:55  编辑:崔融   手机版

因为Minecraft是基于JAVA语言,Java的class编译文件,jar归档文件运行需要JVM(类似于Python的解释器),JVM需要参数启动(单个jar文件或class文件不需要JVM参数,JVM可以直接运行),所以需要启动器生成参数

但是!

Minecraft的文件太多了(jar支持内嵌jar来运行前置文件,但是这样文件体积会大的吓人),启动的时候需要调用大量文件支持Minecraft运行,如果加mod,就需要去加载,当你双击Minecraft.jar(举个例子,比如你是1.12.2版本,加forge,那么就是1.12.2_forge+版本号.jar)你会发现JVM不会显示任何东西,因为它在加载时JVM就崩溃了,所以不要指望它能运行,人家压根不知道文件在哪,核心文件也没有标识路径,但是如果在运行时给出需要加载的文件以及文件路径,那么他就会知道文件在哪,然后去加载,然后游戏就能运行了,这个参数不多,只有一行,可是前面说了,文件挺多(json会给出文件加载路径),然后参数大概就是这样

set APPDATA=D:\.minecraft\

cd /D D:\.minecraft\

D:\PCL\java\openjdk-18.0.1.1_windows-x64_bin\jdk-18.0.1.1\bin\java.exe -XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true -Djava.net.preferIPv4Stack=true -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Djava.library.path=D:\.minecraft\versions\1.18.2-VEM\1.18.2-VEM-natives -Dminecraft.launcher.brand=PCL2 -Dminecraft.launcher.version=259 -cp D:\.minecraft\libraries\com\mojang\logging\1.0.0\logging-1.0.0.jar;D:\.minecraft\libraries\com\mojang\blocklist\1.0.10\blocklist-1.0.10.jar;D:\.minecraft\libraries\com\mojang\patchy\2.2.10\patchy-2.2.10.jar;D:\.minecraft\libraries\com\github\oshi\oshi-core\5.8.5\oshi-core-5.8.5.jar;D:\.minecraft\libraries\net\java\dev\jna\jna\5.10.0\jna-5.10.0.jar;D:\.minecraft\libraries\net\java\dev\jna\jna-platform\5.10.0\jna-platform-5.10.0.jar;D:\.minecraft\libraries\org\slf4j\slf4j-api\1.8.0-beta4\slf4j-api-1.8.0-beta4.jar;D:\.minecraft\libraries\org\apache\logging\log4j\log4j-slf4j18-impl\2.17.0\log4j-slf4j18-impl-2.17.0.jar;D:\.minecraft\libraries\com\ibm\icu\icu4j\70.1\icu4j-70.1.jar;D:\.minecraft\libraries\com\mojang\javabridge\1.2.24\javabridge-1.2.24.jar;D:\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\5.0.4\jopt-simple-5.0.4.jar;D:\.minecraft\libraries\io\netty\netty-all\4.1.68.Final\netty-all-4.1.68.Final.jar;D:\.minecraft\libraries\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\.minecraft\libraries\com\google\guava\guava\31.0.1-jre\guava-31.0.1-jre.jar;D:\.minecraft\libraries\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\.minecraft\libraries\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;D:\.minecraft\libraries\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;D:\.minecraft\libraries\com\mojang\brigadier\1.0.18\brigadier-1.0.18.jar;D:\.minecraft\libraries\com\mojang\datafixerupper\4.1.27\datafixerupper-4.1.27.jar;D:\.minecraft\libraries\com\google\code\gson\gson\2.8.9\gson-2.8.9.jar;D:\.minecraft\libraries\com\mojang\authlib\3.3.39\authlib-3.3.39.jar;D:\.minecraft\libraries\org\apache\commons\commons-compress\1.21\commons-compress-1.21.jar;D:\.minecraft\libraries\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;D:\.minecraft\libraries\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\.minecraft\libraries\org\apache\httpcomponents\httpcore\4.4.14\httpcore-4.4.14.jar;D:\.minecraft\libraries\it\unimi\dsi\fastutil\8.5.6\fastutil-8.5.6.jar;D:\.minecraft\libraries\org\apache\logging\log4j\log4j-api\2.17.0\log4j-api-2.17.0.jar;D:\.minecraft\libraries\org\apache\logging\log4j\log4j-core\2.17.0\log4j-core-2.17.0.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl\3.2.2\lwjgl-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-jemalloc\3.2.2\lwjgl-jemalloc-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-openal\3.2.2\lwjgl-openal-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-opengl\3.2.2\lwjgl-opengl-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-glfw\3.2.2\lwjgl-glfw-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-stb\3.2.2\lwjgl-stb-3.2.2.jar;D:\.minecraft\libraries\org\lwjgl\lwjgl-tinyfd\3.2.2\lwjgl-tinyfd-3.2.2.jar;D:\.minecraft\libraries\com\mojang\text2speech\1.12.4\text2speech-1.12.4.jar;D:\.minecraft\libraries\net\fabricmc\tiny-mappings-parser\0.3.0+build.17\tiny-mappings-parser-0.3.0+build.17.jar;D:\.minecraft\libraries\net\fabricmc\sponge-mixin\0.11.4+mixin.0.8.5\sponge-mixin-0.11.4+mixin.0.8.5.jar;D:\.minecraft\libraries\net\fabricmc\tiny-remapper\0.8.2\tiny-remapper-0.8.2.jar;D:\.minecraft\libraries\net\fabricmc\access-widener\2.1.0\access-widener-2.1.0.jar;D:\.minecraft\libraries\org\ow2\asm\asm\9.3\asm-9.3.jar;D:\.minecraft\libraries\org\ow2\asm\asm-analysis\9.3\asm-analysis-9.3.jar;D:\.minecraft\libraries\org\ow2\asm\asm-commons\9.3\asm-commons-9.3.jar;D:\.minecraft\libraries\org\ow2\asm\asm-tree\9.3\asm-tree-9.3.jar;D:\.minecraft\libraries\org\ow2\asm\asm-util\9.3\asm-util-9.3.jar;D:\.minecraft\libraries\net\fabricmc\intermediary\1.18.2\intermediary-1.18.2.jar;D:\.minecraft\libraries\net\fabricmc\fabric-loader\0.14.8\fabric-loader-0.14.8.jar;D:\.minecraft\versions\1.18.2-VEM\1.18.2-VEM.jar -DFabricMcEmu=net.minecraft.client.main.Main -Xmn256m -Xmx3072m net.fabricmc.loader.impl.launch.knot.Knlient --username rumengchuxing --version 1.18.2-VEM --gameDir D:\.minecraft\versions\1.18.2-VEM --assetsDir D:\.minecraft\assets --assetIndex 1.18 --uuid D91DCB --accessToken D91DCB --clientId ${clientid} --xuid ${auth_xuid} --userType Legacy --versionType Java:游戏启动中 | {time}: | 欢迎:rumengchuxing | {login}: --width 854 --height 480

所以这是为什么需要启动器启动

其实所有游戏都是以启动器的形式启动的,只不过其他游戏的启动器之是负责启动,所以大家就把启动器认为成是游戏的一部分,而mc的启动器还可以下载不同版本的游戏,所以大家就会认为他是启动器而不是游戏的一部分

顶一下
(0)
0%
踩一下
(0)
0%