2020-10-23 05:25:17 +00:00
|
|
|
#------------------#
|
|
|
|
import os,requests,json,time,sys,psutil,string,platform,glob,getpass,shutil,hashlib,random,subprocess,math,zipfile
|
|
|
|
#------------------#
|
|
|
|
class GMCLCore(object):
|
|
|
|
def __int__(self,LauncherName="GMCLCore",LauncherVersion="A0.2.0",AuthWay="offline",Account="Steve",Password="",GamePath=".minecraft",Memory="1GB",Version="",Java="",DownloadFrom="",DownloadTo=""):
|
|
|
|
self.__LauncherName=LauncherName
|
|
|
|
self.__LauncherVersion=LauncherVersion
|
|
|
|
self.GetAuthWay(AuthWay)
|
|
|
|
self.GetAccoutn(Account)
|
|
|
|
self.__Password=Password
|
|
|
|
self.__GamePath=GamePath
|
|
|
|
self.GetMemory(Memory)
|
|
|
|
self.__Version=Version
|
|
|
|
self.__Java=Java
|
|
|
|
self.Download(DownloadFrom,DownloadTo)
|
|
|
|
self.__UserAgent={'User-Agent':LauncherName+'/'+LauncherVersion+' ((GMCL Core Alpha 0.2.0;Alpha))'}
|
|
|
|
def GetAuthWay(self,AuthWay):
|
|
|
|
if(AuthWay=="offline"):
|
|
|
|
self.__AuthWay="offline"
|
|
|
|
elif(AuthWay=="online"):
|
|
|
|
self.__AuthWay="online"
|
|
|
|
else:
|
|
|
|
return "Error:Wrong Auth Way."
|
|
|
|
def GetMemory(self,Memory):
|
|
|
|
if(Memory.count("B")>1 or Memory.count("b")>1):
|
2020-10-30 08:04:26 +00:00
|
|
|
return "Error:Wrong Memory Unit
|
2020-10-23 05:25:17 +00:00
|
|
|
else:
|
2020-10-30 08:04:26 +00:00
|
|
|
if(Memory.count("GB")==1):
|
|
|
|
self.__Memory=Memory.replace("GB","")
|
|
|
|
elif(Memory.count("MB")==1):
|
|
|
|
self.__Memory=str(float(Memory.replace("MB",""))/1024)
|
|
|
|
elif(Memory.count("Gb")==1):
|
|
|
|
self.__Memory=str(float(Memory.replace("Gb",""))/8)
|
|
|
|
elif(Memory.count("Mb")==1):
|
|
|
|
self.__Memory=str(float(Memory.replace("Mb",""))/8/1024)
|
|
|
|
else:
|
|
|
|
return "Error:Wrong Memory Unit."
|
|
|
|
def GetAccount(self,Account):
|
|
|
|
if(self.__AuthWay=="online"):
|
|
|
|
if(Account.count("@")==1):
|
|
|
|
self.OnlineAuth(Account,self._Password)
|
|
|
|
else:
|
|
|
|
return "Error:Wrong Account."
|
|
|
|
elif(self.__AuthWay=="offline"):
|
|
|
|
if(Account.count("@")==1):
|
|
|
|
return "Error:Wrong Account."
|
|
|
|
else:
|
|
|
|
self.OfflineAuth(Account)
|
|
|
|
else:
|
|
|
|
pass
|
|
|
|
def GetUUID(self,Account):
|
|
|
|
if(self.__AuthWay=="offline"):
|
|
|
|
result="OfflinePlayer:"+Account
|
|
|
|
md5=hashlib.md5()
|
|
|
|
md5.update(result.encode(encoding='utf-8'))
|
|
|
|
return md5.hexdigest()
|
|
|
|
else:
|
|
|
|
return "Error:Wrong Auth Way."
|
|
|
|
def OnlineAuth(self,Account,Password):
|
|
|
|
if(json.loads(requests.get("https://authserver.mojang.com/",headers=self.__UserAgent).text)['status']=="OK"):
|
|
|
|
result=json.loads(requests.post("https://authserver.mojang.com/authenticate",'{"agent":{"name":"Minecraft","Version":1},"username":"'+Account+'","password":"'+Password+'"}',headers=self.__UserAgent).text)
|
|
|
|
self.__Token=result['accessToken']
|
|
|
|
self.__UUID=result['selectedProfile']['id']
|
|
|
|
self.__ID=result['selectedProfile']['name']
|
|
|
|
else:
|
|
|
|
return "Error:Fail to request Mojang's Auth Server."
|
|
|
|
def OfflineAuth(self,Account):
|
|
|
|
self.__ID=Account
|
|
|
|
self.__UUID=self.GetUUID(Account)
|
|
|
|
self.__Token=""
|
|
|
|
def GetJavaPaht(self):
|
|
|
|
if(platform.system()=="Windows"):
|
|
|
|
path="C:/"
|
|
|
|
elif(platform.system()=="Linux"):
|
|
|
|
path="/"
|
|
|
|
else:
|
|
|
|
path="/"
|
|
|
|
i=0
|
|
|
|
for ipath in os.listdir(Path):
|
|
|
|
FullDir=os.path.join(path,ipath)
|
|
|
|
if(os.path.isfile(FullDir)):
|
|
|
|
if("javaw.exe" in os.path.split(FullDir)[1]):
|
|
|
|
return FullDir
|
|
|
|
i+=1
|
|
|
|
if(i=1):
|
|
|
|
break
|
|
|
|
def Download(self,DownloadFrom,DownloadTo):
|
|
|
|
if(DownloadFrom=="" or DownloadTo==""):
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
|