Я пытаюсь сделать простой пользовательский лаунчер Minecraft.
Согласно странице Minecraft Wiki для Launcher, должна быть возможность запускать программу запуска Minecraft, используя префиксы имени пользователя и пароля из командной строки, и переходить непосредственно в игру, а не через средство запуска.
Я пробовал различные версии java -cp -u = username -p = password minecraft.jar net.minecraft.LauncherFrame
, и то, что он говорит, является старый метод:
java -cp minecraft.jar net.minecraft.LauncherFrame
Старый метод открывает средство запуска minecraft, как если бы я дважды щелкнул файл jar, однако он не переходит непосредственно на экран меню.
Новый способ (с использованием пароля и имени пользователя в качестве префикса) дает мне сообщение об ошибке, в котором говорится, что префикс -u = имя пользователя или -p = пароль не существует
.
Любая помощь по этому поводу? Я действительно застрял.
Вы можете это сделать, вам просто нужно обойти программу запуска.
В % appdata% . Minecraft bin
(или ~/.minecraft/bin
в системах unixy) есть файл minecraft.jar. Это настоящая игра — ее запускает программа запуска.
Вызовите ее так:
java -Xms512m -Xmx1g -Djava.library.path = natives/-cp "minecraft.jar; lwjgl.jar; lwjgl_util.jar" net.minecraft.client.Minecraft
Установить рабочий каталог на .minecraft/bin
.
Чтобы получить идентификатор сеанса, выполните POST (запросите эту страницу):
https ://login.minecraft.net? user = & password = & version = 13
Вы получите такой ответ:
1343825972000: устарело: SirCmpwn: 7ae9007b9909de05ea58e94199a33b30c310c69c: dba0c48e1c584963b9e93a038a66bb98
Четвертое поле — это идентификатор сеанса. Подробнее здесь. Прочтите эти подробности, этот ответ устарел.
Вот пример входа на minecraft.net на C #.
Чтобы запустить Minecraft с Forge (измените 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-cpC: 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/.mine ремесло/библиотеки/орг/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/ библиотеки/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/com/typesafe/akka/akka-субъект_2. 11/2.3.3/akka-субъект_2.11-2.3.3.jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/com/typesafe/config/1.2.1/config-1.2.1. jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/org/scala-lang/scala -ctors-migration_2.11/1.1.0/scala -ctors-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:Usersnov11AppDataRoaming /.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:Usersnov11AppDataRoaming /.minecraft/libraries/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar;C:Usersnov11AppDataRoaming/.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/библиотеки/org/scala-lang/ scala-Reflection/2.11.1/scala-Reflection-2.11.1.jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/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/библиотеки/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/libra ries/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/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:Usersnov11AppDataRoaming/.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/библиотеки/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 Роуминг/.minecraft/библиотеки/ne t/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/библиотеки/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:Usersnov11AppDataRoaming/.minecraft/libraries/it/unimi/dsi/fastutil/ 7.1.0/fastutil-7.1.0.jar; C: Users nov11 AppData Roaming/.minecraft/библиотеки/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/библиотеки/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar; C: Users nov11 AppData Roaming/.minecraft/ библиотеки/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/библиотеки/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.jarnet.minecraft.launchwrapper.Launch - width854 - height480 - usernameIshikawa - version1.12.2-forge1.12.2-14.23.5.2775 - gameDirC : Users nov11 AppData Roaming/.minecraft - assetsDirC: Users nov11 AppData Roaming/.minecraft/assets - assetIndex1.12 - uuidN/A - accessTokenaeef7bc935f9420eb6314dea7ad7e1e5 - userTycraftpemoClass. .fml.common.launcher.FMLTweaker - versionTypeForge
Просто, когда другие решения не работают. accessToken и uuid можно получить с серверов Mojang, подробности можно узнать в других анонсерах.
Изменить (26.11.2018): я также создал Launcher Framework на C # (.NET Framework 3.5), который вы также можно проверить, как должна работать программа запуска. Доступно здесь
В этом ответе кратко объясняется, как обрабатываются собственные файлы в последней версии программы запуска.
По состоянию на 29 апреля 2017 г. программа запуска Minecraft для Windows извлекает все собственные файлы и помещает их в% APPDATA% Local Temp {random folder}. Эта папка является временной и удаляется после завершения процесса javaw.exe (когда Minecraft закрыт). Местоположение этой временной папки должно быть указано в аргументах запуска как значение
-Djava.library.path=
Кроме того, последняя версия программы запуска (2.0.847) не показывает аргументы запуска, поэтому, если вам нужно проверить их самостоятельно, вы можете сделать это в диспетчере задач (просто включите вкладку «Командная строка» и разверните ее) или с помощью WMIC
, как описано здесь.
Надеюсь, это поможет некоторым людям, которые все еще заинтересованы в этом в 2017 году.
6
Просто создайте этот командный файл пакетной команды в каталоге с игрой. Bat файл занимает один аргумент% 1 в качестве имени пользователя.
Кроме того, я использую заставку, чтобы сделать красивое. Вы НЕ сможете играть онлайн, но кого это волнует.
Отрегулируйте использование памяти, чтобы оно соответствовало вашей машине (-Xmx & -Xmns).
ПРИМЕЧАНИЕ: это для версии minecraft от 2016-0 6-27
@ECHO OFFSET DIR =% cd% SET JAVA_HOME =% DIR% runtime jre-x64 1.8.0_25SET JAVA =% JAVA_HOME % bin java.exeSET LOW_MEM = 768MSET MAX_MEM = 2GSET LIBRARIES = versions 1.10.2 1.10.2-natives-59894925878961SET MAIN_CLASS = net.minecraft.client.main.MainSET CLASSPATH = libraries com mojang netty 1.6 netty-1.6.jar; библиотеки oshi-project oshi-core 1.1 oshi-core-1.1.jar; библиотеки net java dev jna jna 3.4.0 jna-3.4.0.jar ; библиотеки net java dev jna platform 3.4. 0 platform-3.4.0.jar; библиотеки com ibm icu icu4j-core-mojang 51.2 icu4j-core-mojang-51.2.jar; библиотеки net sf jopt-simple jopt-simple 4.6 jopt-simple-4.6.jar; библиотеки com paulscode codecjorbis 20101023 codecjorbis-20101023.jar; библиотеки com paulscode codecwav 20101023 codecwav-20101023.jar; библиотеки com paulscode libraryjavasound 20101123 libraryjavasound-20101123.jar; библиотеки com paulscode librarylwjglopenal 20100824 librarylwjglopenal-20100824.jar; библиотеки com paulscode звуковая система 20120107 звуковая система-20120107.jar; библиотеки io netty netty-all 4.0.23.Final netty-all-4.0.23.Final.jar; библиотеки com google guava guava 17.0 guava-17.0.jar; библиотеки org apache commons commons-lang3 3.3. 2 commons-lang3-3.3.2.jar; библиотеки commons-io commons-io 2.4 commons-io-2.4.jar; библиотеки commons-codec commons-codec 1.9 commons-codec-1.9. jar; библиотеки net java jinput jinput 2.0.5 jinput-2.0.5.jar; библиотеки net java jutils jutils 1.0.0 jutils-1.0.0.jar; библиотеки com гугл код гсон гсон 2.2.4 гсон-2 .2.4.jar; библиотеки com mojang authlib 1.5.22 authlib-1.5.22.jar; библиотеки com mojang realms 1.9.3 realms-1.9.3.jar; библиотеки org apache commons commons-compress 1.8.1 commons-compress-1.8.1.jar; библиотеки org apache httpcomponents httpclient 4.3.3 httpclient-4.3.3.jar; библиотеки commons-logging commons -logging 1.1.3 commons-logging-1.1.3.jar; библиотеки org apache httpcomponents httpcore 4.3.2 httpcore-4.3.2.jar; библиотеки it unimi dsi fastutil 7.0 .12_mojang fastutil-7.0.12_mojang.jar; библиотеки org apache logging log4j log4j-api 2.0-beta9 log4j-api-2.0-beta9.jar; библиотеки org apache logging log4j log4j -core 2.0-beta9 log4j-core-2.0-beta9.jar; библиотеки org lwjgl lwjgl lwjgl 2.9.4-nightly-20150209 lwjgl-2.9.4-nightly-20150209.jar; библиотеки org lwjgl lwjgl lwjgl_util 2.9.4-nightly-20150209 lwjgl_util-2.9.4-nightly-20150209.jar; версии 1.10.2 1.10.2.jarSET JAVA_OPTIONS = -server -splash: splash.png -d64 -da -dsa -Xrs -Xms% LOW_MEM% -Xmx% MAX_MEM% -XX: NewSize =% LOW_MEM% -XX: + UseConcMarkSweepGC -XX: + C MSIncrementalMode -XX: -UseAdaptiveSizePolicy -XX: + DisableExplicitGC -Djava.library.path =% LIBRARIES% -cp% CLASSPATH%% MAIN_CLASS% start/D% DIR%/I/HIGH% JAVA%% JAVA_OPTIONS% 1 --version 1.10.2 --gameDir% DIR% --assetsDir assets --assetIndex 1.10 --uuid 2536abce90e8476a871679918164abc5 --accessToken 99abe417230342cb8e9e2168ab46297a --userType legacy #
--versionType> устаревший --VersionType> p>
1
Это все способы запустить стандартную программу запуска minecraft с учетными данными в текстовых полях.
Раньше был способ войти в Minecraft без средства запуска с помощью командной строки, но с тех пор он был исправлен.
Если вы хотите создать собственный лаунчер с помощью командной строки, удачи, единственный способ войти в майнкрафт jar (IE: как это делает лаунчер) — это отправить почтовый запрос на https://login.minecraft.net/с указанием имени пользователя, пароля, версии программы запуска и ключа RSA. Затем он анализирует псевдо-Json и использует полученный токен сеанса для аутентификации jar-файла из командной строки с загрузкой аргументов.
Если вы пытаетесь создать программу запуска minecraft и не знаете java, http-запросы или json, у вас нет шансов.
Swift
3
Для тех, кто хочет сделать это более надежно для разных версий Minecraft, у меня есть Скрипт Python (адаптированный из частей minecraft-launcher-lib), который отлично справляется со своей задачей
Помимо установки некоторых основных переменных в верхней части после функций, он вызывает get_classpath
, который проходит, например, через ~/.minecraft/versions/1.16.5/1.16.5.json
и перебирает массив libraries
, проверка того, должен ли каждый объект (в массиве) быть добавлен в путь к классам (переменная cp
). добавление этой библиотеки в путь к классам Java определяется функцией should_use_library
, детерминированной в зависимости от архитектуры компьютера и операционной системы. наконец, к некоторым jar-файлам, зависящим от платформы, добавлены дополнительные элементы (например, natives-linux
в org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1 -natives-linux.jar
). эта дополнительная добавленная строка обрабатывается get_natives_string
и пуста, если она не применяется к текущей библиотеке
протестирована в Linux, дистрибутив Arch Linux
#!/usr/bin/env pythonimport jsonimport osimport platformfrom pathlib import Pathimport subprocess "" "Вывод отладки" "" def debug (str): if os.getenv ('DEBUG')! = None: print (str) "" "[Получает natives_string для сообщения jar, если он существует. Если нет ничего специфичного для нативного кода, возвращает пустую строку]" "" def get_natives_string (lib): arch = "" if platform. architecture () [0] == "64bit": arch = "64" elif platform.architecture () [0] == "32bit": arch = "32" else: raise Exception ("Архитектура не поддерживается") nativesFile = "" если не "natives" в lib: return nativesFile # я никогда не видел $ {arch}, но оставьте его на всякий случай, если "windows" в lib ["natives"] и platform.system () == ' Windows ': nativesFile = lib ["natives"] ["windows"]. Replace ("$ {arch}", arch) elif "osx" в lib ["natives"] и platform.system () == 'Дарвин': nativesFile = lib ["аборигены"] ["osx"]. replace ("$ {arch}", arch) elif "linux" в lib ["natives"] и platform.system () == "Linux": nativesFile = lib ["natives"] ["linux"]. replace ( "$ {arch}", arch) else: raise Exception ("Платформа не поддерживается") return nativesFile "" "[Разбирает вложенное свойство" rule "объекта библиотеки, проверяет, следует ли включать его]" "" def should_use_library (lib ): def rule_says_yes (rule): useLib = None if rule ["action"] == "allow": useLib = False elif rule ["action"] == "disallow": useLib = True, если "os" в правиле: для ключа значение в правиле ["os"]. items (): os = platform.system () if key == "name": if value == "windows" и os! = 'Windows': вернуть значение useLib elif == "osx" и os! = 'Darwin': вернуть значение useLib elif == "linux" и os! = 'Linux': вернуть ключ useLib elif == "arch": if value == "x86" и платформу. architecture () [0]! = "32bit": вернуть useLib return not useLib, если нет "rules" в lib: return True shouldUseLibrary = False для i в lib ["rules"]: if rule_says_yes (i): return True return shouldUseLibrary "" "[Получить строку все библиотеки, добавляемые в путь к классам java] "" "def get_classpath (lib, mcDir): cp = [] для i в lib [" библиотеки "]: если не should_use_library (i): продолжить libDomain, libName, libVersion = i [" имя "]. split (": ") jarPath = os.path.join (mcDir," библиотеки ", * 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 '{версия } .json ')). read_text ()) classPath = get_classpath (clientJson, mcDir) mainClass = clientJson [' mainClass '] versionType = clientJso n ['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 ', имя пользователя,' --version ', version,' --gameDir ', mcDir,' --assetsDir ', os.path. join (mcDir, 'assets'), '--assetIndex', assetIndex, '--uuid', uuid, '--accessToken', accessToken, '--userType', 'mojang', '--versionType', ' релиз '])