This repository has been archived on 2020-03-22. You can view files and clone it, but cannot push or open issues/pull-requests.
ThatMinecraftLauncher/lib/launcher/python/mchandler.py

69 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import os, psutil
# java -Xmx$RAM$ -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M -Djava.library.path=$NATIVES$ -cp $LIBRARIES$ net.minecraft.launchwrapper.Launch --username $USERNAME$ --version 1.7.10-Forge10.13.4.1614-1.7.10 --gameDir $GAMEDIR$ --assetsDir $ASSETS$ --assetIndex 1.7.10 --uuid $UUID$ --accessToken $ACCESSTOKEN$ --userProperties {} --userType mojang --width $WINDOWWIDTH$ --height $WINDOWHEIGHT$ --tweakClass cpw.mods.fml.common.launcher.FMLTweaker
# $RAM$ the amount of RAM with postfix (k, M, G ...)
# $WINDOWWIDTH$, $WINDOWHEIGHT$ window width and height in pixels without the WMs decoration
# $USERNAME$ the username as shown in-game
# $UUID$ the players uuid
# $ACCESSTOKEN$ a valid accessToken
# $NATIVES$ the directory containing the natives
# $LIBRARIES$ a colon-separated (semicolon-separated on Windowze) list of library jars
# $GAMEDIR$ the game directory IMPORTANT! Change the cwd to that directory before launch. Some mods are coded to find the standard paths by using the cwd.
# $ASSETS$ the directory containing the assets
game_properties = {
"window width": "1366",
"window height": "768",
"ram": "4G",
"username": None,
"uuid": None,
"access token": None,
"native directory": "lib/natives",
"library directory": "lib/jar", # will be transformed by the launch function
"asset directory": "res",
"game directory": "run",
"java executable": "java",
"additional arguments": ""}
command = None
full_command = None
def autoram(minram, maxram, balance):
ram_available = psutil.virtual_memory().available
# not enough memory
if ram_available < minram:
# TODO: raise an exception
return -1
# plenty of memory
elif ram_available > maxram+balance:
return maxram
# enough memory but we do not want to occupy all
elif float(ram_available)*float(maxram)/float(maxram+balance) > minram:
return int(float(ram_available)*float(maxram)/float(maxram+balance))
# barely enough memory
elif ram_available > minram or ram_available == minram:
return ram_available
def launch():
global command
if command is None:
return 1
# TODO: Raise an exception
return os.system(command)
def set_parameter(parameter, value):
global game_propertoies
game_properties[parameter] = value
build_full_command()
def build_full_command():
global game_properties
global command
global full_command
# TODO: implement
def set_command(minecraft_command):
global command
command = minecraft_command
build_full_command()