从命令行启动 Minecraft - 用户名和密码作为前缀

Posted

技术标签:

【中文标题】从命令行启动 Minecraft - 用户名和密码作为前缀【英文标题】:Launch Minecraft from command line - username and password as prefix 【发布时间】:2013-01-10 00:19:45 【问题描述】:

我正在尝试制作一个简单的自定义 Minecraft 启动器。

根据the Minecraft Wiki page for the Launcher, 应该可以从命令行使用用户名和密码前缀运行 Minecraft 启动器,然后直接进入游戏而不是通过启动器。

我试过各种版本的java -cp -u=username -p=password minecraft.jar net.minecraft.LauncherFrame,说的是老方法:

java -cp minecraft.jar net.minecraft.LauncherFrame <username> <password>

老方法打开minecraft启动器,就像我双击jar文件一样,但是它并没有直接进入菜单屏幕。

新的方式(使用密码和用户名作为前缀),给我一个错误消息说prefix -u=username or -p=password don't exist

对此有任何帮助吗?我真的被困住了。

【问题讨论】:

这真的属于这里而不是gaming.se吗? 将您的用户名和密码放在命令行上会使它们暴露在窥探之下。您真的希望至少被提示输入您的密码。 我不会公开密码,它们将是 AppleScriptObjC 中文本字段中的数据。 是的,有可能。见:gaming.stackexchange.com/questions/122802/… 【参考方案1】:

对于任何想要为不同的 Minecraft 版本更可靠地执行此操作的人,我有一个 Python 脚本(改编自 minecraft-launcher-lib 的部分内容)可以很好地完成这项工作

除了在函数之后的顶部附近设置一些基本变量外,它还调用get_classpath 函数,例如读取~/.minecraft/versions/1.16.5/1.16.5.json,并循环遍历属性libraries 数组,检查每个对象(在数组中),应该被添加到类路径中(cp 变量)。是否将此库添加到 java 类路径由 should_use_library 函数控制,根据计算机的体系结构和操作系统确定。最后,一些特定于平台的 jarfile 在它们前面附加了额外的东西(例如org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-linux.jar 中的natives-linux)。这个额外的前置字符串由get_natives_string 处理,如果它不适用于当前库,则为空

在 Linux 上测试,分发 Arch Linux

#!/usr/bin/env python3

import json
import os
import platform
from pathlib import Path
import subprocess


"""
Debug output
"""
def debug(str):
    if os.getenv('DEBUG') != None:
        print(str)

"""
[Gets the natives_string toprepend to the jar if it exists. If there is nothing native specific, returns and empty string]
"""
def get_natives_string(lib):
    arch = ""
    if platform.architecture()[0] == "64bit":
        arch = "64"
    elif platform.architecture()[0] == "32bit":
        arch = "32"
    else:
        raise Exception("Architecture not supported")

    nativesFile=""
    if not "natives" in lib:
        return nativesFile

    if "windows" in lib["natives"] and platform.system() == 'Windows':
        nativesFile = lib["natives"]["windows"].replace("$arch", arch)
    elif "osx" in lib["natives"] and platform.system() == 'Darwin':
        nativesFile = lib["natives"]["osx"].replace("$arch", arch)
    elif "linux" in lib["natives"] and platform.system() == "Linux":
        nativesFile = lib["natives"]["linux"].replace("$arch", arch)
    else:
        raise Exception("Platform not supported")

    return nativesFile


"""
[Parses "rule" subpropery of library object, testing to see if should be included]
"""
def should_use_library(lib):
    def rule_says_yes(rule):
        useLib = None

        if rule["action"] == "allow":
            useLib = False
        elif rule["action"] == "disallow":
            useLib = True

        if "os" in rule:
            for key, value in rule["os"].items():
                os = platform.system()
                if key == "name":
                    if value == "windows" and os != 'Windows':
                        return useLib
                    elif value == "osx" and os != 'Darwin':
                        return useLib
                    elif value == "linux" and os != 'Linux':
                        return useLib
                elif key == "arch":
                    if value == "x86" and platform.architecture()[0] != "32bit":
                        return useLib

        return not useLib

    if not "rules" in lib:
        return True

    shouldUseLibrary = False
    for i in lib["rules"]:
        if rule_says_yes(i):
            return True

    return shouldUseLibrary

"""
[Get string of all libraries to add to java classpath]
"""
def get_classpath(lib, mcDir):
    cp = []

    for i in lib["libraries"]:
        if not should_use_library(i):
            continue

        libDomain, libName, libVersion = i["name"].split(":")
        jarPath = os.path.join(mcDir, "libraries", *
                               libDomain.split('.'), libName, libVersion)

        native = get_natives_string(i)
        jarFile = libName + "-" + libVersion + ".jar"
        if native != "":
            jarFile = libName + "-" + libVersion + "-" + native + ".jar"

        cp.append(os.path.join(jarPath, jarFile))

    cp.append(os.path.join(mcDir, "versions", lib["id"], f'lib["id"].jar'))

    return os.pathsep.join(cp)

version = '1.16.5'
username = 'username'
uuid = 'uuid'
accessToken = 'token'

mcDir = os.path.join(os.getenv('HOME'), '.minecraft')
nativesDir = os.path.join(os.getenv('HOME'), 'versions', version, 'natives')
clientJson = json.loads(
    Path(os.path.join(mcDir, 'versions', version, f'version.json')).read_text())
classPath = get_classpath(clientJson, mcDir)
mainClass = clientJson['mainClass']
versionType = clientJson['type']
assetIndex = clientJson['assetIndex']['id']

debug(classPath)
debug(mainClass)
debug(versionType)
debug(assetIndex)

subprocess.call([
    '/usr/bin/java',
    f'-Djava.library.path=nativesDir',
    '-Dminecraft.launcher.brand=custom-launcher',
    '-Dminecraft.launcher.version=2.1',
    '-cp',
    classPath,
    'net.minecraft.client.main.Main',
    '--username',
    username,
    '--version',
    version,
    '--gameDir',
    mcDir,
    '--assetsDir',
    os.path.join(mcDir, 'assets'),
    '--assetIndex',
    assetIndex,
    '--uuid',
    uuid,
    '--accessToken',
    accessToken,
    '--userType',
    'mojang',
    '--versionType',
    'release'
])

【讨论】:

太棒了,这正是我几周来一直在寻找的——非常感谢!一个提示:不在 Python 2.7 下运行,但适用于我在 Ubuntu 18.04 下的 Python 3.6。我将第一行更改为 python3,现在它对我来说运行良好。终于不再强制更新,我可以(永久)通过这种方式在我的电脑上更改我的用户名! @EthanArnold 很高兴它有帮助:) 我更新了答案以在 shebang 中明确使用 python3 嗨,很棒的代码,但你能帮忙使这个窗口兼容吗?我不确定要更改什么并且无法使其正常工作,谢谢:)【参考方案2】:

可以做到这一点,你只需要绕过启动器。

%appdata%\.minecraft\bin(或unixy 系统上的~/.minecraft/bin)中有一个minecraft.jar 文件。这是真正的游戏 - 启动器会运行它。

像这样调用它:

java -Xms512m -Xmx1g -Djava.library.path=natives/ -cp "minecraft.jar;lwjgl.jar;lwjgl_util.jar" net.minecraft.client.Minecraft <username> <sessionID>

将工作目录设置为.minecraft/bin

要获取会话 ID,请 POST(请求此页面):

https://login.minecraft.net?user=<username>&password=<password>&version=13

你会得到这样的回应:

1343825972000:deprecated:SirCmpwn:7ae9007b9909de05ea58e94199a33b30c310c69c:dba0c48e1c584963b9e93a038a66bb98

第四个字段是会话 ID。 More details here。 阅读这些细节,这个答案已经过时了

Here's an example 使用 C# 登录 minecraft.net。

【讨论】:

这个方法有更新吗?我的计算机(Windows 10)上既没有 %appdata%\.minecraft\bin 也没有我的 appdata 文件夹结构中的 minecraft.jar。我确实有一个 1.9.jar 这两个例子都导致了 404 并且不再起作用。 主jar文件位于.minecraft\versions\&lt;version&gt;\&lt;version&gt;.jar,库位于.minecraft\libraries。 login.minecraft.net 已关闭。 @drew-devault:此处的 GitHub 示例链接已过时且已失效。【参考方案3】:

使用 Forge 运行 Minecraft(将 C:\Users\nov11\AppData\Roaming/.minecraft/更改为您的 MineCraft 路径 :) [仅适用于有点懒得在 Google 上搜索的人...] 特别感谢 ammarx 的 TagAPI_3 (Github) 用于创建此命令。 参数被逐行分隔,以便更容易找到有用的参数。

java
-Xms1024M
-Xmx1024M
-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
-Djava.library.path=C:\Users\nov11\AppData\Roaming/.minecraft/versions/1.12.2/natives
-cp
C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/minecraftforge/forge/1.12.2-14.23.5.2775/forge-1.12.2-14.23.5.2775.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/ow2/asm/asm-all/5.2/asm-all-5.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/jline/jline/3.5.1/jline-3.5.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/typesafe/config/1.2.1/config-1.2.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2/scala-continuations-library_2.11-1.0.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2/scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/java3d/vecmath/1.5.2/vecmath-1.5.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/mojang/patchy/1.1/patchy-1.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/google/guava/guava/21.0/guava-21.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/commons-io/commons-io/2.5/commons-io-2.5.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/mojang/authlib/1.5.25/authlib-1.5.25.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/mojang/realms/1.10.22/realms-1.10.22.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl/2.9.2-nightly-20140822/lwjgl-2.9.2-nightly-20140822.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.2-nightly-20140822/lwjgl_util-2.9.2-nightly-20140822.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/ca/weblite/java-objc-bridge/1.0.0/java-objc-bridge-1.0.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/libraries/ca/weblite/java-objc-bridge/1.0.0/java-objc-bridge-1.0.0.jar;C:\Users\nov11\AppData\Roaming/.minecraft/versions/1.12.2/1.12.2.jar
net.minecraft.launchwrapper.Launch
--width
854
--height
480
--username
Ishikawa
--version
1.12.2-forge1.12.2-14.23.5.2775
--gameDir
C:\Users\nov11\AppData\Roaming/.minecraft
--assetsDir
C:\Users\nov11\AppData\Roaming/.minecraft/assets
--assetIndex
1.12
--uuid
N/A
--accessToken
aeef7bc935f9420eb6314dea7ad7e1e5
--userType
mojang
--tweakClass
net.minecraftforge.fml.common.launcher.FMLTweaker
--versionType
Forge

就在其他解决方案不起作用时。 accessToken 和 uuid 可以从 Mojang 服务器获取,详情请查看其他回答者。

编辑(2018 年 11 月 26 日): 我还在 C# (.NET Framework 3.5) 中创建了 Launcher Framework,您还可以检查它以了解启动器应该如何工作 Available Here

【讨论】:

【参考方案4】:

这个答案将简要解释如何在最新的启动器上处理原生文件。

截至 2017 年 4 月 29 日,适用于 Windows 的 Minecraft 启动器会提取所有本机文件并将它们放在信息 %APPDATA%\Local\Temprandom folder 中。该文件夹是临时的,一旦 javaw.exe 进程完成(当 Minecraft 关闭时)就会被删除。该临时文件夹的位置必须在启动参数中作为

的值提供
-Djava.library.path=

此外,最新的启动器 (2.0.847) 不会向您显示启动参数,因此如果您需要自己检查它们,您可以在任务管理器下进行(只需启用命令行选项卡并展开它)或使用WMIC 实用程序as explained here。

希望这可以帮助一些在 2017 年仍然有兴趣这样做的人。

【讨论】:

谢谢!启动器将存储在 %APPDATA%\Local\Temprandom folder 中的 .dll 带到哪里? @Dardanboy 将文件夹中的 dll 添加到 java 类路径中,以便本机功能正常工作。一旦java进程不再运行,dll就不再需要,然后被删除。 是的,我明白了。但我认为启动器会从服务器下载这些文件。在将它们放入这个临时文件夹之前,你知道它从哪里下载它们(然后像你说的那样将它们与 javaw.exe 链接?) 所有库都列在网站https://s3.amazonaws.com/Minecraft.Download/versions/version/version.json 的版本索引中。以1.12.2为例,s3.amazonaws.com/Minecraft.Download/versions/1.12.2/1.12.2.json 谢谢你,你的评论把我带到了这里:gist.github.com/dequis/d24ce9d9915401f13dd1(我把它写给来这里的人)【参考方案5】:

只需在您的游戏目录中创建此批处理命令文件即可。 Bat 文件采用一个参数 %1 作为用户名。 另外,我使用闪屏来制作漂亮的。 您将无法在线玩游戏,但谁在乎呢。 调整您的内存使用量以适合您的机器(-Xmx 和 -Xmns)。 注意:这是截至 2016 年 6 月 27 日的我的世界版本

@ECHO OFF
SET DIR=%cd%
SET JAVA_HOME=%DIR%\runtime\jre-x64\1.8.0_25
SET JAVA=%JAVA_HOME%\bin\java.exe
SET LOW_MEM=768M
SET MAX_MEM=2G
SET LIBRARIES=versions\1.10.2\1.10.2-natives-59894925878961
SET MAIN_CLASS=net.minecraft.client.main.Main
SET CLASSPATH=libraries\com\mojang\netty\1.6\netty-1.6.jar;libraries\oshi-project\oshi-core\1.1\oshi-core-1.1.jar;libraries\net\java\dev\jna\jna\3.4.0\jna-3.4.0.jar;libraries\net\java\dev\jna\platform\3.4.0\platform-3.4.0.jar;libraries\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar;libraries\net\sf\jopt-simple\jopt-simple\4.6\jopt-simple-4.6.jar;libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;libraries\io\netty\netty-all\4.0.23.Final\netty-all-4.0.23.Final.jar;libraries\com\google\guava\guava\17.0\guava-17.0.jar;libraries\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;libraries\commons-codec\commons-codec\1.9\commons-codec-1.9.jar;libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;libraries\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar;libraries\com\mojang\authlib\1.5.22\authlib-1.5.22.jar;libraries\com\mojang\realms\1.9.3\realms-1.9.3.jar;libraries\org\apache\commons\commons-compress\1.8.1\commons-compress-1.8.1.jar;libraries\org\apache\httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar;libraries\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;libraries\org\apache\httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar;libraries\it\unimi\dsi\fastutil\7.0.12_mojang\fastutil-7.0.12_mojang.jar;libraries\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar;libraries\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar;libraries\org\lwjgl\lwjgl\lwjgl\2.9.4-nightly-20150209\lwjgl-2.9.4-nightly-20150209.jar;libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.4-nightly-20150209\lwjgl_util-2.9.4-nightly-20150209.jar;versions\1.10.2\1.10.2.jar
SET JAVA_OPTIONS=-server -splash:splash.png -d64 -da -dsa -Xrs -Xms%LOW_MEM% -Xmx%MAX_MEM% -XX:NewSize=%LOW_MEM% -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:+DisableExplicitGC -Djava.library.path=%LIBRARIES% -cp %CLASSPATH%  %MAIN_CLASS%

start /D %DIR% /I /HIGH %JAVA% %JAVA_OPTIONS% --username %1 --version 1.10.2 --gameDir %DIR% --assetsDir assets --assetIndex 1.10 --uuid 2536abce90e8476a871679918164abc5 --accessToken 99abe417230342cb8e9e2168ab46297a --userType legacy --versionType release --nativeLauncherVersion 307

【讨论】:

如果您将 uuid 和 accesstoken 替换为您可以从 logging in to the auth server 获得的数据(无论是通过 curl 还是其他程序),您将能够在线玩游戏。【参考方案6】:

这些都是使用文本框中的凭据启动标准 Minecraft 启动器的所有方法。

以前有一种方法可以在没有启动器的情况下使用命令行登录到我的世界,但它已经被修补了。

如果您想使用命令行制作自定义启动器,那么祝您好运, 登录 minecraft jar 的唯一方法(IE:启动器的方式)是使用用户名、密码、启动器版本向https://login.minecraft.net/ 发送帖子请求, 和一个 RSA 密钥。然后它解析伪 Json,并使用其中的会话令牌从命令行使用大量参数对 jar 进行身份验证。

如果你正在尝试制作一个 minecraft 启动器并且你不了解 java、http 请求或 json,那么你就没有机会了。

斯威夫特

【讨论】:

哇,这真的很糟糕。想知道他们为什么要修补它?它会让定制启动器变得更加容易,而不会成为安全问题...... 这是一个安全问题,任何人都可以看到您通过网络发送的纯文本密码。 这不正确,第三方启动器仍然可以工作。我将提供以下信息的答案。

以上是关于从命令行启动 Minecraft - 用户名和密码作为前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NodeJS 中的用户名中获取 Minecraft 玩家的 UUID?

Linux如何设置Root自动登录X图形界面?(我家没外人,不用密码)

通过 .bat 在已打开的 CMD 中插入命令

openssh的初始密码就不对,怎么办

mac命令行 从linux服务器下载文件到本地

VNC远程登陆树莓派3(包括开机启动)