Created
May 2, 2016 13:42
-
-
Save vQuadX/3172ab19c59281a3e4d4579bca2b24c4 to your computer and use it in GitHub Desktop.
Simple Minecraft 1.9 Launcher
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| import uuid | |
| import subprocess | |
| from zipfile import ZipFile | |
| java_parameters = '-Xmx2G' | |
| game_dir = r'"D:\Games\Minecraft"' | |
| version = '1.9.2' | |
| natives_path = r'{}\versions\{}\natives'.format(game_dir, version) | |
| libraries_path = '{}\{}'.format(game_dir, 'libraries') | |
| libraries = [r'{}\oshi-project\oshi-core\1.1\oshi-core-1.1.jar'.format(libraries_path), | |
| r'{}\net\java\dev\jna\jna\3.4.0\jna-3.4.0.jar'.format(libraries_path), | |
| r'{}\net\java\dev\jna\platform\3.4.0\platform-3.4.0.jar'.format(libraries_path), | |
| r'{}\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar'.format(libraries_path), | |
| r'{}\net\sf\jopt-simple\jopt-simple\4.6\jopt-simple-4.6.jar'.format(libraries_path), | |
| r'{}\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar'.format(libraries_path), | |
| r'{}\com\paulscode\codecwav\20101023\codecwav-20101023.jar'.format(libraries_path), | |
| r'{}\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar'.format(libraries_path), | |
| r'{}\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar'.format(libraries_path), | |
| r'{}\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar'.format(libraries_path), | |
| r'{}\io\netty\netty-all\4.0.23.Final\netty-all-4.0.23.Final.jar'.format(libraries_path), | |
| r'{}\com\google\guava\guava\17.0\guava-17.0.jar'.format(libraries_path), | |
| r'{}\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar'.format(libraries_path), | |
| r'{}\commons-io\commons-io\2.4\commons-io-2.4.jar'.format(libraries_path), | |
| r'{}\commons-codec\commons-codec\1.9\commons-codec-1.9.jar'.format(libraries_path), | |
| r'{}\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar'.format(libraries_path), | |
| r'{}\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar'.format(libraries_path), | |
| r'{}\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar'.format(libraries_path), | |
| r'{}\com\mojang\authlib\1.5.22\authlib-1.5.22.jar'.format(libraries_path), | |
| r'{}\com\mojang\realms\1.8.18\realms-1.8.18.jar'.format(libraries_path), | |
| r'{}\org\apache\commons\commons-compress\1.8.1\commons-compress-1.8.1.jar'.format(libraries_path), | |
| r'{}\org\apache\httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar'.format(libraries_path), | |
| r'{}\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar'.format(libraries_path), | |
| r'{}\org\apache\httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar'.format(libraries_path), | |
| r'{}\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar'.format(libraries_path), | |
| r'{}\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar'.format(libraries_path), | |
| r'{}\org\lwjgl\lwjgl\lwjgl\2.9.4-nightly-20150209\lwjgl-2.9.4-nightly-20150209.jar'.format(libraries_path), | |
| r'{}\org\lwjgl\lwjgl\lwjgl_util\2.9.4-nightly-20150209\lwjgl_util-2.9.4-nightly-20150209.jar'.format(libraries_path), | |
| r'{0}\versions\{1}\{1}.jar'.format(game_dir, '1.9.2', )] | |
| main_class = 'net.minecraft.client.main.Main' | |
| username = 'QuadX' | |
| asset_dir = r'{}\assets'.format(game_dir) | |
| asset_index = '1.9' | |
| uuid = uuid.uuid1() | |
| access_token = '1a2b3c4d5e6f7g8h9i0g' | |
| user_type = 'mojang' | |
| version_type = 'release' | |
| fullscreen = False | |
| connect_to_server = False | |
| server = { | |
| 'ip': '127.0.0.1', | |
| 'port': '25565' | |
| } | |
| run = 'java {} -Djava.library.path={} -cp {} {}' \ | |
| ' --username {}' \ | |
| ' --version {}' \ | |
| ' --gameDir {}' \ | |
| ' --assetsDir {}' \ | |
| ' --assetIndex {}' \ | |
| ' --uuid {}' \ | |
| ' --accessToken {}' \ | |
| ' --userType {}' \ | |
| ' --versionType {} {}'.format(java_parameters, | |
| natives_path, | |
| ';'.join(libraries), | |
| main_class, | |
| username, | |
| version, | |
| game_dir, | |
| asset_dir, | |
| asset_index, | |
| uuid, | |
| access_token, | |
| user_type, | |
| version_type, | |
| '--fullscreen' if fullscreen else '', | |
| '--server {} --port {}'.format(server['ip'], server['port']) | |
| if connect_to_server else '') | |
| natives_path = natives_path.replace('"', '') | |
| if not os.path.isdir(natives_path) or not os.listdir(natives_path): | |
| natives_paths = [ | |
| r'{}\org\lwjgl\lwjgl\lwjgl-platform\2.9.4-nightly-20150209\lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar'.format(libraries_path.replace('"', '')), | |
| r'{}\net\java\jinput\jinput-platform\2.0.5\jinput-platform-2.0.5-natives-windows.jar'.format(libraries_path.replace('"', '')) | |
| ] | |
| if os.listdir(natives_path): | |
| os.mkdir(natives_path) | |
| for natives in natives_paths: | |
| with ZipFile(natives) as jar: | |
| for filename in jar.filelist: | |
| if not str.startswith(filename.filename, 'META-INF'): | |
| jar.extract(filename, path=natives_path) | |
| subprocess.run(run, shell=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
{ "id": "1.9.2", "family": "1.9", "time": "2016-04-25T19:37:54+03:00", "releaseTime": "2016-03-30T18:23:55+03:00", "type": "release", "minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type}", "mainClass": "net.minecraft.client.main.Main", "minimumLauncherVersion": 18, "tlauncherVersion": 0, "assets": "1.9", "source": "official_version_repo", "libraries": [ { "name": "oshi-project:oshi-core:1.1" }, { "name": "net.java.dev.jna:jna:3.4.0" }, { "name": "net.java.dev.jna:platform:3.4.0" }, { "name": "com.ibm.icu:icu4j-core-mojang:51.2" }, { "name": "net.sf.jopt-simple:jopt-simple:4.6" }, { "name": "com.paulscode:codecjorbis:20101023" }, { "name": "com.paulscode:codecwav:20101023" }, { "name": "com.paulscode:libraryjavasound:20101123" }, { "name": "com.paulscode:librarylwjglopenal:20100824" }, { "name": "com.paulscode:soundsystem:20120107" }, { "name": "io.netty:netty-all:4.0.23.Final" }, { "name": "com.google.guava:guava:17.0" }, { "name": "org.apache.commons:commons-lang3:3.3.2" }, { "name": "commons-io:commons-io:2.4" }, { "name": "commons-codec:commons-codec:1.9" }, { "name": "net.java.jinput:jinput:2.0.5" }, { "name": "net.java.jutils:jutils:1.0.0" }, { "name": "com.google.code.gson:gson:2.2.4" }, { "name": "com.mojang:authlib:1.5.22" }, { "name": "com.mojang:realms:1.8.18" }, { "name": "org.apache.commons:commons-compress:1.8.1" }, { "name": "org.apache.httpcomponents:httpclient:4.3.3" }, { "name": "commons-logging:commons-logging:1.1.3" }, { "name": "org.apache.httpcomponents:httpcore:4.3.2" }, { "name": "org.apache.logging.log4j:log4j-api:2.0-beta9" }, { "name": "org.apache.logging.log4j:log4j-core:2.0-beta9" }, { "name": "org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209", "rules": [ { "action": "allow" }, { "action": "disallow", "os": { "name": "osx" } } ] }, { "name": "org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209", "rules": [ { "action": "allow" }, { "action": "disallow", "os": { "name": "osx" } } ] }, { "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209", "rules": [ { "action": "allow" }, { "action": "disallow", "os": { "name": "osx" } } ], "natives": { "linux": "natives-linux", "osx": "natives-osx", "windows": "natives-windows" }, "extract": { "exclude": [ "META-INF/" ] } }, { "name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822", "rules": [ { "action": "allow", "os": { "name": "osx" } } ] }, { "name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822", "rules": [ { "action": "allow", "os": { "name": "osx" } } ] }, { "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822", "rules": [ { "action": "allow", "os": { "name": "osx" } } ], "natives": { "linux": "natives-linux", "osx": "natives-osx", "windows": "natives-windows" }, "extract": { "exclude": [ "META-INF/" ] } }, { "name": "net.java.jinput:jinput-platform:2.0.5", "natives": { "linux": "natives-linux", "osx": "natives-osx", "windows": "natives-windows" }, "extract": { "exclude": [ "META-INF/" ] } } ], "downloads": { "client": { "url": "https://launcher.mojang.com/mc/game/1.9.2/client/19106fd5e222dca0f2dde9f66db8384c9a7db957/client.jar", "sha1": "19106fd5e222dca0f2dde9f66db8384c9a7db957", "size": 8699297 }, "server": { "url": "https://launcher.mojang.com/mc/game/1.9.2/server/2b95cc7b136017e064c46d04a5825fe4cfa1be30/server.jar", "sha1": "2b95cc7b136017e064c46d04a5825fe4cfa1be30", "size": 8848002 } }, "assetIndex": { "id": "1.9", "known": true, "url": "https://launchermeta.mojang.com/mc-staging/assets/1.9/8549e8aca91ee8b8d1620e9e8252d477f16a56d5/1.9.json", "sha1": "8549e8aca91ee8b8d1620e9e8252d477f16a56d5", "size": 137552 } }