debug minecraft-launcher.ts

This commit is contained in:
2025-07-20 20:15:09 +05:00
parent fa115e0a6c
commit e018aec8db
2 changed files with 45 additions and 6 deletions

View File

@ -522,6 +522,8 @@ export function initMinecraftHandlers() {
message: 'Поиск Java...', message: 'Поиск Java...',
}); });
console.log('Поиск Java...');
let javaPath; let javaPath;
try { try {
javaPath = await findJava(); javaPath = await findJava();
@ -543,11 +545,15 @@ export function initMinecraftHandlers() {
message: 'Получение списка версий Minecraft...', message: 'Получение списка версий Minecraft...',
}); });
console.log('Получение списка версий Minecraft...');
const versionList = await getVersionList(); const versionList = await getVersionList();
const minecraftVersion = versionList.versions.find( const minecraftVersion = versionList.versions.find(
(v) => v.id === baseVersion, (v) => v.id === baseVersion,
); );
console.log('minecraftVersion:', minecraftVersion);
if (minecraftVersion) { if (minecraftVersion) {
// Устанавливаем базовую версию Minecraft // Устанавливаем базовую версию Minecraft
event.sender.send('installation-status', { event.sender.send('installation-status', {
@ -555,11 +561,15 @@ export function initMinecraftHandlers() {
message: `Установка Minecraft ${baseVersion}...`, message: `Установка Minecraft ${baseVersion}...`,
}); });
console.log('Установка Minecraft...');
try { try {
const installMcTask = installTask(minecraftVersion, minecraftDir, { const installMcTask = installTask(minecraftVersion, minecraftDir, {
skipRevalidate: true, skipRevalidate: true,
}); });
console.log('installMcTask:', installMcTask);
await installMcTask.startAndWait({ await installMcTask.startAndWait({
onStart(task) { onStart(task) {
event.sender.send('installation-status', { event.sender.send('installation-status', {
@ -580,6 +590,7 @@ export function initMinecraftHandlers() {
}); });
}, },
onFailed(task, error) { onFailed(task, error) {
console.log('onFailed:', task, error);
console.warn( console.warn(
`Ошибка при установке ${task.path}, продолжаем:`, `Ошибка при установке ${task.path}, продолжаем:`,
error, error,
@ -597,7 +608,7 @@ export function initMinecraftHandlers() {
}, },
}); });
} catch (error) { } catch (error) {
console.warn('Ошибка при установке Minecraft, продолжаем:', error); console.log('Ошибка при установке Minecraft, продолжаем:', error);
} }
// 2. Устанавливаем Fabric // 2. Устанавливаем Fabric
@ -618,6 +629,12 @@ export function initMinecraftHandlers() {
message: `Установка Fabric ${fabricVersion}...`, message: `Установка Fabric ${fabricVersion}...`,
}); });
console.log('installFabric:', {
minecraftVersion: baseVersion,
fabricVersion: fabricVersion,
minecraftDir: minecraftDir,
});
await installFabric({ await installFabric({
minecraftVersion: baseVersion, minecraftVersion: baseVersion,
version: fabricVersion, // Используйте напрямую, без .version version: fabricVersion, // Используйте напрямую, без .version
@ -625,7 +642,7 @@ export function initMinecraftHandlers() {
}); });
} }
} catch (error) { } catch (error) {
console.warn('Ошибка при установке Fabric, продолжаем:', error); console.log('Ошибка при установке Fabric, продолжаем:', error);
} }
// 3. Подготовка версии и установка зависимостей // 3. Подготовка версии и установка зависимостей
@ -633,11 +650,18 @@ export function initMinecraftHandlers() {
// Используем идентификатор Fabric-версии // Используем идентификатор Fabric-версии
const fabricVersionId = `${baseVersion}-fabric${fabricVersion}`; const fabricVersionId = `${baseVersion}-fabric${fabricVersion}`;
console.log('version-parse:', fabricVersionId);
event.sender.send('installation-status', { event.sender.send('installation-status', {
step: 'version-parse', step: 'version-parse',
message: 'Подготовка версии...', message: 'Подготовка версии...',
}); });
console.log('version-parse:', {
minecraftDir: minecraftDir,
fabricVersionId: fabricVersionId,
});
resolvedVersion = await Version.parse( resolvedVersion = await Version.parse(
minecraftDir, minecraftDir,
fabricVersionId, fabricVersionId,
@ -678,6 +702,7 @@ export function initMinecraftHandlers() {
}); });
}, },
onFailed(task, error) { onFailed(task, error) {
console.log('onFailed:', task, error);
console.warn( console.warn(
`Ошибка при установке ${task.path}, продолжаем:`, `Ошибка при установке ${task.path}, продолжаем:`,
error, error,
@ -695,32 +720,38 @@ export function initMinecraftHandlers() {
}, },
}); });
} catch (error) { } catch (error) {
console.warn( console.log(
'Ошибка при загрузке ресурсов, продолжаем запуск:', 'Ошибка при загрузке ресурсов, продолжаем запуск:',
error, error,
); );
} }
} catch (error) { } catch (error) {
console.warn('Ошибка при подготовке версии, продолжаем:', error); console.log('Ошибка при подготовке версии, продолжаем:', error);
} }
} }
} catch (error) { } catch (error) {
console.warn('Произошла ошибка при подготовке Minecraft:', error); console.log('Произошла ошибка при подготовке Minecraft:', error);
} }
// Загрузка и проверка authlib-injector // Загрузка и проверка authlib-injector
const authlibPath = await ensureAuthlibInjectorExists(appPath); const authlibPath = await ensureAuthlibInjectorExists(appPath);
console.log('authlibPath:', authlibPath);
event.sender.send('installation-status', { event.sender.send('installation-status', {
step: 'authlib-injector', step: 'authlib-injector',
message: 'authlib-injector готов', message: 'authlib-injector готов',
}); });
// Запускаем Minecraft с authlib-injector для Ely.by // Запускаем Minecraft с authlib-injector для Ely.by
console.log('Запуск игры...');
event.sender.send('installation-status', { event.sender.send('installation-status', {
step: 'launch', step: 'launch',
message: 'Запуск игры...', message: 'Запуск игры...',
}); });
console.log('Запуск игры...');
// При запуске используем переданные параметры // При запуске используем переданные параметры
const packDir = path.join(versionsDir, packName); const packDir = path.join(versionsDir, packName);
@ -732,13 +763,14 @@ export function initMinecraftHandlers() {
serverConfig.port = serverPort; serverConfig.port = serverPort;
} }
console.log('packDir:', packDir);
const proc = await launch({ const proc = await launch({
gamePath: packDir, gamePath: packDir,
resourcePath: minecraftDir, resourcePath: minecraftDir,
javaPath, javaPath,
version: versionToLaunch, version: versionToLaunch,
launcherName: 'popa-popa', launcherName: 'popa-popa',
server: serverConfig, // Используем созданный объект конфигурации
extraJVMArgs: [ extraJVMArgs: [
'-Dlog4j2.formatMsgNoLookups=true', '-Dlog4j2.formatMsgNoLookups=true',
`-javaagent:${authlibPath}=${API_BASE_URL}`, `-javaagent:${authlibPath}=${API_BASE_URL}`,
@ -749,6 +781,10 @@ export function initMinecraftHandlers() {
'-Dauthlibinjector.mojangAntiFeatures=disabled', '-Dauthlibinjector.mojangAntiFeatures=disabled',
'-Dcom.mojang.authlib.disableSecureProfileEndpoints=true', '-Dcom.mojang.authlib.disableSecureProfileEndpoints=true',
], ],
extraMCArgs: [
'--quickPlayMultiplayer',
`${serverIp}:${serverPort || 25565}`,
],
// Используем данные аутентификации Yggdrasil // Используем данные аутентификации Yggdrasil
accessToken, accessToken,
gameProfile: { gameProfile: {
@ -765,6 +801,8 @@ export function initMinecraftHandlers() {
console.error(`Minecraft stderr: ${data}`); console.error(`Minecraft stderr: ${data}`);
}); });
console.log('Запуск игры...');
return { success: true, pid: proc.pid }; return { success: true, pid: proc.pid };
} catch (error) { } catch (error) {
console.error('Ошибка при запуске Minecraft:', error); console.error('Ошибка при запуске Minecraft:', error);

View File

@ -34,6 +34,7 @@ export default function SkinViewer({
width, width,
height, height,
skin: skinUrl || undefined, skin: skinUrl || undefined,
model: 'auto-detect',
cape: capeUrl || undefined, cape: capeUrl || undefined,
}); });