1
0
Fork 0

更新README和无法启动的问题

Browse Source
This commit is contained in:
yunyun 2026-06-02 15:55:36 +08:00
parent 231dcf0a4f
commit adddc3c725
2 changed files with 5 additions and 101 deletions

View File

@ -11,12 +11,12 @@
### 从源码构建
```bash
git clone https://git.caellab.com/yunyun/GoodPlanCraftLauncher.git
git clone https://github.com/yunyun-3782/GoodPlanCraftLaunCher.git
```
### 预编译版本
前往 [Releases](https://git.caellab.com/yunyun/GoodPlanCraftLauncher/releases) 下载对可执行文件。
前往 [Releases](https://github.com/yunyun-3782/GoodPlanCraftLaunCher/releases/) 下载可执行文件。
## 使用
@ -42,13 +42,13 @@ npm run build
## 贡献
欢迎提交 [不同意见](https://f.caellab.com/t/problem) 或 [Issue](https://git.caellab.com/yunyun/GoodPlanCraftLauncher/issues) ,同时欢迎开发 衍生 版本。
欢迎提交 [不同意见](https://f.caellab.com/t/problem) ,同时欢迎开发 衍生 版本。
## 许可证
本项目采用 [CaelLab BY-SA Code License](https://www.caellab.com/license/bysa-code) 授权。
具体可查看 [LICENSE](https://git.caellab.com/yunyun/GoodPlanCraftLauncher/src/branch/main/LICENSE) 。
具体可查看 [LICENSE](https://github.com/yunyun-3782/GoodPlanCraftLaunCher/blob/main/LICENSE) 。
---
很高兴能帮助到你祝你在MC中玩的愉快

96
main.js
View File

@ -2546,41 +2546,6 @@ async function detectGameWindow(pid) {
writeLog(`[启动] 开始检测游戏窗口PID: ${pid}`);
return new Promise((resolve) => {
<<<<<<< Updated upstream
// 设置超时最多等待5秒比原来快3秒
const timeout = setTimeout(() => {
writeLog(`[启动] 游戏窗口检测超时,继续启动流程`);
if (mainWindow) {
mainWindow.webContents.send('game-window-created', { pid: pid, timeout: true });
}
resolve();
}, 5000);
// 使用更快速的检测方式
let checkCount = 0;
const maxChecks = 50; // 最多检查50次5秒
let detected = false;
// 首先立即发送一次,不等待检测完成
writeLog(`[启动] 快速发送创建事件(立即检测)`);
setTimeout(() => {
if (!detected) {
detected = true;
if (mainWindow) {
mainWindow.webContents.send('game-window-created', { pid: pid, fast: true });
}
}
}, 1500); // 1.5秒后直接认为启动成功
const checkInterval = setInterval(() => {
checkCount++;
if (detected) {
clearInterval(checkInterval);
clearTimeout(timeout);
resolve();
return;
=======
let resolved = false;
const done = () => {
if (resolved) return;
@ -2603,7 +2568,6 @@ async function detectGameWindow(pid) {
try { detector.kill(); } catch {}
if (mainWindow && !launchCancelFlag) {
mainWindow.webContents.send('game-window-created', { pid, timeout: true });
>>>>>>> Stashed changes
}
done();
}, 8000);
@ -3345,64 +3309,4 @@ function generateLaunchDisplayName(versionId) {
return parts.join(' ');
}
// 安装 Forge
async function installForge(mcVersion, forgeVersionId) {
writeLog(`[Forge] 安装: ${forgeVersionId}`);
const versionDir = path.join(GAME_DIR, 'versions', mcVersion);
if (!fs.existsSync(versionDir)) {
throw new Error(`原版版本 ${mcVersion} 不存在`);
}
// 创建 gpcl 目录
const gpclDir = path.join(versionDir, 'gpcl');
if (!fs.existsSync(gpclDir)) fs.mkdirSync(gpclDir, { recursive: true });
// 读取或创建 config.ini
const configPath = path.join(gpclDir, 'config.ini');
let config = readVersionConfig(mcVersion) || {
Minecraft: mcVersion,
Forge: '',
Fabric: '',
OptiFine: ''
};
config.Minecraft = mcVersion;
config.Forge = forgeVersionId;
// 写入 config.ini
const configContent = `[Version]
Minecraft=${config.Minecraft}
Forge=${config.Forge}
Fabric=${config.Fabric || ''}
OptiFine=${config.OptiFine || ''}
`;
fs.writeFileSync(configPath, configContent, 'utf8');
// 更新 version.json
const jsonPath = path.join(versionDir, `${mcVersion}.json`);
const versionData = JSON.parse(fs.readFileSync(jsonPath, 'utf8'));
versionData.mainClass = 'net.minecraftforge.userdev.LaunchTesting';
versionData.libraries = versionData.libraries || [];
const hasForgeLib = versionData.libraries.some(lib =>
lib.name && lib.name.startsWith('net.minecraftforge:forge:')
);
if (!hasForgeLib) {
versionData.libraries.push({
name: `net.minecraftforge:forge:${forgeVersionId}`,
downloads: {
artifact: {
url: `https://maven.minecraftforge.net/net/minecraftforge/forge/${forgeVersionId}/forge-${forgeVersionId}.jar`,
path: `net/minecraftforge/forge/${forgeVersionId}/forge-${forgeVersionId}.jar`,
sha1: '',
size: 0
}
}
});
}
fs.writeFileSync(jsonPath, JSON.stringify(versionData, null, 2));
writeLog(`[Forge] 安装完成: ${mcVersion} + Forge ${forgeVersionId}`);
return mcVersion;
}