Upload via GUI (21 Dateien)
This commit is contained in:
+22
-2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user