Refactor launcher profiles and port automation
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
<div class="brandBlock">
|
||||
<span class="eyebrow">Launcher Admin</span>
|
||||
<h1>프로필 관리</h1>
|
||||
<p>설치 페이지에 표시할 실제 프로필을 UI로 관리합니다.</p>
|
||||
<p>설치 페이지에 표시할 실제 프로필을 조합형 UI로 관리합니다.</p>
|
||||
</div>
|
||||
|
||||
<div class="metaPanel">
|
||||
@@ -27,9 +27,7 @@
|
||||
</div>
|
||||
|
||||
<div class="addButtons">
|
||||
<button type="button" class="primaryAction" data-add-kind="modpack">모드팩 추가</button>
|
||||
<button type="button" class="secondaryAction" data-add-kind="map">맵 추가</button>
|
||||
<button type="button" class="secondaryAction" data-add-kind="server-pack">서버팩 추가</button>
|
||||
<button type="button" class="primaryAction" id="addProfileButton">프로필 추가</button>
|
||||
</div>
|
||||
|
||||
<div class="profileListHeader">
|
||||
@@ -57,7 +55,7 @@
|
||||
|
||||
<div id="emptyState" class="emptyState">
|
||||
<h3>프로필이 없습니다</h3>
|
||||
<p>왼쪽 버튼으로 새 모드팩, 맵, 서버팩 프로필을 추가하세요.</p>
|
||||
<p>왼쪽 버튼으로 새 프로필을 추가하세요. 맵은 기본이고, 모드/플러그인/서버는 체크해서 조합합니다.</p>
|
||||
</div>
|
||||
|
||||
<form id="profileEditorForm" class="editorForm" hidden>
|
||||
@@ -70,14 +68,6 @@
|
||||
<span>프로필 ID</span>
|
||||
<input id="field-id" type="text" autocomplete="off">
|
||||
</label>
|
||||
<label class="fieldBlock">
|
||||
<span>종류</span>
|
||||
<select id="field-kind">
|
||||
<option value="modpack">modpack</option>
|
||||
<option value="map">map</option>
|
||||
<option value="server-pack">server-pack</option>
|
||||
</select>
|
||||
</label>
|
||||
<label class="fieldBlock fieldBlockFull">
|
||||
<span>표시 이름</span>
|
||||
<input id="field-name" type="text" autocomplete="off">
|
||||
@@ -93,6 +83,29 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="fieldSection">
|
||||
<div class="sectionHeader">
|
||||
<h3>구성 옵션</h3>
|
||||
</div>
|
||||
<div class="fieldGrid">
|
||||
<label class="toggleBlock">
|
||||
<input id="field-modsEnabled" type="checkbox">
|
||||
<span>모드 사용</span>
|
||||
</label>
|
||||
<label class="toggleBlock">
|
||||
<input id="field-pluginsEnabled" type="checkbox">
|
||||
<span>플러그인 사용</span>
|
||||
</label>
|
||||
<label class="toggleBlock">
|
||||
<input id="field-serverEnabled" type="checkbox">
|
||||
<span>서버 사용</span>
|
||||
</label>
|
||||
<div class="fieldHelpText fieldBlockFull">
|
||||
맵은 모든 프로필의 기본입니다. 플러그인을 켜면 서버 사용도 자동으로 같이 켜집니다.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="fieldSection">
|
||||
<div class="sectionHeader">
|
||||
<h3>클라이언트 배포</h3>
|
||||
@@ -113,7 +126,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="mapSection" class="fieldSection" hidden>
|
||||
<section class="fieldSection">
|
||||
<div class="sectionHeader">
|
||||
<h3>맵 자료</h3>
|
||||
</div>
|
||||
@@ -132,42 +145,37 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="serverPackSection" class="fieldSection" hidden>
|
||||
<section id="serverSection" class="fieldSection" hidden>
|
||||
<div class="sectionHeader">
|
||||
<h3>서버팩 자료</h3>
|
||||
<h3>서버 자료 / 설정</h3>
|
||||
</div>
|
||||
<div class="fieldGrid">
|
||||
<label class="fieldBlock fieldBlockFull">
|
||||
<span>서버 번들 ZIP 경로 또는 URL</span>
|
||||
<span>버킷 JAR 경로 또는 URL</span>
|
||||
<div class="uploadField">
|
||||
<input id="field-serverBundleUrl" type="text" autocomplete="off">
|
||||
<button type="button" class="secondaryAction uploadButton" data-upload-target="serverBundleUrl" data-upload-accept=".zip,application/zip">파일 업로드</button>
|
||||
<input id="field-serverJarUrl" type="text" autocomplete="off">
|
||||
<button type="button" class="secondaryAction uploadButton" data-upload-target="serverJarUrl" data-upload-accept=".jar,application/java-archive">JAR 업로드</button>
|
||||
</div>
|
||||
</label>
|
||||
<label class="fieldBlock">
|
||||
<span>서버 폴더 이름</span>
|
||||
<input id="field-serverDirectoryName" type="text" autocomplete="off">
|
||||
</label>
|
||||
<label class="fieldBlock fieldBlockFull">
|
||||
<span>서버 실행 명령</span>
|
||||
<input id="field-serverLaunchCommand" type="text" autocomplete="off" placeholder="java -jar server.jar nogui">
|
||||
</label>
|
||||
<label class="fieldBlock">
|
||||
<span>작업 디렉터리</span>
|
||||
<input id="field-serverWorkingDirectory" type="text" autocomplete="off" placeholder="빈 값이면 서버 루트">
|
||||
</label>
|
||||
<label class="fieldBlock">
|
||||
<span>서버 포트</span>
|
||||
<input id="field-serverPort" type="number" min="1" max="65535" step="1">
|
||||
</label>
|
||||
<label class="fieldBlock fieldBlockFull">
|
||||
<span>터널 명령</span>
|
||||
<input id="field-tunnelCommand" type="text" autocomplete="off" placeholder="예: playit-cli --port ${port}">
|
||||
<label class="fieldBlock">
|
||||
<span>서버 메모리 (MB)</span>
|
||||
<input id="field-serverMemoryMb" type="number" min="512" step="256">
|
||||
</label>
|
||||
<label class="fieldBlock fieldBlockFull">
|
||||
<span>터널 주소 추출 정규식</span>
|
||||
<input id="field-tunnelAddressRegex" type="text" autocomplete="off" placeholder="예: ([a-zA-Z0-9.-]+:\\d+)">
|
||||
<label class="fieldBlock">
|
||||
<span>최대 인원수</span>
|
||||
<input id="field-serverMaxPlayers" type="number" min="1" max="200" step="1">
|
||||
</label>
|
||||
<label class="toggleBlock">
|
||||
<input id="field-serverWhitelistEnabled" type="checkbox">
|
||||
<span>화이트리스트 사용</span>
|
||||
</label>
|
||||
<div class="fieldHelpText fieldBlockFull">
|
||||
직접 실행 시 런처가 `eula.txt`, `server.properties`를 자동으로 만들고 업로드한 버킷 JAR을 실행합니다.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -175,7 +183,7 @@
|
||||
<div class="sectionHeader">
|
||||
<h3>운영 메모</h3>
|
||||
</div>
|
||||
<p>업로드 버튼은 현재 프로젝트 기준 상대 경로를 자동으로 채웁니다. 로컬 테스트에는 바로 쓸 수 있고, 외부 배포용으로는 URL로 바꿔도 됩니다.</p>
|
||||
<p>업로드 버튼은 현재 프로젝트 기준 상대 경로를 자동으로 채웁니다. 접속주소는 관리자 사이트가 아니라, 사용자가 라이브러리에서 직접 넣는 구조입니다.</p>
|
||||
</section>
|
||||
</form>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user