Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add legacy fabric support #9

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 63 additions & 46 deletions generateFabric.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,17 @@
import os, copy

# turn loader versions into packages
loaderRecommended = []
loaderVersions = []
intermediaryRecommended = []
intermediaryVersions = []
loaderRecommended = {}
loaderVersions = {}
intermediaryRecommended = {}
intermediaryVersions = {}
kinds = ["fabricmc","legacy-fabric"]
for i in kinds:
i = i.replace("-", "")
loaderRecommended[i] = []
loaderVersions[i] = []
intermediaryRecommended[i] = []
intermediaryVersions[i] = []

def mkdirs(path):
if not os.path.exists(path):
Expand All @@ -18,18 +25,21 @@ def mkdirs(path):
mkdirs("multimc/net.fabricmc.fabric-loader")
mkdirs("multimc/net.fabricmc.intermediary")

mkdirs("multimc/net.legacyfabric.fabric-loader")
mkdirs("multimc/net.legacyfabric.intermediary")

def loadJarInfo(mavenKey):
with open("upstream/fabric/jars/" + mavenKey.replace(":", ".") + ".json", 'r', encoding='utf-8') as jarInfoFile:
return FabricJarInfo(json.load(jarInfoFile))

def processLoaderVersion(loaderVersion, it, loaderData):
def processLoaderVersion(loaderVersion, it, loaderData, kind):
verStable = it["stable"]
if (len(loaderRecommended) < 1) and verStable:
loaderRecommended.append(loaderVersion)
loaderRecommended[kind].append(loaderVersion)
versionJarInfo = loadJarInfo(it["maven"])
version = MultiMCVersionFile(name="Fabric Loader", uid="net.fabricmc.fabric-loader", version=loaderVersion)
version = MultiMCVersionFile(name="Fabric Loader", uid="net." + kind + ".fabric-loader", version=loaderVersion)
version.releaseTime = versionJarInfo.releaseTime
version.requires = [DependencyEntry(uid='net.fabricmc.intermediary')]
version.requires = [DependencyEntry(uid='net." + kind " .intermediary')]
version.order = 10
version.type = "release"
if isinstance(loaderData.mainClass, dict):
Expand All @@ -39,58 +49,65 @@ def processLoaderVersion(loaderVersion, it, loaderData):
version.libraries = []
version.libraries.extend(loaderData.libraries.common)
version.libraries.extend(loaderData.libraries.client)

if "legacy" in kind:
version.addTraits = ["noapplet"]

loaderLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
version.libraries.append(loaderLib)
loaderVersions.append(version)
loaderVersions[kind].append(version)

def processIntermediaryVersion(it):
intermediaryRecommended.append(it["version"])
def processIntermediaryVersion(it, kind):
intermediaryRecommended[kind].append(it["version"])
versionJarInfo = loadJarInfo(it["maven"])
version = MultiMCVersionFile(name="Intermediary Mappings", uid="net.fabricmc.intermediary", version=it["version"])
version = MultiMCVersionFile(name="Intermediary Mappings", uid="net." + kind + ".intermediary", version=it["version"])
version.releaseTime = versionJarInfo.releaseTime
version.requires = [DependencyEntry(uid='net.minecraft', equals=it["version"])]
version.order = 11
version.type = "release"
version.libraries = []
version.volatile = True
mappingLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven.fabricmc.net")
mappingLib = MultiMCLibrary(name=GradleSpecifier(it["maven"]), url="https://maven." + kind + ".net")
version.libraries.append(mappingLib)
intermediaryVersions.append(version)
intermediaryVersions[kind].append(version)

with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
loaderVersionIndex = json.load(loaderVersionIndexFile)
for it in loaderVersionIndex:
version = it["version"]
with open("upstream/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile:
ldata = json.load(loaderVersionFile)
ldata = FabricInstallerDataV1(ldata)
processLoaderVersion(version, it, ldata)
for i in kinds:
j = i.replace("mc","")
i = i.replace("-","")
with open("upstream/" + j + "/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
loaderVersionIndex = json.load(loaderVersionIndexFile)
for it in loaderVersionIndex:
version = it["version"]
with open("upstream/fabric/loader-installer-json/" + version + ".json", 'r', encoding='utf-8') as loaderVersionFile:
ldata = json.load(loaderVersionFile)
ldata = FabricInstallerDataV1(ldata)
processLoaderVersion(version, it, ldata, i)

with open("upstream/fabric/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile:
intermediaryVersionIndex = json.load(intermediaryVersionIndexFile)
for it in intermediaryVersionIndex:
processIntermediaryVersion(it)
with open("upstream/" + j + "/meta-v2/intermediary.json", 'r', encoding='utf-8') as intermediaryVersionIndexFile:
intermediaryVersionIndex = json.load(intermediaryVersionIndexFile)
for it in intermediaryVersionIndex:
processIntermediaryVersion(it, i)

for version in loaderVersions:
outFilepath = "multimc/net.fabricmc.fabric-loader/%s.json" % version.version
with open(outFilepath, 'w') as outfile:
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)
for version in loaderVersions[i]:
outFilepath = "multimc/net." + i + ".fabric-loader/%s.json" % version.version
with open(outFilepath, 'w') as outfile:
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)

sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader')
sharedData.recommended = loaderRecommended
sharedData.description = "Fabric Loader is a tool to load Fabric-compatible mods in game environments."
sharedData.projectUrl = "https://fabricmc.net"
sharedData.authors = ["Fabric Developers"]
sharedData.write()
sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.fabric-loader', name = 'Fabric Loader')
sharedData.recommended = loaderRecommended
sharedData.description = "Fabric Loader is a tool to load Fabric-compatible mods in game environments."
sharedData.projectUrl = "https://fabricmc.net"
sharedData.authors = ["Fabric Developers"]
sharedData.write()

for version in intermediaryVersions:
outFilepath = "multimc/net.fabricmc.intermediary/%s.json" % version.version
with open(outFilepath, 'w') as outfile:
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)
for version in intermediaryVersions:
outFilepath = "multimc/net." + i + ".intermediary/%s.json" % version.version
with open(outFilepath, 'w') as outfile:
json.dump(version.to_json(), outfile, sort_keys=True, indent=4)

sharedData = MultiMCSharedPackageData(uid = 'net.fabricmc.intermediary', name = 'Intermediary Mappings')
sharedData.recommended = intermediaryRecommended
sharedData.description = "Intermediary mappings allow using Fabric Loader with mods for Minecraft in a more compatible manner."
sharedData.projectUrl = "https://fabricmc.net"
sharedData.authors = ["Fabric Developers"]
sharedData.write()
sharedData = MultiMCSharedPackageData(uid = 'net.' + i + '.intermediary', name = 'Intermediary Mappings')
sharedData.recommended = intermediaryRecommended
sharedData.description = "Intermediary mappings allow using Fabric Loader with mods for Minecraft in a more compatible manner."
sharedData.projectUrl = "https://" + i + ".net"
sharedData.authors = ["Fabric Developers"]
sharedData.write()
22 changes: 13 additions & 9 deletions updateFabric.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,21 @@ def compute_jar_file(path, url):
with open(path + ".json", 'w') as outfile:
json.dump(data.to_json(), outfile, sort_keys=True, indent=4)

mkdirs("upstream/fabric/meta-v2")
mkdirs("upstream/fabric/loader-installer-json")
mkdirs("upstream/fabric/jars")
for kind in ["fabricmc", "legacy-fabric"]:
i = kind.replace("mc", "")
j = kind.replace("-", "")

mkdirs("upstream/" + i + "/meta-v2")
mkdirs("upstream/" + i + "/jars")

# get the version list for each component we are interested in
for component in ["intermediary", "loader"]:
index = get_json_file("upstream/fabric/meta-v2/" + component + ".json", "https://meta.fabricmc.net/v2/versions/" + component)
for it in index:
jarMavenUrl = get_maven_url(it["maven"], "https://maven.fabricmc.net/", ".jar")
compute_jar_file("upstream/fabric/jars/" + it["maven"].replace(":", "."), jarMavenUrl)
# get the version list for each component we are interested in
for component in ["intermediary", "loader"]:
index = get_json_file("upstream/" + i + "/meta-v2/" + component + ".json", "https://meta." + j + ".net/v2/versions/" + component)
for it in index:
jarMavenUrl = get_maven_url(it["maven"], "https://maven." + j + ".net/", ".jar")
compute_jar_file("upstream/" + i + "/jars/" + it["maven"].replace(":", "."), jarMavenUrl)

mkdirs("upstream/fabric/loader-installer-json")
# for each loader, download installer JSON file from maven
with open("upstream/fabric/meta-v2/loader.json", 'r', encoding='utf-8') as loaderVersionIndexFile:
loaderVersionIndex = json.load(loaderVersionIndexFile)
Expand Down