Change requires to an extensible format

It is now a list of objects of the following format:
{
    "uid":"identifier-required",
    "equals":"version-optional"
}
This can easily be expanded, unlike the direct mapping this was before.
This commit is contained in:
Petr Mrázek 2017-11-06 23:21:40 +01:00
parent 2e3061603a
commit 4f4985602c
4 changed files with 11 additions and 8 deletions

View File

@ -49,7 +49,7 @@ def versionFromProfile(profile, version):
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
mcversion = profile.install.minecraft
result.parentUid ='net.minecraft'
result.requires ={'net.minecraft': mcversion}
result.requires = [RequiresEntry(uid='net.minecraft', equals=mcversion)]
result.mainClass = profile.versionInfo.mainClass
args = profile.versionInfo.minecraftArguments
tweakers = []
@ -92,7 +92,7 @@ def versionFromLegacy(version, legacyinfo : ForgeLegacyInfo):
result = MultiMCVersionFile({"name":"Forge", "version":version.rawVersion, "uid":"net.minecraftforge" })
mcversion = version.mcversion_sane
result.parentUid ='net.minecraft'
result.requires ={'net.minecraft': mcversion}
result.requires = [RequiresEntry(uid='net.minecraft', equals=mcversion)]
result.releaseTime = legacyinfo.releaseTime
result.order = 5
if mcversion in fmlLibsMapping:

View File

@ -22,8 +22,7 @@ def processArtefacts(mcVersion, liteloader, notSnapshots):
latestVersion = artefact.version
continue
version = MultiMCVersionFile(name="LiteLoader", uid="com.mumfrey.liteloader", version=artefact.version)
version.requires = {}
version.requires['net.minecraft'] = mcVersion
version.requires = [RequiresEntry(uid='net.minecraft', equals=mcVersion)]
version.releaseTime = datetime.utcfromtimestamp(int(artefact.timestamp))
version.addTweakers = [artefact.tweakClass]
version.mainClass = "net.minecraft.launchwrapper.Launch"

View File

@ -116,9 +116,9 @@ for filename in os.listdir('upstream/mojang/versions'):
versionFile.libraries = libs_minecraft
# TODO: add detection of LWJGL 3?
if is_lwjgl_3:
versionFile.requires = {'org.lwjgl3': '*'}
versionFile.requires = [RequiresEntry(uid='org.lwjgl3')]
else:
versionFile.requires = {'org.lwjgl': '*'}
versionFile.requires = [RequiresEntry(uid='org.lwjgl')]
versionFile.order = -2
# process 1.13 arguments into previous version
if not mojangVersionFile.minecraftArguments and mojangVersionFile.arguments:

View File

@ -221,12 +221,16 @@ class MultiMCLibrary (MojangLibrary):
class VersionedJsonObject(JsonObject):
formatVersion = IntegerProperty(default=CurrentMultiMCFormatVersion, validators=validateSupportedMultiMCVersion)
class RequiresEntry (JsonObject):
uid = StringProperty(required=True)
equals = StringProperty(exclude_if_none=True, default=None)
class MultiMCVersionFile (VersionedJsonObject):
name = StringProperty(required=True)
version = StringProperty(required=True)
uid = StringProperty(required=True)
parentUid = StringProperty(exclude_if_none=True, default=None)
requires = DictProperty(StringProperty, exclude_if_none=True, default=None)
requires = ListProperty(RequiresEntry, exclude_if_none=True, default=None)
assetIndex = ObjectProperty(MojangAssets, exclude_if_none=True, default=None)
libraries = ListProperty(MultiMCLibrary, exclude_if_none=True, default=None)
mainJar = ObjectProperty(MultiMCLibrary, exclude_if_none=True, default=None)
@ -306,7 +310,7 @@ class MultiMCVersionIndexEntry(JsonObject):
version = StringProperty()
type = StringProperty(exclude_if_none=True, default=None)
releaseTime = ISOTimestampProperty()
requires = DictProperty(StringProperty, exclude_if_none=True, default=None)
requires = ListProperty(RequiresEntry, exclude_if_none=True, default=None)
recommended = BooleanProperty(exclude_if_none=True, default=None)
sha256 = StringProperty()