add: VersionExplorer, don't work first run Minecraft
This commit is contained in:
@ -804,6 +804,53 @@ export function initMinecraftHandlers() {
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
|
||||
// Добавьте в функцию initMinecraftHandlers новый обработчик
|
||||
ipcMain.handle('get-available-versions', async (event) => {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
const versionsDir = path.join(minecraftDir, 'versions');
|
||||
|
||||
if (!fs.existsSync(versionsDir)) {
|
||||
return { success: true, versions: [] };
|
||||
}
|
||||
|
||||
const items = fs.readdirSync(versionsDir);
|
||||
const versions = [];
|
||||
|
||||
for (const item of items) {
|
||||
const versionPath = path.join(versionsDir, item);
|
||||
if (fs.statSync(versionPath).isDirectory()) {
|
||||
// Проверяем, есть ли конфигурация для пакета
|
||||
const versionJsonPath = path.join(versionPath, `${item}.json`);
|
||||
let versionInfo = {
|
||||
id: item,
|
||||
name: item,
|
||||
version: item,
|
||||
};
|
||||
|
||||
if (fs.existsSync(versionJsonPath)) {
|
||||
try {
|
||||
const versionData = JSON.parse(
|
||||
fs.readFileSync(versionJsonPath, 'utf8'),
|
||||
);
|
||||
versionInfo.version = versionData.id || item;
|
||||
} catch (error) {
|
||||
console.warn(`Ошибка при чтении файла версии ${item}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
versions.push(versionInfo);
|
||||
}
|
||||
}
|
||||
|
||||
return { success: true, versions };
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении доступных версий:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Добавляем обработчики IPC для аутентификации
|
||||
@ -979,3 +1026,57 @@ export function initPackConfigHandlers() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Добавляем после обработчика get-available-versions
|
||||
ipcMain.handle('get-version-config', async (event, { versionId }) => {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
const versionsDir = path.join(minecraftDir, 'versions');
|
||||
const versionPath = path.join(versionsDir, versionId);
|
||||
|
||||
// Проверяем существование директории версии
|
||||
if (!fs.existsSync(versionPath)) {
|
||||
return { success: false, error: `Версия ${versionId} не найдена` };
|
||||
}
|
||||
|
||||
// Проверяем конфигурационный файл версии
|
||||
const configPath = path.join(versionPath, 'popa-launcher-config.json');
|
||||
|
||||
// Определяем базовые настройки по умолчанию
|
||||
let config = {
|
||||
downloadUrl: '',
|
||||
apiReleaseUrl: '',
|
||||
versionFileName: `${versionId}_version.txt`,
|
||||
packName: versionId,
|
||||
memory: 4096,
|
||||
baseVersion: '1.21.4',
|
||||
serverIp: 'popa-popa.ru',
|
||||
fabricVersion: '0.16.14',
|
||||
preserveFiles: ['popa-launcher-config.json'],
|
||||
};
|
||||
|
||||
// Если это Comfort, используем настройки по умолчанию
|
||||
if (versionId === 'Comfort') {
|
||||
config.downloadUrl =
|
||||
'https://github.com/DIKER0K/Comfort/releases/latest/download/Comfort.zip';
|
||||
config.apiReleaseUrl =
|
||||
'https://api.github.com/repos/DIKER0K/Comfort/releases/latest';
|
||||
}
|
||||
|
||||
// Если есть конфигурационный файл, загружаем из него
|
||||
if (fs.existsSync(configPath)) {
|
||||
try {
|
||||
const savedConfig = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
||||
config = { ...config, ...savedConfig };
|
||||
} catch (error) {
|
||||
console.warn(`Ошибка чтения конфигурации ${versionId}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
return { success: true, config };
|
||||
} catch (error) {
|
||||
console.error('Ошибка получения настроек версии:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user