working Mods Cat
This commit is contained in:
@@ -43,6 +43,7 @@ from .zips import (
|
||||
read_pack_mcmeta,
|
||||
read_plugins_manifest,
|
||||
read_skins_manifest,
|
||||
read_mod_version_manifest,
|
||||
)
|
||||
|
||||
|
||||
@@ -335,6 +336,7 @@ def project_detail(request, slug):
|
||||
mods_manifest = None
|
||||
plugins_manifest = None
|
||||
skins_manifest = None
|
||||
mod_manifest = None
|
||||
anim_stats = None
|
||||
latest = versions.first()
|
||||
if project.category == 'guide' and latest is not None:
|
||||
@@ -346,6 +348,7 @@ def project_detail(request, slug):
|
||||
mods_manifest = latest.mods_manifest or None
|
||||
plugins_manifest = latest.plugins_manifest or None
|
||||
skins_manifest = latest.skins_manifest or None
|
||||
mod_manifest = latest.mod_manifest or None
|
||||
if animation_manifest:
|
||||
anims = animation_manifest.get('animations') or []
|
||||
entity_count = sum(1 for a in anims if a.get('type') == 'Entity x Player')
|
||||
@@ -359,6 +362,16 @@ def project_detail(request, slug):
|
||||
'tags': sorted({t for a in anims for t in (a.get('content_tags') or [])}),
|
||||
}
|
||||
|
||||
mod_loaders = []
|
||||
mod_count = 0
|
||||
if mod_manifest:
|
||||
mods = mod_manifest.get('mods') or []
|
||||
mod_count = len(mods)
|
||||
for m in mods:
|
||||
loader = m.get('modloader')
|
||||
if loader and loader not in mod_loaders:
|
||||
mod_loaders.append(loader)
|
||||
|
||||
autoload_plugins_json = ''
|
||||
if plugins_manifest:
|
||||
members = [
|
||||
@@ -380,6 +393,9 @@ def project_detail(request, slug):
|
||||
'mods_manifest': mods_manifest,
|
||||
'plugins_manifest': plugins_manifest,
|
||||
'skins_manifest': skins_manifest,
|
||||
'mod_manifest': mod_manifest,
|
||||
'mod_loaders': mod_loaders,
|
||||
'mod_count': mod_count,
|
||||
'autoload_plugins_json': autoload_plugins_json,
|
||||
'anim_stats': anim_stats,
|
||||
}
|
||||
@@ -657,6 +673,15 @@ def _reparse_version(version):
|
||||
version.logical_manifest = read_logical_manifest(path) or {}
|
||||
version.plugins_manifest = read_plugins_manifest(path) or {} if version.project.category == 'model' else {}
|
||||
version.skins_manifest = read_skins_manifest(path) or {} if version.project.category == 'skin' else {}
|
||||
if version.project.category == 'mod':
|
||||
entries = [
|
||||
(vf.filename, _stored_path(vf.file))
|
||||
for vf in version.files.select_related('file').all()
|
||||
if vf.filename.lower().endswith(('.jar', '.zip'))
|
||||
]
|
||||
version.mod_manifest = read_mod_version_manifest(entries)
|
||||
else:
|
||||
version.mod_manifest = {}
|
||||
manifest = parse_mods_manifest(path, release.file.original_filename)
|
||||
version.mods_manifest = manifest if manifest.get('files') else {}
|
||||
fmt, desc = read_pack_mcmeta(path)
|
||||
@@ -680,6 +705,7 @@ def _finalize_version(project, version_name, changelog, temp_uploads, actor):
|
||||
mods_manifest = {}
|
||||
plugins_manifest = None
|
||||
skins_manifest = None
|
||||
mod_file_entries = []
|
||||
animation_id = ''
|
||||
animation_manifest = None
|
||||
models_manifest = None
|
||||
@@ -696,7 +722,12 @@ def _finalize_version(project, version_name, changelog, temp_uploads, actor):
|
||||
temp.status = 'used'
|
||||
temp.save(update_fields=['status'])
|
||||
|
||||
is_archive = (index.original_filename or '').lower().endswith(('.zip', '.mrpack'))
|
||||
if project.category == 'mod':
|
||||
mod_name = (index.original_filename or '').lower()
|
||||
if mod_name.endswith(('.jar', '.zip')):
|
||||
mod_file_entries.append((index.original_filename, _stored_path(index)))
|
||||
|
||||
is_archive = (index.original_filename or '').lower().endswith(('.zip', '.mrpack', '.jar'))
|
||||
if not is_archive:
|
||||
continue
|
||||
path = _stored_path(index)
|
||||
@@ -741,6 +772,9 @@ def _finalize_version(project, version_name, changelog, temp_uploads, actor):
|
||||
if skins_manifest is not None:
|
||||
version.skins_manifest = skins_manifest
|
||||
update_fields.append('skins_manifest')
|
||||
if project.category == 'mod' and mod_file_entries:
|
||||
version.mod_manifest = read_mod_version_manifest(mod_file_entries)
|
||||
update_fields.append('mod_manifest')
|
||||
if animation_id:
|
||||
version.animation_id = animation_id
|
||||
update_fields.append('animation_id')
|
||||
|
||||
Reference in New Issue
Block a user