Upload via GUI (21 Dateien)

This commit is contained in:
Git Manager GUI
2026-08-01 19:32:20 +02:00
parent afe02f81be
commit 7a6b31fb11
13 changed files with 858 additions and 20 deletions
+22 -2
View File
@@ -198,6 +198,10 @@ async function prepareAssets(vj, sharedDir, onProgress) {
const ai = vj.assetIndex;
if (!ai) return;
const indexFile = path.join(sharedDir, 'assets', 'indexes', ai.id + '.json');
// Merker: einmal vollständig geprüfte Assets nicht erneut durchgehen (spart ~1,5 s pro Start)
const doneMark = path.join(sharedDir, 'assets', 'indexes', ai.id + '.complete');
if (fs.existsSync(doneMark) && fs.existsSync(indexFile)) return;
await downloadIfNeeded(ai.url, indexFile, ai.sha1);
const index = JSON.parse(fs.readFileSync(indexFile, 'utf8'));
const objects = index.objects || {};
@@ -210,6 +214,8 @@ async function prepareAssets(vj, sharedDir, onProgress) {
if (fs.existsSync(dest)) return;
await downloadIfNeeded(`${RESOURCES}/${sub}/${o.hash}`, dest, o.hash);
}, 16, (done, total) => onProgress && onProgress({ phase: 'assets', current: done, total, detail: 'Assets' }));
try { fs.writeFileSync(doneMark, new Date().toISOString()); } catch { /* egal */ }
}
// ---------------------------------------------------------------------------
@@ -347,8 +353,22 @@ async function prepareAndLaunch(opts, onProgress) {
if (opts.loader === 'fabric' || opts.loader === 'quilt') {
emit('loader', { detail: opts.loader + ' vorbereiten …' });
let lp;
try { lp = (await loaders.resolveLoaderProfile(opts.loader, vj.id, opts.loaderVersion)).profile; }
catch (err) { return { ok: false, message: err.message }; }
// Profil zwischenspeichern: spart bei festgelegter Loader-Version die Netzabfrage
const cacheFile = opts.loaderVersion
? path.join(opts.sharedDir, 'loaders', `${opts.loader}-${vj.id}-${opts.loaderVersion}.json`)
: null;
if (cacheFile && fs.existsSync(cacheFile)) {
try { lp = JSON.parse(fs.readFileSync(cacheFile, 'utf8')); } catch { lp = null; }
}
if (!lp) {
try {
const r = await loaders.resolveLoaderProfile(opts.loader, vj.id, opts.loaderVersion);
lp = r.profile;
const target = cacheFile
|| path.join(opts.sharedDir, 'loaders', `${opts.loader}-${vj.id}-${r.loaderVersion}.json`);
try { ensureDir(path.dirname(target)); fs.writeFileSync(target, JSON.stringify(lp)); } catch { /* egal */ }
} catch (err) { return { ok: false, message: err.message }; }
}
const loaderLibs = lp.libraries || [];
let li = 0;
for (const lib of loaderLibs) {