Upload via GUI (21 Dateien)
This commit is contained in:
+70
-1
@@ -18,6 +18,8 @@ const forge = require('./forge');
|
||||
const auth = require('./auth');
|
||||
const updater = require('./updater');
|
||||
const icons = require('./icons');
|
||||
const bedrock = require('./bedrock');
|
||||
const mmcimport = require('./mmcimport');
|
||||
|
||||
// undici als globales fetch verwenden -> ermöglicht Proxy via setGlobalDispatcher
|
||||
const undici = require('undici');
|
||||
@@ -101,6 +103,7 @@ function createWindow() {
|
||||
|
||||
app.whenReady().then(() => {
|
||||
store.init(app.getPath('userData'));
|
||||
services.setCacheDir(app.getPath('userData')); // Java-Suche zwischenspeichern
|
||||
// Konten verschlüsselt speichern (Windows-DPAPI, an das Benutzerkonto gebunden)
|
||||
auth.init(app.getPath('userData'), {
|
||||
available: () => { try { return safeStorage.isEncryptionAvailable(); } catch { return false; } },
|
||||
@@ -110,6 +113,9 @@ app.whenReady().then(() => {
|
||||
applyProxy(store.getSettings());
|
||||
createWindow();
|
||||
|
||||
// Java-Suche im Hintergrund vorbereiten -> erster Spielstart ohne Verzögerung
|
||||
setTimeout(() => { try { services.scanJava(); } catch { /* egal */ } }, 800);
|
||||
|
||||
// echte Minecraft-Icons einmalig aus den eigenen Spieldateien holen
|
||||
setTimeout(() => {
|
||||
try {
|
||||
@@ -178,7 +184,7 @@ ipcMain.handle('settings:instancesDir', () => store.getInstancesDir());
|
||||
ipcMain.handle('java:detect', (_e, javaPath) => detectJava(javaPath));
|
||||
|
||||
// automatische Java-Suche über das System
|
||||
ipcMain.handle('java:scan', () => services.scanJava());
|
||||
ipcMain.handle('java:scan', () => services.scanJava(false)); // Knopf sucht immer frisch
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// IPC – Minecraft-Versionen (Mojang)
|
||||
@@ -629,6 +635,69 @@ ipcMain.handle('app:openExternal', (_e, url) => {
|
||||
return true;
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// IPC – Instanzen aus MultiMC/Prism übernehmen
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
ipcMain.handle('mmc:pickFolder', async () => {
|
||||
const res = await dialog.showOpenDialog(mainWindow, {
|
||||
title: 'MultiMC-Ordner wählen (der Ordner mit MultiMC.exe)',
|
||||
properties: ['openDirectory'],
|
||||
});
|
||||
return res.canceled ? null : res.filePaths[0];
|
||||
});
|
||||
|
||||
ipcMain.handle('mmc:scan', (_e, folder) => {
|
||||
try { return mmcimport.scan(folder); }
|
||||
catch (err) { return { ok: false, reason: err.message }; }
|
||||
});
|
||||
|
||||
ipcMain.handle('mmc:import', (_e, entries, copyData) => {
|
||||
const done = [];
|
||||
const failed = [];
|
||||
for (const entry of entries || []) {
|
||||
try { done.push(mmcimport.importOne(store, entry, copyData !== false)); }
|
||||
catch (err) { failed.push({ name: entry.name, message: err.message }); }
|
||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||
mainWindow.webContents.send('mmc:progress', { current: done.length + failed.length, total: entries.length });
|
||||
}
|
||||
}
|
||||
return { ok: true, imported: done, failed };
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// IPC – Minecraft Bedrock (Windows-Store-App)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
ipcMain.handle('bedrock:detect', () => bedrock.detect());
|
||||
ipcMain.handle('bedrock:launch', () => bedrock.launch());
|
||||
ipcMain.handle('bedrock:worlds', () => bedrock.listWorlds());
|
||||
ipcMain.handle('bedrock:list', (_e, kind) => bedrock.listFolder(kind));
|
||||
ipcMain.handle('bedrock:remove', (_e, kind, name) => bedrock.removeEntry(kind, name));
|
||||
|
||||
ipcMain.handle('bedrock:openFolder', (_e, kind) => {
|
||||
const p = bedrock.folderPath(kind);
|
||||
if (p) { fs.mkdirSync(p, { recursive: true }); shell.openPath(p); }
|
||||
return true;
|
||||
});
|
||||
|
||||
ipcMain.handle('bedrock:installAddon', async () => {
|
||||
const res = await dialog.showOpenDialog(mainWindow, {
|
||||
title: 'Add-on oder Welt importieren',
|
||||
properties: ['openFile'],
|
||||
filters: [{ name: 'Bedrock-Pakete', extensions: ['mcpack', 'mcaddon', 'mcworld', 'mctemplate'] }],
|
||||
});
|
||||
if (res.canceled) return { ok: false, canceled: true };
|
||||
return bedrock.installAddon(res.filePaths[0]);
|
||||
});
|
||||
|
||||
// Weltordner im Explorer zeigen
|
||||
ipcMain.handle('bedrock:openWorld', (_e, dir) => {
|
||||
const base = bedrock.folderPath('worlds');
|
||||
if (base && dir && dir.startsWith(base) && fs.existsSync(dir)) shell.openPath(dir);
|
||||
return true;
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// IPC – echte Minecraft-Icons (aus den eigenen Spieldateien)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user