update gmclc.py.

1.新增正版启动
2.修复了一些蜜汁BUG
This commit is contained in:
Bigsk 2020-08-19 15:02:49 +08:00 committed by Gitee
parent 96fd5bba4e
commit 6d6f63b9db

107
gmclc.py
View File

@ -14,11 +14,11 @@ config_json=config_open.read()
config_open.close() config_open.close()
try: try:
config=json.loads(config_json) config=json.loads(config_json)
config_state=True config_status=True
except: except:
config_state=False config_status=False
Log=Log + '\n' + "[Program]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]Starting to read config file.' Log=Log + '\n' + "[Program]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]Starting to read config file.'
if(config_state==True): if(config_status==True):
Log=Log + '\n' + "[" + config['name'] + "]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]Read config successfully.' Log=Log + '\n' + "[" + config['name'] + "]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[INFO]Read config successfully.'
else: else:
Log=Log + '\n' + "[Program]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[ERROR]Read config failed.' Log=Log + '\n' + "[Program]" + '[' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ']' + '[ERROR]Read config failed.'
@ -38,7 +38,7 @@ parser=argparse.ArgumentParser()
parser.add_argument("--launcher_name", help="The name of the launcher.") parser.add_argument("--launcher_name", help="The name of the launcher.")
parser.add_argument("--launcher_version", help="The version of the launcher.") parser.add_argument("--launcher_version", help="The version of the launcher.")
parser.add_argument("--type", help="The type of task,{\"launcher_game\",\"search_file\",\"get_game_version_list\",\"get_java_path\",\"get_system_memory\",\"get_online_source_list\",\"install_online_source\",\"get_uuid\",\"download_file\",\"clean_logs\",\"clean_temp\",\"clean\",\"clean_logs_without_output\",\"clean_without_output\"}") parser.add_argument("--type", help="The type of task,{\"launcher_game\",\"search_file\",\"get_game_version_list\",\"get_java_path\",\"get_system_memory\",\"get_online_source_list\",\"install_online_source\",\"get_uuid\",\"download_file\",\"clean_logs\",\"clean_temp\",\"clean\",\"clean_logs_without_output\",\"clean_without_output\"}")
parser.add_argument("--copyright", help="The copyright of the game,true of false.") parser.add_argument("--copyright", help="The copyright of the game,true of false.The default is false.")
#Launcher Game Parameter Area. #Launcher Game Parameter Area.
#Search File Area. #Search File Area.
parser.add_argument("--file_name", help="The name of file which you want to search.") parser.add_argument("--file_name", help="The name of file which you want to search.")
@ -285,6 +285,11 @@ make_dir_exist("temp")
#-------------------------------------------------------# #-------------------------------------------------------#
#Use Statistics Area.
open_s=requests.get('https://open.gmclc.statistics.ghink.net', headers=UA)
#-------------------------------------------------------#
log("info","Start to deal the tasks that need to do.") log("info","Start to deal the tasks that need to do.")
if(parser.type=="download_file"): if(parser.type=="download_file"):
log("info","Download file(s) mode.") log("info","Download file(s) mode.")
@ -509,26 +514,77 @@ elif(parser.type=="launcher_game"):
deadly_error() deadly_error()
else: else:
dir_i=parser.dir dir_i=parser.dir
return_data('Checking player id.') return_data('Checking game copyright.')
log('info','Checking player id.') log('info','Checking game copyright.')
if(parser.id==None): if(parser.copyright==None):
return_data('There has a error in parameters you input,please check if the parameter "id" is correct.') if(parser.id==None):
log('error','There has a error in parameters you input,please check if the parameter "id" is correct.') return_data('There has a error in parameters you input,please check if the parameter "id" is correct.')
deadly_error() log('error','There has a error in parameters you input,please check if the parameter "id" is correct.')
else: deadly_error()
return_data('Checking player uuid.')
log('info','Checking player uuid.')
if(parser.uuid==None):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='gmclc'):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='hmcl'):
uuid=get_uuid(parser.id,'hmcl')
elif(len(parser.uuid)==32):
uuid=parser.uuid
else: else:
return_data('There has a error in parameters you input,please check if the parameter "uuid" is correct.') return_data('Checking player uuid.')
log('error','There has a error in parameters you input,please check if the parameter "uuid" is correct.') log('info','Checking player uuid.')
if(parser.uuid==None):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='gmclc'):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='hmcl'):
uuid=get_uuid(parser.id,'hmcl')
elif(len(parser.uuid)==32):
uuid=parser.uuid
else:
return_data('There has a error in parameters you input,please check if the parameter "uuid" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "uuid" is correct.')
deadly_error()
access_token=uuid
id_i=parser.id
elif(parser.copyright=='false'):
if(parser.id==None):
return_data('There has a error in parameters you input,please check if the parameter "id" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "id" is correct.')
deadly_error()
else:
return_data('Checking player uuid.')
log('info','Checking player uuid.')
if(parser.uuid==None):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='gmclc'):
uuid=get_uuid(parser.id,'gmclc')
elif(parser.uuid=='hmcl'):
uuid=get_uuid(parser.id,'hmcl')
elif(len(parser.uuid)==32):
uuid=parser.uuid
else:
return_data('There has a error in parameters you input,please check if the parameter "uuid" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "uuid" is correct.')
deadly_error()
access_token=uuid
id_i=parser.id
elif(parser.copyright=='true'):
if(parser.email==None):
return_data('There has a error in parameters you input,please check if the parameter "email" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "email" is correct.')
deadly_error()
elif(parser.email.count('@')==1):
email=parser.email
else:
return_data('There has a error in parameters you input,please check if the parameter "email" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "email" is correct.')
deadly_error()
if(parser.password==None):
return_data('There has a error in parameters you input,please check if the parameter "password" is correct.')
log('error','There has a error in parameters you input,please check if the parameter "password" is correct.')
deadly_error()
else:
password=parser.password
if(json.loads(requests.get('https://authserver.mojang.com/', headers=UA).text)['Status']=='OK'):
rq_r=json.loads(requests.post('https://authserver.mojang.com/authenticate', '{"agent": {"name": "Minecraft","version": 1},"username": "' + parser.email + '","password": "' + parser.password + '"}', headers=UA).text)
access_token=rq_r['accessToken']
id_i=rq_r['selectedProfile']['name']
uuid=rq_r['selectedProfile']['id']
else:
return_data('There has a error while login to mojang account,the auth server has failed.')
log('error','There has a error while login to mojang account,the auth server has failed.')
deadly_error() deadly_error()
return_data('Checking game version(s).') return_data('Checking game version(s).')
log('info','Checking game version(s).') log('info','Checking game version(s).')
@ -644,9 +700,10 @@ elif(parser.type=="launcher_game"):
asset_index=game_config['assetIndex']['id'] asset_index=game_config['assetIndex']['id']
except: except:
asset_index=game_config['patches'][0]['assetIndex']['id'] asset_index=game_config['patches'][0]['assetIndex']['id']
command='\"' + java.replace('\n','') + '\" -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx' + memory + ' -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Djava.library.path=' + dir_i + '\\versions\\' + parser.version + '\\natives -Dminecraft.launcher.brand=' + config['default_launcher_name'] + ' -Dminecraft.launcher.version=' + config['version'] + ' -cp ' + cp + ' net.minecraft.client.main.Main --username ' + parser.id + ' --version "' + config['default_launcher_name'] + ' ' + config['version'] + '" --gameDir ' + dir_i + ' --assetsDir ' + dir_i + '\\assets --assetIndex ' + asset_index + ' --uuid ' + uuid + ' --accessToken ' + uuid + ' --userProperties {} --userType mojang --versionType "' + config['default_launcher_name'] + ' ' + config['version'] + '"' command='\"' + java.replace('\n','') + '\" -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx' + memory + ' -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Djava.library.path=' + dir_i + '\\versions\\' + parser.version + '\\natives -Dminecraft.launcher.brand=' + config['default_launcher_name'] + ' -Dminecraft.launcher.version=' + config['version'] + ' -cp ' + cp + ' net.minecraft.client.main.Main --username ' + id_i + ' --version "' + config['default_launcher_name'] + ' ' + config['version'] + '" --gameDir ' + dir_i + ' --assetsDir ' + dir_i + '\\assets --assetIndex ' + asset_index + ' --uuid ' + uuid + ' --accessToken ' + access_token + ' --userProperties {} --userType mojang --versionType "' + config['default_launcher_name'] + ' ' + config['version'] + '"'
subprocess.Popen(command, shell=True) subprocess.Popen(command, shell=True)
print(command) open_s=requests.get('https://launch.gmclc.statistics.ghink.net', headers=UA)
#print(command)
else: else:
return_data('The version you input is not exist!Please check if the parameter you input is correct!') return_data('The version you input is not exist!Please check if the parameter you input is correct!')
log('error','The vversion you input is not exist!Please check if the parameter you input is correct!') log('error','The vversion you input is not exist!Please check if the parameter you input is correct!')