本章给大家介绍一下启动参数的类型

默认JVM参数

通过上一页教程,我们观察Wiki可以看出几个默认JVM参数【这类参数属于写死进启动参数里的,不能被修改的参数】:

参数功能
-Xmn256m新生代堆大小为256MB
-Xmx<最大内存>m指定MC最大可使用内存大小为256MB
-XX:+UseG1GC开启G1
-XX:-UseAdaptiveSizePolicy自动选择年轻代区大小和相应的Survivor区比例
-XX:-OmitStackTraceInFastThrow省略异常栈信息从而快速抛出
-Dfml.ignoreInvalidMinecraftCertificates=True忽略MC无效的证书
-Dfml.ignorePatchDiscrepancies=True忽略修补程序差异
-Dlog4j2.formatMsgNoLookups=true对于Log4J输出的日志只格式化但不查询
-XX:HeapDumpPath=
MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdumpMC默认对于Windows的启动参数。【每个版本必须】
-Xss1M32位Windows特有的参数
-XstartOnFirstThreadMC会在第一个线程启动
-Dminecraft.launcher.brand=<启动器名称>对于≤1.12.2版本可以不需要
-Dminecraft.launcher.version=<启动器版本>对于≤1.12.2版本可以不需要
"-Dos.name=Windows 10"对于≤1.12.2版本以及Windows10以下可以不需要
-Dos.version=10.0对于≤1.12.2版本以及Windows10以下可以不需要
-Dlog4j.configurationFile=<log4j文件路径>\client-1.12.xml这个对于Log4J的配置文件可以不需要。
-Djava.library.path=<natives文件夹路径>【每个版本必须】
-cp "<Minecraft所有类库路径>"【每个版本必须】

其中,<最大内存>用于在启动器内填入启动与运行所需要的最大内存

然后,<log4j文件路径>\client-1.12.xml代表着你对于Log4J的配置文件路径在哪里。

再者,<natives文件路径>则代表了你解压出去的Natives文件【也就是MC在启动游戏的时候所需要调用的DLL类库】放在哪里。【natives一般会放在AppData\Local\Temp文件目录下。官启的逻辑】

还有,<Minecraft所有类库路径>,这个一般是你下载后的Minecraft Libraries路径,这里的路径我们晚点再说。

上述说到的【对于≤1.12.2可以不需要】代表在1.12.2版本以下可有可无,我给的建议是不要。仅此而已。

这就是MC的默认JVM参数,也就是说每个MC启动的时候都必须附带这些参数。除了我会在里面输入可以不需要的参数以外。然后还有一些没有写什么需要什么不需要的,这就是大家可以添加的参数了。

额外JVM参数

这个就是各位可以添加额外JVM参数的地方,这时,如果我们通过wmic获取PCL2或者HMCL的启动参数之时,我们就会发现其实两个的启动参数都不一样。有部分启动器的JVM参数较多,部分的较少。

拿最经典的例子来说:【-Djava.net.preferIPv4Stack=true】这个参数原本是让MC优先选取本机中的IPv4地址。但是最近有玩家说IPv6也可以联机,这也就是说明这个参数不能有才能联机。这也是为什么在PCL2以前的某一篇爱发电里说过移除了这个启动参数的原因。

但是,又有一个问题出现了,在部分的联机中,又必须不能使用IPv6,所以又必须添加进这个参数,因此,这也给了玩家们一种选择,即【选择添加额外JVM参数】,这也是很多启动器能够让玩家自定义MC的JVM参数的原因了。

还有一个问题,额外JVM参数如果我乱输入几串,很可能会造成无法启动的bug,因此,部分启动器会给玩家一个警告,即【非专业人士请勿修改本栏】。

默认游戏参数

默认游戏参数,其实在wiki里面已经说得很明白了哦! 下面列举出MC必要的所有游戏参数

参数功能
net.minecraft.client.main.MainMC主类名,对于Vanilla、Forge、Fabric、Quilt均不一致。这个后面再说。
--username后接用户名。
--version后接游戏版本。
--gameDir后接游戏路径。
--assetsDir后接资源文件路径。
--assetIndex后接资源索引版本。
--uuid后接用户UUID。
--accessToken后接登录令牌。
--clientId后接Minecraft客户端ID【一般会用在服务器里面指定,然后被服务器接收从而作为你的身份证明】。【ps:别的启动器一般保留原值。】
--xuid另一种UUID。【暂不清楚用途,别的启动器一般保留原值。】
--userType后接用户类型。
--versionType后接版本类型,会显示在游戏主界面右下角。以及游戏内F3的左上角。

好了,这些大约就是MC的游戏参数了,此参数根据所选的模组加载器的不同而改变。一般来说,启动器内甚至会内置一个【额外游戏参数】的选项,也依旧是非专业人士修改。

额外游戏参数

这里有以下几个:

参数功能
--width后接窗口宽度。
--height后接窗口高度。
--server后接服务器地址,游戏进入时将直接连入服务器
--port后接服务器的端口号
--fullScreen是否全屏【单独存在,后面无需接参数。如果加了这个则width、height参数均无效。】
--demo是否开启试玩模式

其中,width和height参数不会让玩家在额外游戏参数里设定,而是直接在启动器内给玩家两个输入框进行设定。就这样了!

然后,server和port参数一般启动器内都会给一个【输入一打开MC直接进入的服务器地址、端口】,所以这两个参数一般不会让玩家主动填在额外游戏参数里面。

然后是fullScreen,这个参数在启动器内一般是给予一个复选框,是否在打开MC的时候自动全屏,这时也就是打开MC的时候窗口右上角的方框按钮自动被按下一样。这个参数也一般不会让玩家主动填在额外游戏参数里面。

最后就是demo参数,这个参数启动器一般不会提供复选框或者单选框,但是会在额外游戏参数中的输入框的【Hint提示】中教玩家如何输入额外游戏参数时拿这个参数做例子。

在23w14a以上的额外启动参数

23w14a以上新增了以下几个启动参数:

参数功能
--quickPlayPath指定一个相对于运行目录的日志记录的路径【后接路径】
--quickPlaySinglePlayer指定一个单人模式地图【后接名称】
--quickPlayMultiPlayer指定一个多人模式服务器【后接IP与端口】
--quickPlayRealms指定一个Realms的代号【后接你朋友的Realms代号】

参见示例:

示例功能
--quickPlayPath "logs/fancy.log"将log日志输出在【.minecraft/logs/fancy.log】下
--quickPlaySinglePlayer "New World"指定一进游戏就直接进入New World这个单人世界
--quickPlayMultiPlayer "localhost:12345"指定一进游戏就直接进入localhost,且端口为12345的服务器
--quickPlayRealms 1234指定一进游戏就直接进入1234代号对应的Realms中。

其中,以上部分参数必须使用正版登录,否则可能会失效噢!

同时移除了以下几个启动参数:

参数
--server
--port

在这里,我们的Wiki已经为我们写好了有关于此部分的所有特性!参见此网址,向下滑动直到找到【移除了启动参数】一栏。

那么,在之后的章节中,我只会教大家如何拼接基本的Minecraft启动参数,对于以上几个新增的,我就不管了!

总结

游戏参数总结:只有这一点点的额外游戏参数,多了没有,少了可以!因此我不建议大家在启动器里写让玩家输入额外游戏参数的输入框,只需要写一个额外JVM参数的框就可以了。

这就是MC的启动参数部分,我们将所有启动参数拼接完成之后,利用程序调用cmd执行命令的函数对其进行执行即可启动MC!

其中,默认参数是每个MC启动时必须添加的参数,其次,额外的参数为非必须参数哦!