Skip to content

Instantly share code, notes, and snippets.

@vQuadX
Created May 2, 2016 13:42
Show Gist options
  • Select an option

  • Save vQuadX/3172ab19c59281a3e4d4579bca2b24c4 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
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