installer: multi-role host/participant split + auto-platform + EULA + port UX
step2: - 멀티 선택 시 호스트 / 참가자 sub-choice 추가. 호스트 는 기존 멀티 흐름 그대로, 참가자 는 step3 (서버 설치) 를 건너뛰고 step4 client install 만 진행. step4 client install: - 플랫폼 설치/생략 선택 화면(sub41) 제거. 음악퀴즈 platform.type 이 vanilla 가 아니면 무조건 자동 설치, vanilla 면 자동 건너뜀. 사용자 결정 없음. - 참가자 모드에서는 ClientInstallPayload.skipMap=true 로 보내 client 측 saves/ 에 맵을 풀지 않는다 (서버에 이미 있음). - types.ts 에 skipMap 필드 추가. main.ts client:install 핸들러에서 분기. step3 EULA modal: - eula.txt 의 내용과 무관하게 항상 minecraft.net 의 공식 서버 EULA 페이지를 받아 iframe 에 표시. readEula() 분기 제거. step3 포트포워딩 결과: - 성공(preForwarded/upnpOk) 시 "친구는 <address> 주소로 서버에 접속할 수 있습니다" 처럼 외부 주소를 강조해 표시. - 포트가 25565 면 :포트 를 생략하고 ip 만 보여줌 (마인크래프트 자바판 기본 포트라 클라이언트에서도 생략 가능). step5: - 서버 마무리 액션 (바로가기/서버 실행 토글) 은 호스트 만 노출. 참가자는 서버를 띄우지 않으므로 런처 토글만 보인다. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1047,7 +1047,11 @@ ipcMain.handle('client:install', async (_event, payload: ClientInstallPayload) =
|
||||
await downloadModsFolder(pack.pack, customRoot)
|
||||
await downloadResourcepackZip(pack.pack, customRoot)
|
||||
|
||||
await downloadMapZip(pack.pack, customRoot)
|
||||
if (payload.skipMap) {
|
||||
sendLog(t('log.skipMapZip'))
|
||||
} else {
|
||||
await downloadMapZip(pack.pack, customRoot)
|
||||
}
|
||||
|
||||
// 런처가 .mc_custom 을 gameDir 로 잡아도 assets/libraries/versions 를
|
||||
// 찾을 수 있도록 .minecraft 의 해당 폴더로 junction 링크.
|
||||
|
||||
@@ -25,6 +25,8 @@ export interface ServerInstallPayload {
|
||||
export interface ClientInstallPayload {
|
||||
packKey: string
|
||||
installPlatform: boolean
|
||||
/** true 면 client 측 saves/ 에 맵을 풀지 않는다 (참가자 모드). */
|
||||
skipMap?: boolean
|
||||
}
|
||||
|
||||
export interface RamCheckResult {
|
||||
|
||||
Reference in New Issue
Block a user