cobblemon-gateway
새 플레이어 PC를 코블몬 서버에 자동 연결. Tailscale + Fabric + Cobblemon 설치.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
새 플레이어 PC를 코블몬 서버에 자동 연결. Tailscale + Fabric + Cobblemon 설치.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | cobblemon-gateway |
| description | 새 플레이어 PC를 코블몬 서버에 자동 연결. Tailscale + Fabric + Cobblemon 설치. |
"너의 여정은 지금부터다."
이 스킬은 새 플레이어의 PC에서 실행된다. 목표: 서버 접속에 필요한 모든 클라이언트 세팅을 자동화한다. 사용자는 공유 링크와 서버 주소를 입력하는 것만 하면 된다.
호스트가 서버를 이미 구축해두었다. 서버 구축 세부 사항은 이 스킬의 범위 밖이다.
HOST.md참고.
S 번호는 식별자일 뿐 실행 순서가 아니다. 아래 의존성 웨이브에 따라 실행한다.
| 웨이브 | 기준 | 체크항목 | 검증 방법 | 선행 조건 |
|---|---|---|---|---|
| W1-A | S1 | Tailscale 설치됨 | tailscale version이 버전을 반환 | 없음 |
| W1-B | S4 | Fabric Loader 설치됨 | 런처 프로필에 fabric-loader-*1.21.1 존재 | Java 21, Minecraft 경로 |
| W1-B | S5 | Cobblemon mod 설치됨 | mods/에 Cobblemon jar 존재 | Minecraft 경로 |
| W1-B | S6 | Fabric API 설치됨 | mods/에 Fabric API jar 존재 | Minecraft 경로 |
| W2 | S2 | Tailscale 로그인 + 공유 수락 | BackendState=Running, 공유 노드 peer 표시 | S1, 공유 링크 |
| W3 | S3 | 서버 접근 가능 | tailscale ping + TCP 25565 연결 성공 | S2, 서버 주소 |
| W4 | S7 | 실행 안내 완료 | 서버 주소 전달 | S3, S4, S5, S6 |
W0 시작
├─ W1-A: S1 ──→ W2: S2 ──→ W3: S3 ──┐
└─ W1-B: S4 + S5 + S6 ───────────────┴─→ W4: S7
S1~S7 전부 PASS = 🎫 게이트 오픈.
스킬 로드 즉시 출력:
🎫 코블몬 게이트웨이 시작!
포켓몬 세계로 가는 3단계:
1️⃣ Tailscale — 보이지 않는 다리를 놓는다
2️⃣ Fabric — 마인크래프트에 새 영혼을 심는다
3️⃣ Cobblemon — 포켓몬을 불러온다
준비 됐어? 출발한다.
| 완료 시점 | 출력 문구 |
|---|---|
| W1 작업 시작 | ⚙️ 필요한 설치를 먼저 백그라운드에서 시작했다. 설치하는 동안 연결 정보만 받을게. |
| S4-S6 완료 | ✨ 마인크래프트에 새 영혼이 깃들었다! |
| S1-S3 완료 | 🌍 다리가 완성됐다! 네 PC가 포켓몬 세계와 연결됐다. |
| S7 완료 | 🎫 게이트 오픈! 이제 서버 주소만 치면 돼. |
| 실패 | 💢 무슨 일이야! 로켓단이 방해하고 있어! [에러] |
접속 정보가 없어도 가능한 작업부터 시작한다. 질문 때문에 설치를 늦추지 않는다.
import os, platform
os_name = platform.system() # Windows / Darwin / Linux
mc_dir = {
"Windows": os.path.join(os.environ.get("APPDATA", ""), ".minecraft"),
"Darwin": os.path.expanduser("~/Library/Application Support/minecraft"),
"Linux": os.path.expanduser("~/.minecraft"),
}.get(os_name)
if mc_dir is None:
# 미지 OS (WSL, FreeBSD 등): 사용자에게 .minecraft 경로 직접 입력 요청
mc_dir = input(".minecraft 폴더 경로를 입력하세요: ").strip()
assert os.path.isdir(mc_dir), f"경로가 존재하지 않음: {mc_dir}"
nohup 또는 에이전트 도구의 지속 실행 세션 사용.Start-Process -PassThru 사용.설치 시작 후 다음 정보의 제공 여부를 확인한다:
TAILSCALE_SHARE_URL=<device-share-link>
SERVER_ADDRESS=100.x.x.x:25565
누락된 정보만 한 번에 질문한다:
⚙️ 설치는 이미 뒤에서 진행 중이야. 🎫 게이트를 연결하려면 호스트한테 받아야 할 게 있어:
- 코블몬 서버 노드 공유 링크
- 서버 주소 (100.x.x.x:25565 형식) 이것만 보내줘. 기다리는 동안 설치는 계속된다.
정보가 이미 제공되었으면 질문하지 않는다.
W1-A와 W1-B를 안전한 범위에서 병렬 실행한다. 같은 패키지 관리자를 사용하는 Tailscale과 Java 설치는 한 작업 안에서 직렬 실행해 잠금 충돌을 피한다.
이미 설치되었으면 건너뛴다.
Windows:
winget install tailscale.tailscale
macOS:
brew install --cask tailscale
Linux:
curl -fsSL https://tailscale.com/install.sh | sh
S1 검증:
tailscale version
Java 설치와 독립적이므로 Minecraft 경로가 확인되는 즉시 시작한다. 두 파일 다운로드는 병렬 실행해도 된다.
Modrinth API의 /v2/project/<project>/version에서 game_versions=["1.21.1"], loaders=["fabric"] 조건으로 최신 호환 버전을 조회한다. primary: true인 파일을 우선 선택하고, 없으면 첫 번째 파일을 mc_dir/mods/에 다운로드한다.
cobblemonfabric-apiimport os
os.makedirs(os.path.join(mc_dir, "mods"), exist_ok=True)
S5/S6 검증: mods/에 각 API 응답의 파일명과 일치하는 jar가 있고 크기가 0보다 큰지 확인한다.
java -version
Java 21이 없으면 설치한다:
winget install Microsoft.OpenJDK.21brew install openjdk@21sudo apt install openjdk-21-jreFabric Meta API에서 최신 stable Installer와 Loader 버전을 동적 조회한다:
import urllib.request, json
meta = "https://meta.fabricmc.net/v2/versions"
# 최신 stable installer
inst = json.loads(urllib.request.urlopen(f"{meta}/installer").read())[0]
installer_url = inst["url"] # maven URL
# 1.21.1 호환 stable loader
loader = json.loads(urllib.request.urlopen(f"{meta}/loader/1.21.1").read())["loader"]
loader_version = loader["version"]
S4 검증을 먼저 실행하여 Fabric Loader 프로필이 이미 존재하면 설치를 건너뛴다. 없으면 다운로드 후 설치한다:
curl -o <TEMP_DIR>/fabric-installer.jar <installer_url>
java -jar <TEMP_DIR>/fabric-installer.jar client -dir "<MC_DIR>" -mcversion 1.21.1 -loader <loader_version>
S4 검증:
import json, os, re
with open(os.path.join(mc_dir, "launcher_profiles.json"), encoding="utf-8") as f:
profiles = json.load(f).get("profiles", {}).values()
assert any(
re.fullmatch(r"fabric-loader-.+-1\.21\.1", p.get("lastVersionId", ""))
for p in profiles
)
S4-S6가 모두 PASS이면 ✨ 마인크래프트에 새 영혼이 깃들었다!를 출력한다.
S1과 공유 링크가 준비되는 즉시 시작한다. S4-S6 완료를 기다리지 않는다.
TAILSCALE_SHARE_URL을 브라우저에서 열어 공유된 Cobblemon 서버 노드를 수락한다.tailscale up으로 자기 계정에 로그인한다.tailscale up --qr을 사용한다.S2 검증: 문자열 Logged in as에 의존하지 말고 구조화된 상태를 검사한다.
import json, subprocess
status = json.loads(subprocess.check_output(
["tailscale", "status", "--json"], text=True
))
assert status.get("BackendState") == "Running"
status의 peer 목록에서 SERVER_ADDRESS의 IP가 공유 노드로 표시되는지 확인한다. 다른 호스트 장비가 보인다면 Device Sharing이 아니라 tailnet 초대일 수 있으므로 진행을 중단하고 링크 종류를 확인한다.S2와 SERVER_ADDRESS가 준비되면 실행한다.
tailscale ping --c=3 --timeout=10s <SERVER_IP>
nc -vz <SERVER_IP> 25565
Windows에서는 TCP 검증에 Test-NetConnection <SERVER_IP> -Port 25565를 사용한다.
Tailscale ping과 TCP 25565 연결이 모두 성공하면 S3 PASS다. 다른 포트를 능동적으로 스캔하지 않는다. 실패하면 tailscale status --json에서 공유 노드와 서버 온라인 상태를 확인한다.
S1-S3가 모두 PASS이면 🌍 다리가 완성됐다! 네 PC가 포켓몬 세계와 연결됐다.를 출력한다.
S3, S4, S5, S6가 모두 PASS일 때만 실제 서버 주소를 포함해 출력한다:
🎫 게이트 오픈!
이제 마인크래프트를 켜고:
1. 런처 왼쪽 → Minecraft 1.21.1용 Fabric Loader 프로필 선택
2. PLAY 클릭
3. 메인 메뉴 → Multiplayer → Add Server
4. 서버 주소: <SERVER_ADDRESS>
5. Join Server!
포켓몬 세계에 오신 걸 환영한다 🎫
Fabric 프로필 선택, Multiplayer 절차, 실제 서버 주소를 모두 전달하면 S7 PASS다.
| 문제 | 해결 |
|---|---|
| 백그라운드 설치가 멈춤 | 로그와 권한 프롬프트 확인 후 해당 작업만 전면 재시도 |
tailscale up 안 됨 | OS 재부팅, Tailscale 서비스 수동 시작 |
| GitHub OAuth 안 열림 | tailscale up --qr로 자기 계정 로그인 |
| 공유 노드가 안 보임 | 공유 링크 수락 여부와 서버 온라인 상태 확인 |
| 다른 서버 장비가 보임 | tailnet 초대일 수 있음. 호스트에게 공유 링크 재발급 요청 |
| Fabric Installer 실패 | Java 21과 명시한 -dir 경로 확인 |
| Cobblemon 버전 안 맞음 | Modrinth API 필터와 게임 버전 재확인 |
| 서버 접속 실패 | tailscale status --json, tailscale ping, TCP 25565 순서로 확인 |
| Incompatible mod list | 두 mod가 Minecraft 1.21.1 Fabric용인지 확인 |
| RAM 부족 | JVM 인수에 -Xmx4G -Xms2G 설정 |
| 모드 폴더 위치 모름 | OS별 mc_dir/mods/ 사용, 버전 하위 폴더에 넣지 않음 |
| 항목 | 버전 |
|---|---|
| Minecraft | 1.21.1 |
| Java | 21 |
Cobblemon, Fabric Loader, Fabric API는 Modrinth/Fabric Meta API에서 동적 조회하여 최신 호환 버전을 사용한다.