feat: improved launch settings
This commit is contained in:
@ -477,7 +477,7 @@ export function initMinecraftHandlers() {
|
||||
accessToken,
|
||||
uuid,
|
||||
username,
|
||||
memory = 2048,
|
||||
memory = 4096,
|
||||
baseVersion = '1.21.4',
|
||||
fabricVersion = 'fabric0.16.14',
|
||||
packName = 'Comfort', // Название основной сборки
|
||||
@ -761,6 +761,47 @@ export function initMinecraftHandlers() {
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
|
||||
// Добавьте в функцию initMinecraftHandlers или создайте новую
|
||||
ipcMain.handle('get-pack-files', async (event, packName) => {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
const packDir = path.join(minecraftDir, 'versions', packName);
|
||||
|
||||
if (!fs.existsSync(packDir)) {
|
||||
return { success: false, error: 'Директория сборки не найдена' };
|
||||
}
|
||||
|
||||
// Функция для рекурсивного обхода директории
|
||||
const scanDir: any = (dir: any, basePath: any = '') => {
|
||||
const result = [];
|
||||
const items = fs.readdirSync(dir);
|
||||
|
||||
for (const item of items) {
|
||||
const itemPath = path.join(dir, item);
|
||||
const relativePath = basePath ? path.join(basePath, item) : item;
|
||||
const isDirectory = fs.statSync(itemPath).isDirectory();
|
||||
|
||||
result.push({
|
||||
name: item,
|
||||
path: relativePath,
|
||||
isDirectory,
|
||||
// Если это директория, рекурсивно сканируем ее
|
||||
children: isDirectory ? scanDir(itemPath, relativePath) : [],
|
||||
});
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
const files = scanDir(packDir);
|
||||
return { success: true, files };
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении файлов сборки:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Добавляем обработчики IPC для аутентификации
|
||||
@ -855,3 +896,84 @@ export function initServerStatusHandler() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Функция для работы с конфигурацией сборки
|
||||
export function initPackConfigHandlers() {
|
||||
// Файл конфигурации
|
||||
const CONFIG_FILENAME = 'popa-launcher-config.json';
|
||||
|
||||
// Обработчик для сохранения настроек сборки
|
||||
ipcMain.handle('save-pack-config', async (event, { packName, config }) => {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
const packDir = path.join(minecraftDir, 'versions', packName);
|
||||
|
||||
// Создаем папку для сборки, если она не существует
|
||||
if (!fs.existsSync(packDir)) {
|
||||
fs.mkdirSync(packDir, { recursive: true });
|
||||
}
|
||||
|
||||
const configPath = path.join(packDir, CONFIG_FILENAME);
|
||||
|
||||
// Сохраняем конфигурацию в файл
|
||||
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
||||
|
||||
// Добавляем файл конфигурации в список файлов, которые не удаляются
|
||||
if (!config.preserveFiles.includes(CONFIG_FILENAME)) {
|
||||
config.preserveFiles.push(CONFIG_FILENAME);
|
||||
// Перезаписываем файл с обновленным списком
|
||||
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
||||
}
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error('Ошибка при сохранении настроек сборки:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
});
|
||||
|
||||
// Обработчик для загрузки настроек сборки
|
||||
ipcMain.handle('load-pack-config', async (event, { packName }) => {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
const packDir = path.join(minecraftDir, 'versions', packName);
|
||||
const configPath = path.join(packDir, CONFIG_FILENAME);
|
||||
|
||||
// Проверяем существование файла конфигурации
|
||||
if (!fs.existsSync(configPath)) {
|
||||
// Если файла нет, возвращаем дефолтную конфигурацию
|
||||
return {
|
||||
success: true,
|
||||
config: {
|
||||
memory: 4096,
|
||||
preserveFiles: [CONFIG_FILENAME], // По умолчанию сохраняем файл конфигурации
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// Читаем и парсим конфигурацию
|
||||
const configData = fs.readFileSync(configPath, 'utf8');
|
||||
const config = JSON.parse(configData);
|
||||
|
||||
// Добавляем файл конфигурации в список сохраняемых файлов, если его там нет
|
||||
if (!config.preserveFiles.includes(CONFIG_FILENAME)) {
|
||||
config.preserveFiles.push(CONFIG_FILENAME);
|
||||
}
|
||||
|
||||
return { success: true, config };
|
||||
} catch (error) {
|
||||
console.error('Ошибка при загрузке настроек сборки:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message,
|
||||
// Возвращаем дефолтную конфигурацию при ошибке
|
||||
config: {
|
||||
memory: 4096,
|
||||
preserveFiles: [CONFIG_FILENAME],
|
||||
},
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user