Skip to content

Instantly share code, notes, and snippets.

@vQuadX
Created May 2, 2016 13:42
Show Gist options
  • Save vQuadX/3172ab19c59281a3e4d4579bca2b24c4 to your computer and use it in GitHub Desktop.
Save vQuadX/3172ab19c59281a3e4d4579bca2b24c4 to your computer and use it in GitHub Desktop.
Simple Minecraft 1.9 Launcher
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)
@vQuadX
Copy link
Author

vQuadX commented May 2, 2016

Only for Windows

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment