Implemented JVM arguments and rules
This commit is contained in:
parent
1b27f8efca
commit
c0ac09389f
@ -124,6 +124,8 @@ def checkRules(ruleList):
|
||||
if "arch" in rule["os"]:
|
||||
if lv["jvmArch"] != rule["os"]["arch"]: continue
|
||||
|
||||
if "version" in rule["os"]: continue
|
||||
|
||||
action = rule["action"]
|
||||
|
||||
return action
|
||||
@ -133,9 +135,10 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
|
||||
clientJson = readJsonFile(p(versionPath,version + ".json"))
|
||||
libraries = []
|
||||
arguments = []
|
||||
jvmArguments = []
|
||||
|
||||
if "inheritsFrom" in clientJson:
|
||||
_,libraries,arguments = processVersion(versionsPath,libraryPath,nativePath,clientJson["inheritsFrom"])
|
||||
_,libraries,arguments,jvmArguments = processVersion(versionsPath,libraryPath,nativePath,clientJson["inheritsFrom"])
|
||||
|
||||
for library in clientJson["libraries"]:
|
||||
l = {}
|
||||
@ -160,6 +163,7 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
|
||||
l["filePathOS"] = p(nativePath,native["path"].replace("/",os.path.sep))
|
||||
if "url" in native and native["url"] != "":
|
||||
l["url"] = native["url"]
|
||||
libraries.append(l)
|
||||
|
||||
native = False
|
||||
if "natives-" +lv["osName"] in library["downloads"]["classifiers"]:
|
||||
@ -181,16 +185,33 @@ def processVersion(versionsPath,libraryPath,nativePath,version):
|
||||
libraries.append({"type":"client","filePathOS":p(versionPath,version + ".jar")})
|
||||
|
||||
if "arguments" in clientJson:
|
||||
for arg in clientJson["arguments"]["game"]:
|
||||
if type(arg) != str: continue
|
||||
arguments.append(arg)
|
||||
if "game" in clientJson["arguments"]:
|
||||
for arg in clientJson["arguments"]["game"]:
|
||||
if type(arg) != str: continue
|
||||
arguments.append(arg)
|
||||
if "jvm" in clientJson["arguments"]:
|
||||
for arg in clientJson["arguments"]["jvm"]:
|
||||
if type(arg) != str:
|
||||
if "value" in arg:
|
||||
if type(arg["value"]) != list:
|
||||
arg["value"] = [arg["value"]]
|
||||
|
||||
if "rules" in arg:
|
||||
if checkRules(arg["rules"]) == "allow":
|
||||
for value in arg["value"]:
|
||||
jvmArguments.append(value)
|
||||
else:
|
||||
for value in arg["value"]:
|
||||
jvmArguments.append(value)
|
||||
else:
|
||||
jvmArguments.append(arg)
|
||||
elif "minecraftArguments" in clientJson:
|
||||
margs = clientJson["minecraftArguments"].replace('"',"").split(" ")
|
||||
for arg in margs:
|
||||
if type(arg) != str: continue
|
||||
arguments.append(arg)
|
||||
|
||||
return clientJson,libraries,arguments
|
||||
return clientJson,libraries,arguments,jvmArguments
|
||||
|
||||
def main():
|
||||
print("Reading config...")
|
||||
@ -242,7 +263,7 @@ def main():
|
||||
versionsPath = p(lv["gamePath"],"versions")
|
||||
libraryPath = p(lv["gamePath"],"libraries")
|
||||
nativePath = p(lv["gamePath"],"natives")
|
||||
clientJson,libraries,arguments = processVersion(versionsPath,libraryPath,nativePath,lv["version"])
|
||||
clientJson,libraries,arguments,jvmArguments = processVersion(versionsPath,libraryPath,nativePath,lv["version"])
|
||||
|
||||
versionPath = p(lv["gamePath"],"versions",lv["version"])
|
||||
nativesOutPath = p(versionPath,"natives-" +lv["osName"]+ "." +lv["jvmArch"])
|
||||
@ -294,15 +315,36 @@ def main():
|
||||
launcherVariables["auth_uuid"] = hashlib.md5(lv["name"].encode('utf-8')).hexdigest()
|
||||
launcherVariables["user_type"] = "offline"
|
||||
launcherVariables["version_type"] = clientJson["type"]
|
||||
launcherVariables["natives_directory"] = nativesOutPath
|
||||
launcherVariables["launcher_name"] = "offline-minecraft-launcher"
|
||||
launcherVariables["launcher_version"] = "0.0"
|
||||
launcherVariables["classpath"] = libraryList
|
||||
|
||||
# legacy:
|
||||
launcherVariables["game_assets"] = assetsPath
|
||||
launcherVariables["auth_session"] = "-"
|
||||
|
||||
args = json.loads(lv["jvmArguments"])
|
||||
args.append("-Djava.library.path=" +nativesOutPath)
|
||||
args.append("-cp")
|
||||
args.append(libraryList)
|
||||
# JVM arguments:
|
||||
args = []
|
||||
|
||||
djavaFound = False
|
||||
cpFound = False
|
||||
for arg in jvmArguments:
|
||||
if arg.startswith("-Djava-library.path="): djavaFound = True
|
||||
if arg == "-cp": cpFound = True
|
||||
|
||||
if djavaFound == False:
|
||||
args.append("-Djava.library.path=" +nativesOutPath)
|
||||
|
||||
if cpFound == False:
|
||||
args.append("-cp")
|
||||
args.append(libraryList)
|
||||
|
||||
for arg in jvmArguments:
|
||||
for var in launcherVariables:
|
||||
arg = arg.replace("${" +var+ "}",launcherVariables[var])
|
||||
args.append(arg)
|
||||
args = args + json.loads(lv["jvmArguments"])
|
||||
args.append(clientJson["mainClass"])
|
||||
|
||||
for arg in arguments:
|
||||
|
Loading…
Reference in New Issue
Block a user