서버 목록에 대한 내용은 마인크래프트/서버/목록 문서
, 마인크래프트 멀티플레이나 멀티플레이 서버의 구분 등에 대한 내용은 마인크래프트/멀티플레이 문서
참고하십시오.상위 문서: 마인크래프트/서버
관련 문서: 마인크래프트/플러그인
{{{#!wiki style="margin: -0px -10px -5px; min-height:calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px; word-break:keep-all" | <colbgcolor=darkgreen><colcolor=#fff> 기본 플레이 | |
시스템 | 세계 (시드) · 게임 모드 · 난이도 · 게임 규칙 · 엔딩 · 죽음 메시지 · 스플래시 · 명령어 · NBT · 런처 | |
인게임 | 아이템 · 몹 (플레이어) · 개체 · 날씨 · 차원 · 생물군계 · 구조물 · 마법 부여 · 상태 효과 · 조작법 · 피해 · 업적 | |
도움말 | 튜토리얼 · 팁 (탐험 · 파밍 · 회로) · 재생 가능한 자원 · 브릿징 · PVP · 파쿠르 · 스피드런 · 건축 (맵아트) | |
시리즈 및 매체 | ||
출시 에디션 | 자바 에디션 (업데이트 · 거리 효과) · 베드락 에디션 (업데이트) · 포켓 에디션* · 콘솔 에디션* · 파이 에디션* | |
파생 게임 | 마인크래프트 던전스* · 마인크래프트 레전드* · 마인크래프트 에듀케이션 · 마인크래프트: 스토리 모드* · 마인크래프트 어스* | |
미디어 | OST · 관련 서적 · 레고 · 영화 · 애니메이션 · Minecraft Live · Minecraft Now · Minecraft Monthly | |
유저 콘텐츠 | ||
창작 요소 | 2차 창작 · 망토 · 맵 · 모드 (개발 · 팁 · 모드팩) · 애드온 · 팩 (리소스 팩 · 데이터 팩) · 외부 프로그램 · 핵 | |
멀티 콘텐츠 | 멀티플레이 · 서버 · 플러그인 · Realms · EULA | |
개발 | 개발 기초 · 모드 개발 · 플러그인 개발 | |
기타 | ||
이야깃거리 | 여담 · 커뮤니티 · 사건 사고 · 문제점 · 용어 · 지원 언어 · 머나먼 땅 · 이미테이션 게임 · 히로빈 | |
관련 문서 | 나무위키 마인크래프트 프로젝트 · 마인크래프트로 분류된 문서 · 마인크래프트의 하위 문서 | |
* 표시는 서비스가 종료되었거나 개발이 중단되었다는 표시이다. | }}}}}}}}} |
1. 개요2. 서버 유형3. 서버 만들기4. 개인 운영5. 마인크래프트 서버 호스팅 업체6. 서버 설정
6.1. server.properties6.2. motd 설정
7. 서버 구현물 목록7.1. 바닐라 서버7.2. Paper API 기반7.3. 자체 API 기반
8. 사건 사고7.3.1. Forge7.3.2. NeoForge7.3.3. Fabric7.3.4. Spigot7.3.5. Minestom7.3.6. Cuberite7.3.7. Glowstone7.3.8. MCHPRS
7.4. 플러그인 API + 모드7.4.1. SpongeForge7.4.2. Sinytra Connector7.4.3. CatServer7.4.4. Arclight7.4.5. Mohist7.4.6. Cardboard7.4.7. Banner
7.5. 다중 서버용 프록시 서버7.6. 지원 종료된 프로젝트1. 개요
마인크래프트 멀티플레이 서버를 구축하는 방법은 LAN 서버, Realms, 바닐라 서버, 모드/플러그인 서버가 있다.참고로 마인크래프트가 기존 PC용 자바 에디션과, 콘솔/모바일 크로스 플랫폼을 지원하는 베드락 에디션으로 분리되어, 자신의 플랫폼에 알맞은 서버 구동기를 선택해야 한다.
2. 서버 유형
2.1. LAN 서버
싱글플레이 세계에서 게임설정에 들어가면 LAN 서버를 열 수 있다.같은 근거리 통신망에 연결되어 있는 유저끼리 접속할 수 있다. 서버를 구동하는 PC와 같은 와이파이 또는 회선에 접속된 PC에서만 접속할 수 있다는 것이다.
다만 같은 내부 네트워크에 연결되어 있지 않더라도 VPN이나 공유기의 포트포워딩을 통해 외부에서 접속할 수 있다.
치트 사용이 불가능한 특정 맵에서의 꼼수가 가능한 방법으로, LAN 서버 만들기에 들어가 치트 사용을 켜고 서버를 열면 치트 사용이 가능해진다.
LAN 서버에서 버킷 플러그인을 사용할 수 없다. 모드는 포지나 패브릭을 설치하면 이용 가능하며, 플러그인과 유사한 기능을 하는 서버측(Server-Side) 모드를 대체재로 사용할 수 있다.
가장 쉽고 편하게 하는 방법은 바로 하마치를 이용하는 것이다. 당장 네이버나 구글에 검색만 해봐도 하마치를 쓰라는 글이 수두룩하다. 그러나 하마치의 특성상 꽤나 불안정하고 모드가 많거나 개인의 컴퓨터의 문제가 있다거나 네트워크가 아주 약간만 불안정해져도 바로 호스트를 제외한 모두가 게임에서 튕겨버린다.
2.2. Realms
자세한 내용은 Minecraft Realms 문서 참고하십시오.렐름 서버 또한 자바 에디션용 렐름과 베드락 에디션용 렐름이 따로있다.
2.3. 서버 구현 프로그램
구현물 또는 구현 프로그램 (Implementation[1]) 을 통해 서버를 구동할 수 있다. 방법은 다음 문단에서 설명한다.자바 에디션에서는 일반적으로 구현 프로그램은 Java 언어로 작성되었고, jar 파일[2]로 구성된다. 바닐라 서버와 달리 플러그인 API를 내장하고 있어 플러그인을 추가할 수 있다. 구현물 중에서 포지와 연계되어 있는 SpongeForge를 사용한다면 플러그인과 모드를 동시에 적용할 수도 있다.
프로그램이 실행되는 동안 서버가 인터넷 전역으로 공개되어 열린다. 같은 와이파이에 연결될 필요가 없다는 말이다.[3] 대부분의 서버 구현 프로그램들은 이 바닐라 서버를 기반으로 제작되었다. 바닐라 서버에 대한 자세한 정보는 이 문단 참고.
3. 서버 만들기
대다수의 서버 구현물은 Java로 작성된 프로그램이다. Jar 파일이기 때문에 일반적인 실행 방법[4]으로 구동할 수 있다. 다만 명령문(매개 변수) 설정은 못하니 참고.
NAS 등 개인용 서버 보유자라면 마인크래프트 서버 관리 프론트엔드[5]를 활용하는 것도 나쁘지 않다.
이하의 내용은 모두 바닐라 서버 기준으로 설명한다.
3.1. Java 설치
여러가지 배포판이 있는데 많이 쓰이는 자바 런타임은 Adoptium - OpenJDK Temurin이다. 아니면 마이크로소프트에서 제작하고 공식 런처에 내장된 OpenJDK 빌드를 사용할 수도 있다. 다른 자바 런타임을 사용 하고 싶을 경우 Java 문서를 참고하면 좋다.Java 버전
마인크래프트 서버는 게임 버전에 따라 구동되는 자바 버전이 다르다. 1.16.5 이하는 Java 8, 1.18~1.20.4는 Java 17, 1.20.5 이상은 Java 21이 필요하다.
JRE? JDK?
각각 Java Runtime Environment, Java Development Kit의 줄임말이다. JRE는 자바 프로그램 구동을 위한 패키지이며, JDK는 프로그램을 개발하는 데 필요한 도구를 모아놓은 패키지이다.
마인크래프트 서버는 JRE만 필요로 하기에 JRE를 설치한다.
3.1.1. Windows
자바가 설치되어 있는지 확인하려면:- 실행 창(윈도우 키+R)에 cmd /k java -version 를 입력하고 Enter를 누른다.
- java version "..." 메세지와 함께 자바 버전이 출력되면 잘 설치되어 있는 것이다.
winget
윈도우 패키지 관리자(Windows Package Manager, Winget)는 마이크로소프트에서 개발한 Windows용 오픈소스 패키지 관리자이다.
윈도우 패키지 관리자를 사용하여 여러 OpenJDK 배포판을 설치할 수 있다. 마인크래프트 서버는 JRE만 필요하므로, JDK 설치는 선택 사항이다.
winget install EclipseAdoptium.Temurin.21.JREAdoptium
Adoptium Temurin 21 JRE만 설치.winget install EclipseAdoptium.Temurin.8.JREAdoptium
Adoptium Temurin 8 JRE만 설치.winget install Microsoft.OpenJDK.21Microsoft
참고로 Microsoft 빌드의 OpenJDK 8은 사용할 수 없다.
3.1.2. MacOS
- 터미널을 연다.
java -version
을 입력하여 Java가 설치되어있는지 확인한다.
만약 Java가 없거나 특정 버전을 설치해야 하는 경우 홈브루를 통해 설치할 수 있다.- 홈브루가 설치되어있지 않아있을 경우 다음 명령어를 입력한다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 다음 명령어를 입력한다.
brew tap homebrew/cask-versions
- Adoptium Temurin 21을 원한다면
brew install --cask temurin@21
를 입력한다. - Adoptium Temurin 8을 원한다면
brew install --cask temurin@8
를 입력한다. - 그러면
java -version
을 입력하여 Java가 제대로 설치되어있는지 확인한다.
3.1.3. Linux
리눅스 배포판의 종류에 따라 다르다. 자바 홈페이지에서 바이너리 압축 파일을 내려받거나 운영체제의 패키지 매니저[7]를 통해 open-jdk 또는 oracle-jdk를 내려받는다. 데비안 계열은apt install open-jdk
라고 하면 된다. 권한이 부족할시 sudo를 앞에 붙이면 된다.3.2. 구동기 만들기
구동기는 서버 구현 프로그램을 실행하는 명령어를 실행 가능한 배치파일로 만드는 것이다. 아래 설명과 같이 구동기를 만든 후 더블 클릭으로 구동기 파일을 실행하면 서버가 켜진다.3.2.1. 윈도우
- 폴더[8] 하나를 만든다.
- 폴더 안에 들어가서 미리 받아 놓은 서버 구현물(Vanilla, Fabric, Paper 등) 파일을 옮겨 넣는다.[9]
- 폴더의 빈 화면에 우클릭 > 새로 만들기 > 텍스트 문서
- 이름은 아무렇게나 지정하고 메모장으로 열어서 아래와 같이 작성한다.
cls
java -Xms2048M -Xmx2048M -jar <서버 파일>.jar
pause||
만약 서버를 계속 다시 시작하고 싶다면 다음과 같이 작성한다.
chcp 65001:start
cls
java -Xms<서버가 사용할 최초 메모리 크기> -Xmx<서버가 사용할 최대 메모리 크기> -jar <서버 파일>.jar
pause
goto start||
주의: <서버 파일>.jar 부분은 대소문자 구분하며, 띄어쓰기를 없애거나 파일 이름을 큰따옴표("")로 감싸줘야 한다.[10] 서버 구현물의 파일 이름을 단순하게 바꾸자. (예:
작성한 구동기 스크립트에 대한 설명은 아래 표와 같다. 필요하면 기호에 맞게 스크립트를 바꿔 써도 좋다.
1. 파일을 저장한 후 메모장을 닫는다.
1. start.txt 텍스트 파일 이름을 start.bat 또는 .cmd[13]으로 바꾼 뒤 실행한다.
server-1.21.3.jar
)작성한 구동기 스크립트에 대한 설명은 아래 표와 같다. 필요하면 기호에 맞게 스크립트를 바꿔 써도 좋다.
명령문 (매개 변수) | 명령문 설명 | ||
@echo off | 프롬프트 메시지에 "C:\Windows\System32 >java -Xms... " 와 같은 파일 경로 또는 명령어가 출력되는 것을 끈다. | ||
chcp 65001 | 콘솔에서 한글이 깨지는 현상을 방지한다. 한국어가 지원되는 플러그인 설치 시 필수로 해줘야 한다. | ||
:start | goto 명령어에서 신호를 받았을 때 여기서부터 명령을 다시 시작한다. | ||
cls | 콘솔에 출력된 모든 텍스트를 제거한다. | ||
java -jar server.jar | "server.jar" 라는 이름의 서버 구현물 파일을 Java로 실행한다.[11] | ||
-Xms2048M -Xmx2048M | 서버를 실행하는 데 할당시킬 메모리 크기[12]. -Xms는 최초 할당 크기, -Xmx는 최대 할당 크기이다. 되도록이면 -Xms와 -Xmx를 같게 설정하는 것이 좋다. 컴퓨터의 메모리 크기와 맞춰 설정하는 것이 좋지만, 서버를 연 컴퓨터로 다른 작업을 하려면 4GB 정도의 여유를 남기고 할당해야 한다. | ||
pause | 일괄적인 처리를 보류한다. 서버 종료시 화면이 갑자기 꺼지지 않아 유용하다. | ||
goto start | :start 부터 명령을 다시 시작한다. | ||
{{{#!folding 추가 인수 [ 펼치기 · 접기 ] | 모든 인수는 -jar (서버 이름).jar로 시작한다. | ||
--help | 사용 가능한 인수를 실행하고 서버를 끈다. | ||
--bonusChest | 세계 생성 시 보너스 상자를 생성한다. | ||
--demo | 체험판 버전으로 실행한다. | ||
--eraseCache | 조명 캐시 등을 지운다. 싱글에서 세계 최적화 버튼을 누르는 것과 같다. | ||
--forceUpgrade | 모든 청크를 현재 실행중인 버전으로 강제로 업그레이드 한다. | ||
--initSettings | eula.txt와 server.properties를 불러온 다음 서버를 끈다. | ||
--jfrprofile | Java Flight Recorder를 초기화한다. | ||
nogui --nogui | GUI를 열지 않는다. | ||
--safeMode | 안전 모드(바닐라 데이터팩)로 진입한다. | ||
--serverId <문자열> | 서버 ID. 충돌 보고서에만 사용한다. | ||
--universe <문자열> | 세계를 찾을 폴더. 기본값은 . (현재 디렉토리)이다. | ||
--world <문자열> | level.dat가 있는 세계 폴더. 기본값은 world 이다. | ||
--port <값> | 포트를 지정한다. 기본값은 -1이다. -1은 server.properties 파일 내의 server-port 의 값을 읽는다. | }}} | |
{{{#!folding Log4j 취약점 수정 인수 [ 펼치기 · 접기 ] | -Dlog4j2.formatMsgNoLookups=true | 1.17~1.18 전용. 심각한 보안 취약점 해결 1.18은 가능한 경우 1.18.1로 업그레이드 한다. 그렇지 못한 경우 이 인수를 넣는다. | |
-Dlog4j.configurationFile=log4j2_112-116.xml | 1.12 ~ 1.16.5 전용. 심각한 보안 취약점 해결 여기에서 다운로드 받은 뒤 서버 폴더에 넣고 JVM 인수 추가한다. | ||
-Dlog4j.configurationFile=log4j2_17-111.xml | 1.7 ~ 1.11.2 전용. 심각한 보안 취약점 해결 여기에서 다운로드 받은 뒤 서버 폴더에 넣고 JVM 인수 추가한다. | }}} |
1. start.txt 텍스트 파일 이름을 start.bat 또는 .cmd[13]으로 바꾼 뒤 실행한다.
* 텍스트 파일 이름을 바꿔도 여전히 텍스트로 열린다면 파일 탐색기가 확장자명을 숨기고 있기 때문이다. Windows10 기준 폴더 창 상단의 보기-옵션-보기-알려진 파일 형식의 파일 확장명 숨기기 박스 체크 해제하면 파일의 확장자가 보인다. 파일 이름이
1. 메모장을 열어 주고 내용에 eula=true만 작성한다. 그리고 파일 이름은 eula.txt로 하고 서버 폴더 안에 저장한다.start.bat.txt
처럼 확장자가 변경된 것이 아니라 이름만 변경된 경우이다. 뒤의 txt를 지우면 해결된다.이는 EULA에 동의한다는 의미이며 자신이 서버를 운영하면서 위반 행위를 할 경우 모장으로부터 제재를 받을 수 있다.
1. .bat 또는 .cmd 파일을 열어 준다. 그리고 잠시 기다리면 콘솔에 텍스트가 표시되며 world, server.properties 같은 폴더나 파일이 생성된다.[14] 이후 서버 콘솔에 Done (시간)! For help, type "help"
가 기록되었다면 서버가 열렸음을 의미한다.Invalid maximum heap size: -Xmx(자신이 지정한 크기) The specified size exceeds the maximum representable size.
라고 뜬다면 자바가 32비트라서 일어나는 오류다. 자바 사이트에서 64비트 버젼을 받아주면 해결된다. JDK를 설치했다면 무조건 64비트 버전이 설치된다.- 서버는 JVM(자바 가상 머신)에서 돌아가기 때문에, 가비지 컬렉션 관련 인수를 추가하여 서버를 최적화 하면 좋다. 가비지 컬렉션중 가장 유명한 컬렉션은 Aikar Flags이다. 아래의 내용을 -Xmx와 -jar 사이에 넣으면 된다.
- https://flags.sh 에서 빠르게 JVM 인수들이 달린 명령을 생성 할 수 있다.
3.3. 마인크래프트 서버 공개
3.3.1. 포트포워딩
자신의 컴퓨터가 Wi-Fi 에 연결되지 않고 LAN 선이 모뎀이나 스위칭 허브에 연결되어 있거나 VPS 등의 호스팅 서비스를 사용하는 경우 패스. 하지만 LAN선이 라우터에 연결된 경우에는 아래 추가 절차가 필요하다.장거리를 하고 싶다면 위에서 연 포트를 공유기에서도 열어주어야 한다. 모든 공유기 공통으로 공유기 페이지에 로그인해야되며 방법을 모르는 경우 공유기의 사용설명서를 읽어보면 된다. 공유기 제조사별로 방법이 천차 만별이니 문서에 모든 경우를 다 적기에는 어려움이 있다. 열심히 공유기의 포트 포워드나 포트 포워딩항목을 찾아보자 다만 iptime같은 사제 공유기 말고 통신사의 공유기라면 내부 포트를 제대로 지정할 수 없는 경우가 있는데[15] 통신사에 연락하거나 DMZ, S-DMZ, Twin-IP를 사용하거나 내부 포트에 맞춰주자. 모뎀을 사용하거나 이중 공유기이면 모든 모뎀, 공유기를 똑같이 설정해주어야 한다.[16] 공유기에서 컴퓨터로 할당되는 IP를 고정하는 것을 추천[17], 유동 IP이기 때문에 컴퓨터로 할당되는 IP주소가 바뀐다면 다시 설정해야 되기 때문이다. 포트포워딩 테스트[18]
포트포워딩 완료 시 공유기와 유선으로 접속해 서버를 개방해야 한다.
3.3.2. 인바운드 규칙 설정(윈도우)
위의 방법대로 따라한다면 서버는 정상적으로 구동될테지만 본인 밖에 접속을 할 수 없을 것이다. 이를 해결하기 위해서는 방화벽을 해제해야 한다.방화벽은 윈도우의 방화벽과 공유기의 방화벽이 존재하며, 윈도우의 방화벽을 열지 않으면 공유기에 방화벽을 열었다고 해도 멀티가 불가능 하나 윈도우의 방화벽을 열었다면 같은 공유기 내에서는 멀티가 가능하다.
포트포워딩이나 DMZ로 공유기의 포트를 열 경우 보안이 취약해지기 때문에 장거리 멀티가 아니라면 윈도우 방화벽만 해제해 주자.[19]
1.윈도우 키 + R을 입력하고 나타나는 실행 창에 control을 입력한다. 또는 제어판을 검색하여 연다.
2. 시스템 및 보안 → Windows Defender 방화벽 → 왼쪽에 위치한 고급 설정 클릭
3. 아웃바운드는 기본 설정이 접속 허용이니 건드릴 필요가 없고 인바운드 규칙을 선택한다.[20]
4. 오른쪽에 새 규칙 → 포트(O)를 선택[21], TCP(T)와 특정 로컬 포트(S)를[22] 선택하고 포트 입력 칸에 자신이 설정한 서버의 포트를 입력한다.(포트를 따로 설정하지 않았다면 기본 포트인 25565를 입력하면 되며 베드락 에디션은 19132).[23]
5. 연결 허용(A)를 선택하고, 도매인(D), 개인(P), 공용(U) 모두 선택한다.
6. 이름은 편한대로 지정해주고 설명은 선택 옵션이다.
3.3.3. 포트포워딩 문제 해결(윈도우)
간혹 공유기로 구축된 내부 네트워크와 서버 프로그램 자체에서 설정한 내부 네트워크 간 IP 설정이 달라[24] 127.0.0.1과 같은 루프백 IP로는 접근이 되는데, 외부에서 서버 접근이 안 되는 경우가 있다. 방화벽 설정, 공유기 포트포워드 설정 등등을 다 했는데 안 되면 환장할 노릇.그런 경우에는 최초 서버 구축 시에 "사용자의 내부 IP *.*.*.*으(로) 포트포워드가 필요할 수 있습니다"라는 문구가 뜬다. 이 때는 관리자 권한으로 cmd 실행 이후
netsh interface portproxy add v4tov4 listenport=[설정 포트] listenaddress=[내부 네트워크 IP] connectport=[설정 포트] connectaddress=[컴퓨터의 내부 IP 주소]
3.4. 도메인 설정(공통)
자신이 어떤 운영체제를 사용해도 도메인 설정을 하는 방법은 동일하다. 도메인이란 간단히 말해서 숫자로 된 아이피주소를 문자열로 바꿔주는 서비스인데 일단 아이피가 바로 노출되는 것 보단 보안에 효과가 있으며, 사용자들이 알기 쉬워 접근성을 올려 줄 수 있고, 서버의 특성을 나타내는 수단이다.노하마치, 장거리 멀티등으로 많은 블로그에서 홍보하는데 하마치 아이피도 도메인 등록을 할 수 있으며 장거리 멀티는 도메인과는 크게 상관이 없다. 굳이 도메인을 안쓰고 아이피 주소를 사용하는 것도 충분히 가능하다. 반드시 해야하는 절차가 아니며 개인의 취향과 선택에 따르는 선택사항이라는 점을 명심하자. 또한 .com같은 도메인은 이미 다른 사용자가 가져간 경우가 태반이며, 가격 역시 매우 비싸며, .kr은 대한민국 법의 보호를 받는 도메인이라는 점을 참고해두자.[25]
도메인을 등록하려면 대개 돈을 지불하여야 하며, 무료 도메인 사이트 역시 존재하나 무료 도메인 사이트는 선택할 수 있는 폭이 좁고 디도스 공격을 당해 서버가 폐쇄될 가능성이 높다. 과거 무료 도메인 사이트인 oa.to가 디도스 공격으로 폐쇄되었던 걸 생각해보자.
그냥 도메인을 등록하면 가정에선 기본적으로 유동 아이피이기에 아이피 주소가 바뀌어 도메인이 갑자기 안될 수도 있으며 이러한 불편함을 해소하기 위해서는 아이피를 고정하거나 DDNS서비스를 사용하여야 한다.
iptime공유기라면 내장된 무료 DDNS를 사용하는 것을 추천하고, 이외에는 no-ip 또는 MCV.KR[26][27] no-ip같은 경우 추가 프로그램을 깔지 않으면 DDNS가 안되니 참고 바람. 다른 서비스를 찾고 싶다면 구글에 DDNS 검색을 해보자.
DDNS가 싫다고 한다면 그냥 도메인을 아이피로 등록하면 된다. 만약 많은 사람들이 참여하는 서버로 만들고 싶다면 반드시 아이피를 고정하거나 DDNS를 사용해야 하며, 그냥 도메인을 등록하는 경우는 친한 사람끼리 플레이하는 정도가 적당하다.
4. 개인 운영
개인 운영이란 서버 호스팅을 이용하지 않고 본인 컴퓨터로 서버를 열거나 직접 서버용 컴퓨터를 장만해서 운영하는 방법을 말한다.호스팅 비용이 들지 않겠지만, 24시간 내내 컴퓨터를 켜야 하기에 전기요금이 많이 나갈 수 있어서 대부분은 시간제[28]로 운영한다. 뿐만 아니라 디도스 공격에 취약하기 때문에 누군가가 서버 컴퓨터에 디도스 공격을 하면 그대로 서버 자체가 마비될 수 있기 때문이다. 디도스 공격을 걱정한다면 비싼 돈을 들여서 디도스 방어 장비를 사용하기보다는 그냥 호스팅을 이용하는 게 좋다.
또한 컴퓨터의 성능이 많이 받쳐줘야 한다. 서버 인원이 적은 소규모 서버라면 감당할 수 있어도 서버 인원이 늘어나고 서버에 컨텐츠를 추가할수록 많은 리소스를 먹게 되어 개인 컴퓨터로는 감당하기 어렵다. 특히 야생서버의 경우 서버 유저들이 맵을 자유롭게 돌아다니다 보니 맵 파일 크기가 몇십에서 심하면 몇백GB를 넘어버린다. 따라서 Worldborder나 플러그인을 통해 맵의 크기를 제한시켜야 한다.
그리고 외부에서 접속할 수 있도록 공유기 설정도 변경해야 하는데, 공유기마다 접근 방법이나 설정 페이지가 다르기 때문에 어려울 수 있다.
5. 마인크래프트 서버 호스팅 업체
마인크래프트 서버를 전문적으로 호스팅해주는 업체 역시 존재한다. Mojang Studios에서 운영중인 Minecraft Realms이 있지만, 바닐라 서버만 사용이 가능해 친구들과 가볍게 플레이할 목적이 아니라면 불편할 수 있다.따라서 바닐라 외의 서버를 돌려주는 호스팅 업체들을 사용하는 것이 좋다. 호스팅 업체에 따라서 Java 에디션 서버만 지원하거나 Java와 베드락 에디션 서버를 돌다 지원한다. 규모가 큰 업체의 경우는 다른 게임 서버도 호스팅해주기도 한다.
외국의 대표적인 호스팅 업체로는 MCProHosting[29], Apex Hosting 등이 있으며, Aternos 같은 무료 호스팅 업체도 있으나 무료 호스팅 업체들은 대부분 램 1GB에 성능이 낮은 편이다보니 서버 랙이 있으며, 플러그인을 많이 적용하거나, 모드를 적용하면 램 용량을 초과해버려서 서버가 작동하지 않는다. 유료 호스팅의 경우는 추가로 금액을 지불해서 램 용량을 추가하거나 저장공간 용량을 업그레이드할 수 있다.
업체마다 원격 데스크톱 연결을 지원하거나, DDoS 방어 기능을 지원하기도 한다. 또한 리눅스 말고 윈도우 서버를 선택할 수 있다, 다만 윈도우 서버는 권장하지 않는데, 월 라이선스비가 추가되며 리눅스 서버에 비해 CPU/메모리 사용량도 많아 윈도우 환경이 꼭 필요한 것이 아니라면 리눅스 서버를 사용하는 것이 가성비, 성능 면에서 좋다.
호스팅 비용은 업체마다 다른 편이며, 비용이 싼 것도 있고, 비싼 것도 있다. 비용이 싸고 신뢰도가 낮은 업체는 사기나 먹튀 위험이 있기 때문에 피해야 한다. 비용이 싼 업체들은 원칙적으로 환불이 불가능하므로 신중하게 선택하는 것이 좋다.
이외 가상 서버 호스팅을 구입한 뒤 직접 자바를 설치, 서버를 운영할 수도 있으나 일부 업체의 경우 부하 등의 이유로 게임서버 운영을 금지하기도 하므로 마인크래프트 서버를 운영해도 괜찮은지 반드시 확인해야 한다.
6. 서버 설정
아래에는 서버를 설정하는 방법을 서술한다.6.1. server.properties
자세한 내용은 server.properties 문서 참고하십시오.6.2. motd 설정
Message of the Day. 마인크래프트의 멀티플레이에서 서버의 설명을 정하는 설정이다. server.properties에서 서버 motd를 설정하거나 스크립트로 설정할 수 있다. 1.19.4 이하 버전은 한글로 작성하려면 인코딩 방식이 다르기 때문에 UTF-8 형식으로 작성해야 한다.MC-2215 한글에서 유니코드로 바꾸는 방법은 여기로 가서 변환 해주도록 하자. 뿐만이 아니라 색을 입히고 출력 결과물을 미리 볼 수 있는등 편하게 설정 할 수 있다.7. 서버 구현물 목록
이 문단은 현재까지 사용 가능하거나 개발이 중단된 다양한 종류의 서버 구현 프로그램을 소개한다.
* 이름: 서버 구현 프로그램 이름 * 한글 이름: 제안하는 한글 표기명 * API: 플러그인 동작의 기반이 되는 API * 지원 로더: 모드와 플러그인의 지원 여부 * 홈페이지: 공식 홈페이지 링크 * 마지막 버전: 개발이 중단된 경우 기입 * 추가 설명: 해당 구현물의 부가적인 설명 * 지원 중단 사유: 개발이 중단된 서버 구현물들중 특별한 사유가 존재할 경우 기입 |
아래는 마인크래프트 버전별로 요구하는 Java 런타임의 버전이다.
마인크래프트 버전 | 요구 Java 버전 |
최초 버전 ~ 1.5.2 | 5(1.5.0) |
1.6.1 ~ 1.11.2 | 6(1.6.0) |
1.12 ~ 1.16.5 | 8(1.8.0) |
1.17 ~ 1.17.1 | 16 |
1.18 ~ 1.20.4 | 17 |
1.20.5 ~ | 21 |
7.1. 바닐라 서버
Vanilla Server (바닐라 서버) | |
(위키에서 임의로 넣은 로고) | |
API | 없음 |
지원 로더 | 데이터 팩 |
지원 버전 | 클래식 ~ 최신 스냅샷 |
라이선스 | 최종 사용자 라이선스 계약 |
공식 다운로드 | 최신 버전 |
다만 다른 구동기들에 비해 최적화가 많이 부족하다는 단점이 있어서, 생야생 서버를 연다고 해도 컴퓨터 사양이 넉넉하지 않거나 서버 규모가 큰 경우라면 다른 구동기를 사용하는 것이 더 좋다. 그밖에 바닐라 서버는 정식으로 출시되지 않은 스냅샷 버전을 지원한다는 이점을 가지고 있다.
- 다운로드 방법은 다음과 같다.
- 최신 버전: 여기에서 내려받는다.
- 스냅샷/다른 버전: 공식 게임 런처에서 설치 설정(Installations) → 새 설치 설정(New inatallations) → 원하는 버전(VERSION) → 버전 항목 오른쪽에 서버(SERVER)를 클릭한다.
7.2. Paper API 기반
Spigot 및 그 API를 포크한 Paper API를 구현하는 서버들이다. 기존에는 순수 Bukkit API 기반으로 제작된 플러그인들의 거의 완벽한 구동을 보장하였으나, PaperMC 측에서 업데이트 속도 향상 및 개발 환경 개선을 위해 하드포크를 결정하며 앞으로 Paper API 기반 서버들 위에서 순수 버킷 플러그인을 구동하면 오류가 생길 수 있다.7.2.1. Paper
Paper (페이퍼) | |
API | |
지원 로더 | |
지원 버전 | 1.7.10~1.21.3, 1.21.4[35] |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드(1.7.10[Log4j미수정]) |
Spigot과는 다르게 DMCA 테이크 다운 문제가 해결되어 일반적인 JAR 파일을 배포하는 방법으로 손쉽게 다운로드하여 사용할 수 있다. 거의 모든 Spigot 플러그인과 호환된다.
다만 기반암 파괴, 레일 복사 등을 모두 막아버려 바닐라의 공장, 특히 복사버그 계열 공장 대다수가 Paper에서 패치되어 설정을 건드리거나 Paper 전용 공장을 만들어야 해서 야생 유저들 중 Paper를 좋지 않게 보는 시선이 제법 있다. 이로인해 Paper 대신 바닐라 서버 혹은 Fabric 서버를 여는 서버가 있다.
한국 표준시 기준 2021년 8월 18일 오전 4시 40분, Tuinity의 개발자인 Spottedleaf가 Paper 팀의 개발자로 합류했다는 소식이 공지되었고, 1.17.1 #232 버전 이상부터 Tuinity 패치를 사용할 수 있게 변경되며 성능이 향상되었다.
2024년 12월 14일, 1.21.4 버전 이후 Spigot으로부터 하드포크를 해 업데이트 속도가 향상될 예정이고 향후 추가될 Bukkit/Spigot API 함수들에 대해서는 지원을 하지 않을 것이라 밝혔다.# 따라서 2024년 12월 17일 기준 당장 큰 호환성 문제는 없겠지만 가능하면 페이퍼 기반 플러그인들로 전환하는 것이 권장된다.
7.2.2. Purpur
Purpur (퍼퍼) | |
API | |
지원 로더 | |
지원 버전 | 1.14~1.20.6, 1.21.3 |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 공식 다운로드 |
서버를 최적화하고 싶다면 이 문서를 참고하자. 1.17이 되며 Airplane 포트가 제거되었으나, 2021년 7월, Purpur의 개발자가 Airplane 포트를 공식적으로 다시 지원하며 Airplane의 모든 기능을 지원하게 되었다. 2022년 1월에는 1.18.1에서 Pufferfish 포트를 지원하기 시작했다.
Paper의 하드포크 결정 이후 공식 디스코드에서 Purpur 역시 페이퍼의 결정에 따를 것이고, 앞으로도 Paper API 기반으로 만들어진 플러그인들은 Purpur에서 문제 없이 돌아가게 만들 예정이라고 했다.
7.2.3. Plazma
Plazma (플라즈마) | |
API | |
지원 로더 | |
지원 버전 | 1.19.4~1.21.3, 1.21.4 |
라이선스 | GPL v3 |
웹사이트 | 공식 문서, 깃허브 |
공식 다운로드 | 공식 다운로드 |
버킷 구성이 Purpur에서 언급한 최적화 가이드 문서에 따라 일부 기본적으로 설정 되어있다.
다른 버킷과 다르게 사용량이 많은 경우 구 버전도 최소한의 유지 보수를 진행한다.
새로운 버전 출시 후 개발팀이 중~대규모 서버에서 실전 테스트를 약 2주간 진행하므로 그 이후부터 사용하는 것이 권장된다.
초창기에는 코드 품질과 바닐라 역학 일부에 문제가 있었으나 2024년 6월 기준으로 일부 해결되었다. 그러나 1.21.0 미만의 버전은 프로젝트의 규모가 크지 않을 때 개발되었으므로 신중히 판단하고 사용해야 한다.
공식 디스코드에서 Paper의 하드포크 결정을 따르고 가능한 빠르게 Paper의 하드포크를 기반으로 재작성될 예정이라 밝혔다.
7.2.4. Pufferfish
Pufferfish (퍼퍼피쉬) | |
API | |
지원 로더 | |
지원 버전 | 1.17.1~1.20.4, 1.21.1 |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드 |
7.2.5. Folia
Folia (폴리아) | |
API | |
지원 로더[41] | |
지원 버전 | 1.19.4, 1.20.4, 1.20.6, 1.21.1(개발 중) |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 깃허브[42] |
페이퍼를 포크한 서버 구현체로, 무려 구역별 멀티쓰레딩을 지원한다![43] 다만 멀티쓰레딩을 사용하면서 기존 플러그인들과 호환되지 않는데다 플러그인 API도 완전치 않고, 비활성화된 명령어들중 scoreboard, tag, bossbar, team 등 맵에서 많이 쓰이는 명령어들이 비활성화 되어 있어 명령 블록이 있는 맵을 사용하려면 바닐라에 가까운 서버 구현체들[44]로 구동하는 것을 추천한다.
또한 애초에 완전히 완성되지 않은 서버 구현체이므로[45] 예상치 못한 버그는 언제든 발생 할 수 있다.[46] 대규모 서버에서 실제 서비스 제공 용도로 사용하는 것은 그닥 좋은 생각은 아니며, 컴퓨터 자원이 그닥 많지 않은 경우도 성능 미달로 인한 문제 발생이 있을 수 있기에 추천되지는 않는다.[47]
개발적으로 관심이 있는 경우 작동 원리를 읽어보는 것도 도움이 된다.
PaperMC 측에서 테스트한 결과에 대한 글도 있다. 1차 테스트 (기본적 및 개발 정보) 2차 테스트 (개발 정보 위주)
개발 초기의 테스트 결과를 보아, 앞으로 있을 테스트를 기대 해볼만큼 꽤 좋은 성능을 내고 있다.
7.2.6. Leaves
Leaves (리브즈) | |
파일:Leaves 서버 로고.svg | |
API | |
지원 로더 | |
지원 버전 | 1.19 ~ 1.21 |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 깃허브 |
7.3. 자체 API 기반
아래 목록의 프로그램들은 Paper API와 독립적이므로 페이퍼 플러그인과 호환되지 않는다. 일부 프로그램은 바닐라 서버에 의존하지 않고 하나부터 열까지 서버 기능을 직접 구현하기도 한다. 이 경우 업데이트 속도가 더디거나 지원하지 않는 기능이 있으므로, 신중하게 선택하기 바란다.7.3.1. Forge
Forge (포지) | |
API | Forge API |
지원 로더 | 포지 모드 CurseForge,Modrinth |
지원 버전 | 1.1~ 1.21.4 |
라이선스 | GNU LGPL v2.1 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드[50] |
7.3.2. NeoForge
NeoForge (네오포지) | |
API | Forge API, NeoForge API |
지원 로더 | 네오포지 모드 CurseForge,Modrinth |
지원 버전 | 1.20 ~ 1.21.4 |
라이선스 | GNU LGPL v2.1 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 1.20.2 ~ 1.21[51] |
7.3.3. Fabric
Fabric (패브릭) | |
API | Fabric API |
지원 로더 | 패브릭 모드 CurseForge,Modrinth |
지원 버전 | 1.14 ~ 1.21.4 ~ 최신 스냅샷 |
라이선스 | Apache License 2.0 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드, API[52] |
버킷 플러그인은 호환되지 않지만 비슷한 역할을 하는 서버용 모드나 패브릭 모드로 포트된 버킷 플러그인을 대신 사용 가능하다. 예를 들어 WorldEdit, Dynmap, LuckPerms등은 패브릭과 페이퍼 플러그인 버전이 모두 존재한다.
야생 유저의 경우 기반암 파괴, 레일 복사 등 바닐라 버그를 고치지 않고 공장들도 바닐라 시스템 그대로 작동하면서 Lithium, LazyDFU, FerriteCore와 같은 바닐라 친화적 서버 최적화 모드들로 상당한 최적화를 보여주며 반대로 막힌 버그들을 활성화 시키려면 직접 설정을 건드려야 하는[53] Paper의 대체품으로 좋은 편이다.
7.3.4. Spigot
Spigot (스피곳) | |
API | Bukkit API, Spigot API |
지원 로더 | 버킷 플러그인, 스피곳 플러그인 |
지원 버전 | 1.4.4 ~ 1.21.1[54], 1.21.3 |
라이선스 | GPL v3 |
웹사이트 | 공식 홈페이지, 공식 디스코드, 코드 저장소[55] |
공식 다운로드 | #, BuildTools |
비공식 다운로드 | # |
BuildTools로 Spigot을 구하는 방법은 여기서 알아보자.
Spigot은 Bukkit API를 채택하여 Craftbukkit 기반 버킷 플러그인이 호환되며, 설정 튜닝을 통한 최적화 기능도 제공한다. 단 Spigot API가 수정된 Bukkit API이기에 Spigot 전용 플러그인을 Craftbukkit에서 구동하려고 하면 오류가 발생할 수 있다.
장점이라면 빠른 업데이트를 예로 들 수 있는데, 프리릴리즈등 정식 출시되지 않은 버전들의 업데이트가 조금이라도 늦어질 경우, BuildTools를 통해 바로 개발 버전의 스피곳을 사용해볼 수 있는 경우가 많다. 만약 새 빌드가 나올 경우 이전 빌드를 사용하는 서버에서는 새 빌드를 다운받으라며 20초 후 서버를 시작한다.[57]
7.3.5. Minestom
Minestom (마인스톰) | |
API | Minestom API |
라이선스 | Apache License 2.0 |
지원 로더 | Minestom Extension |
웹사이트 | 공식 홈페이지, 깃허브 |
차이점으로는 다른 서버 프로그램과는 달리 바닐라 서버를 목적으로 한 프로그램이 아니며 모든 것을 직접 구현하도록한[59] 장르서버 특화의 오픈소스 서버 빌딩 라이브러리이다. 주요 Bukkit API 구현 서버 프로그램들처럼 미리 컴파일된 파일을 실행만 하면 끝나는 게 아니라는 뜻이기 때문에 일반적인 사용자는 이용하지 않는 것이 좋다. 최신버전만을 지원하지만, 번지코드나 Velocity 같은 프록시 프로그램도 지원하기 때문에 프록시 플러그인을 이용하여 간접적으로 이전버전에서의 접속을 허용할 수 있다.
7.3.6. Cuberite
Cuberite (큐브라이트) | |
API | Cuberite API |
지원 로더 | 큐브라이트 플러그인 |
지원 버전 | 1.8 ~ 1.12.2 |
라이선스 | Apache License 2.0 |
웹사이트 | 공식 홈페이지, 깃허브 |
7.3.7. Glowstone
Glowstone (글로우스톤) | |
API | GlowKit API, Bukkit API, Spigot API, Paper API |
지원 로더 | 글로우킷 플러그인, 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인 |
지원 버전 | 1.12.2, 1.14 ~ 1.16[61], 1.19 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | # |
각 월드마다 개별의 멀티 쓰레드로 동작하기 때문에 단일 쓰레드로 동작하는 다른 서버와 비교했을 때 서버에 걸리는 부하가 적을 것이다. 다만, 서버의 모든 요소들을 자체 구현했기 때문에 아직 기본적인 게임 기능마저 덜 구현되었다.[62]
7.3.8. MCHPRS
Minecraft High-Performance Redstone Server (마인크래프트 고성능 레드스톤 서버) | |
API | MCHPRS API |
지원 버전 | 1.18.2 |
웹사이트 | Github, 홈페이지 |
레드스톤 컴파일러라는 시스템이 있어 레드스톤의 연산 속도가 비약적으로 빨라지게 된다. 이 영상과 같이 엄청난 연산이 필요한 레드스톤 장치를 만드는데 쓰인다.
7.4. 플러그인 API + 모드
일명 하이브리드 서버(Hybrid Server). 아래 있는 구현체들은 Forge/Fabric 모드와 Bukkit API 또는 자체 API 플러그인들 혹은 다른것들까지 동시에 지원하는 구현체들이다. 하지만 계면활성제 없이 차가운 물과 뜨거운 기름을 섞고 그걸로 집을 짓는 수준의 난이도라 호환되지 않을 가능성이 매우 높고 버그가 극도로 많다.
Bukkit API의 경우 모드들이 추가하는 기능들을 Bukkit API쪽에서 다루기 까다롭게 설계되어 있는 데다 모드가 게임 시스템을 완전히 뒤바꾸어 버릴 경우 바닐라 시스템을 기준으로 설계한 Bukkit API 쪽에서 오류를 내뿜을 것이다. 당연히 호환을 시도하는 서버 프로그램들은 불안정할 수밖에 없다. 게다가 커뮤니티 지원을 받을 가능성이 낮아져 문제가 생겨도 본인 스스로 해결해야 하는 경우가 많다. 그나마 SpongeForge는 처음부터 포지 모드 형태로 개발되었고, API도 다시 설계되어 사정이 나은 편이다.
7.4.1. SpongeForge
SpongeForge (스펀지포지) | |
API | Sponge API, Forge API |
지원 로더 | 스펀지 플러그인, 포지 모드 |
지원 버전 | 1.8~1.12.2, 1.16.5, 1.19.4, 1.20.6, 1.21.1 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드 페이지[63] |
포지 서버에서의 모드로 동작하는 특성상 포지 서버에 SpongeAPI 기반 플러그인을 추가 할 수 있게 해 준다. 설치 방법은 스펀지 공식 문서를 참고하도록 하자.[65] 또한 클라이언트에도 역시 적용 가능하다.
7.4.2. Sinytra Connector
Sinytra Connector (시나트라 커넥터) | |
API | Forge API(1.20.1), NeoForge API(1.21~), Fabric API |
지원 로더 | 포지 모드(1.20.1), 네오포지 모드(1.21~), 패브릭 모드 |
지원 버전 | 1.20.1, 1.21 |
모드로더 | 네오포지(1.21~) 포지(1.20.1) 47.1.3 버전 |
다운로드 | Sinytra Connector Forgified Fabric API Connector Extras권장 |
웹사이트 | 디스코드 깃허브 |
7.4.3. CatServer
CatServer (캣서버) | |
API | Bukkit API, Spigot API, Paper API, Forge API |
지원 로더 | 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인, 포지 모드 |
지원 버전 | 1.12.2, 1.16.5, 1.18.2 |
웹사이트 | 공식 홈페이지, 깃허브 |
7.4.4. Arclight
Arclight (아크라이트) | |
API | Forge API, Bukkit API, Spigot API |
지원 로더 | 포지 모드, 버킷 플러그인, 스피곳 플러그인 |
지원 버전 | 1.14~1.16[67] 1.20~1.21.1 |
웹사이트 | 깃허브 |
공식 다운로드 | 1.19.4 |
7.4.5. Mohist
Mohist (모히스트) | |
API | Forge API, Bukkit API, Spigot API, Paper API |
지원 로더 | 포지 모드, 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인 |
지원 버전 | 1.7.10[69], 1.12.2~ 1.20.2 |
웹사이트 | 공식 홈페이지 깃허브 |
1.7.10의 경우 지원이 중단되어 CrucibleMC 를 사용해야 한다.CatServer 처럼 포지와 스피곳을 모두 호환하는 구현체이다. 호환성이 완벽하지 않아 일부 필수급 플러그인은 자체적인 패치가 진행된 플러그인으로 변경한다.[70] 그러나 1.12.2 버전에선 CatServer 다음으로 가장 호환성이 좋다.[71] 1.18.2버전에서는 현재 일부의 명령어가 작동을 안하며 오류 구문이 자주 뜨고 심지어 일부 공식 플러그인을 일일이 확인하고 바꿔치기 하는 수상한 행동이 발각되어 EssentialsX 등의 커뮤니티에서는 사용하지 말 것을 권고하기도 했다.#
7.4.6. Cardboard
Cardboard (카드보드) | |
API | Fabric API, Bukkit API, Spigot API, Paper API |
지원 로더 | 패브릭 모드, 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인 |
지원 버전 | 1.16.5 ~ 1.21.1 |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드 |
7.4.7. Banner
Banner (베너) | |
파일:bannerLogo.png | |
API | Fabric API, Bukkit API, Spigot API, Paper API |
지원 로더 | 패브릭 모드, 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인 |
지원 버전 | 1.19.4~ 1.21.3 |
웹사이트 | 공식 홈페이지 깃허브 |
Mohist에서 만든 하이브리드 구현체이다. 공식 홈페이지에 Beta 라고 적혀있는 만큼 불안정[72]하다.
7.5. 다중 서버용 프록시 서버
아래 서버 프로그램들은 마인크래프트 서버들 간 이동을 할 수 있게 해주는 서버 프로그램들이다. 이 서버 프로그램들은 그 자체로 절대 마인크래프트 서버가 아니다.Bungeecord와 Waterfall은 모두 보안 상 문제가 있어[73] BungeeGuard와 같은 보안 플러그인을 프록시와 마인크래프트 서버 둘 다 적용해야한다. BungeeGuard의 경우 여기서 설치 방법을 확인 할 수 있다.
무조건 BungeeGuard만을 이용할 필요는 없다. Velocity의 경우 Modern Forwarding 설정을 이용하면[74] BungeeGuard가 필요 없다.
7.5.1. BungeeCord
BungeeCord (번지코드) | |
API | BungeeCord API |
지원 버전 | 1.4.7~1.19.4, 1.21 |
라이선스 | All Rights Reserved |
공식 다운로드 | 깃허브, 다운로드, 공식 위키 |
7.5.2. Velocity
Velocity (벨로시티) | |
API | Velocity API |
지원 버전 | 1.7.2~1.21 |
지원 서버 | Paper, Spigot, SpongeVanilla, Fabric[75], Forge(1.7.2~1.12.2, 1.13~1.20.1, 1.20.2 ~)[76] |
라이선스 | GPL v3 |
공식 다운로드 | 깃허브, 다운로드, 공식 문서 |
기존 번지코드 플러그인들은 Snap 플러그인을 통해 불러올 수 있으나 아직 불안정하다는 문제점이 있다.
7.6. 지원 종료된 프로젝트
여기 서술되어 있는 구현체 중 1.7 이상 버전에서 2021년 12월 10일 이전에 개발이 중단되거나 그 이후 log4j 취약점 패치를 받지 못한 구현체는 절대 쓰면 안된다.Spigot, Paper는 지원 중단된 버전도 이 패치만은 추가로 적용시켜 주었다. 1.7.10을 제외하고.[77]
1.7 미만 버전들은 log4j 취약점 말고 다른 취약점이 많으니 사용하지 않는 것을 권장한다.
7.6.1. hMod
hMod |
API | hMod API |
지원 중단 사유 | 핵심 개발자(hay0)의 관심 감소 |
대체 서버 프로그램 | Paper |
지원 버전 | Alpha ~ Beta_1.4 |
라이선스 | 알 수 없음 |
웹사이트 | 공식 홈페이지, Github |
그러나 핵심 개발자가 hMod에 관심이 떨어져 자연스레 업데이트가 중단되었다.
7.6.2. CraftBukkit
CraftBukkit (크래프트버킷) | |
API | Bukkit API |
지원 로더 | 버킷 플러그인 |
지원 중단 사유 | DMCA |
대체 서버 프로그램 | Spigot, Paper |
지원 버전 | Beta_1.2_01 ~ 1.7.10 |
라이선스 | GPL v3 |
웹사이트 |
일반적으로 불리는 버킷은 이 서버 파일이다. 그러나 한국에서는 포지 버킷, 패브릭 버킷 등 잘못된 용어 사용이 퍼져있다. 버킷은 Bukkit API만을 지칭하는 의미지, '서버 소프트웨어 = 버킷'이 아니다.
참고로 Spigot 팀이 관리하는 CraftBukkit은 Spigot 소프트웨어를 만드는 과정의 한 단계일 뿐이며, 지원되지 않고 내부에서만 사용된다. 서버로서의 동작은 문제 없지만 순전히 개발 목적만 사용해야 하며, 서버를 관리/운영할 생각이 있다면 CraftBukkit 보다는 Spigot, Paper를 쓰는 것이 훨씬 더 좋은 선택이다. 그 이유는 여기(영어) 참고.
7.6.3. Tuinity
Tuinity (튜이니티) | |
API | Bukkit API, Spigot API, Paper API, Tuinity API |
지원 중단 사유 | Paper와 병합 |
대체 서버 프로그램 | Paper |
라이선스 | GPL v3 |
지원 버전 | 1.15.2~1.16.3[78], 1.16.4 ~ 1.17 |
웹사이트 | 깃허브 |
7.6.4. Airplane
Airplane (에어플레인) | |
API | Bukkit API, Spigot API, Paper API, Tuinity API |
지원 중단 사유 | 개발 및 관리 인력 부족[82] |
대체 서버 프로그램 | Purpur[83] |
라이선스 | GPL v3[84], MIT[85] |
지원 버전 | 1.16, 1.17 |
웹사이트 | 깃허브 |
7.6.5. TacoSpigot
- 이름 : TacoSpigot
- 한글 이름 : 타코 스피곳
- API : Bukkit
- 지원 버전 : 1.8.8~1.9.4, 1.10.2~1.12.2[87]
- 지원 로더 : 버킷 플러그인
- 홈페이지 : 현재 없어졌다.
- 라이선스 : GPL v3
- 최신 버전 : 설치 가능 사이트
- 추가 설명 : 페이퍼를 기반으로 만들어진 구현체이다. 페이퍼의 여러 문제점들을 해결했다고 자칭하는데... 그건 1.8.8 ~ 1.9.4 서버 한정이다. 1.8.8~1.9.4 서버의 경우 페이퍼보다 더 오래 지원되었고, 많은 버그 수정이 있었지만 2018년에 개발이 중단되면서 1.12.2의 경우 2019년 중반까지 개발된 페이퍼보다 더 안좋다.
7.6.6. Thermos
- 이름 : Thermos
- 한글 이름 : 써모스
- API : Bukkit
- Log4j 취약점 수정 여부: 수정되지 않음.
- 지원 로더/플러그인 : 버킷 플러그인, 포지 모드
- 마지막 버전 : 1.7.10-R0.2
- 라이선스 : GPL v3
- 다운로드 링크 : 링크
- 추가 설명 : 1.7.10에서 가장 안정적으로 알려졌던 버킷 플러그인/포지 모드 를 지원했던 구현체였다. 현재는 개발이 중단되었다.
이 구현체는 Log4j 취약점이 수정되어있지 않다. 사용하지 않는 것을 강력하게 권장한다.
7.6.7. Cauldron (MCPC+)
Cauldron[88] (콜드론) | |
API | Bukkit API, Forge API |
지원 중단 사유 | DMCA |
지원 로더 | 버킷 플러그인, 포지 모드 |
지원 되었던 버전 | 1.2.5~1.7.10-R0.2 |
관련 웹사이트 | 미러 |
7.6.8. Kettle
- 이름: Kettle
- 한글 이름 : 케틀
- API: FML, Bukkit API, Spigot, Paper API, Sponge
- 지원 로더 : 버킷 플러그인, 스피곳 플러그인, 페이퍼 플러그인, 포지 모드, 스펀지 플러그인
- 관련 웹사이트 : https://github.com/KettleFoundation/Kettle
- 라이선스 : GPL v3
- 마지막 버전: 1.12.2 HEAD-a8543ec
- 추가 설명: Cat Server 처럼 모드와 플러그인을 동시에 지원하는 구현체다. 지금은 개발이 종료되었다.
7.6.9. Yatopia
- 이름 : Yatopia
- API : Bukkit
- 지원 중단 사유 : 호환성 문제 및 개발자들의 단체 이탈
- 지원 버전 : 1.16.2~1.16.5
- 지원 로더 : 버킷 플러그인
- 라이선스 : GPL v3
- 홈페이지 : 깃허브
공식 다운로드[89] - 추가 설명 : Tuinity를 포크하고 다수의 Paper[90] 포크와 Fabric 모드[91]에서 최적화 패치를 가져와 결합한 구현체이다. 여러가지의 최적화 옵션을 사용할 수 있다. 한때 호환성 문제가 심각했던적이 있었지만, 최신버전에서는 일부 고쳐졌음에도 불구하고 Yatopia에 대한 사람들의 시선이 좋지 못하자[92], 결국 개발자들이 단체로 이탈하고 주도 개발자마저 프로젝트를 종료 선언했다.
7.6.10. Waterfall
Waterfall (워터펄) | |
API | BungeeCord API, Waterfall API |
지원 중단 사유 | # |
대체 서버 프로그램 | Velocity |
지원 버전 | 1.11~1.20 |
공식 다운로드 | 깃허브, 다운로드 |
한국 표준시 기준 2024년 3월 27일 새벽 1시 39분에 PaperMC팀이 Waterfall에 대한 공식적인 지원을 종료하겠다고 발표했다.#
7.6.11. SpongeVanilla
SpongeVanilla (스펀지바닐라) | |
API | Sponge API |
지원 로더 | 스펀지 플러그인 |
지원 버전 | 1.8~ 1.21.1 |
라이선스 | MIT |
웹사이트 | 공식 홈페이지, 깃허브 |
공식 다운로드 | 다운로드 페이지 |
8. 사건 사고
자세한 내용은 마인크래프트/EULA 문서 참고하십시오.[1] 용어에 대한 정의는 위키피디아에 나와있다.[2] 압축을 풀면 사용할 수 없다![3] 단, 공유기를 사용 중이라면 공유기의 포트포워딩 설정을 통해 외부로 서버 포트를 개방해야 외부 유저들이 접속할 수 있다.[4] 파일을 더블 클릭하는 것과 같은 행위.[5] MineOS, Crafty Controller 등.[6] "Airplane, Yatopia[82] 공식 디스코드에서 프로젝트의 규모가 지나치게 커져 1인 개발로는 감당하기 어려웠고 추가 인력도 모집하기 어려웠다고 밝혔다.[83] 업데이트 로그에서 볼 수 있듯이 1.17.1 버전에서 Airplane 패치들을 대부분 흡수했다.[84] 패치 한정[85] 패치를 제외한 나머지 파일[86] 접속 자체는 가능하나 다운로드 버튼이 제공되지 않는다.[87] 이 버전들은 차라리 페이퍼를 쓰는 게 낫다.[88] 원래 이름은 MCPC+ 였지만 1.7 업데이트를 진행하면서 Cauldron으로 변경되었다.[89] 다른 웹 사이트로 리다이렉트된다.[90] Akarin, EMC, Origami, Airplane[91] Lithium, Cadmium, Tic-Tacs[92] Paper 개발자의 문서중 하나, 또는 완전히 분리된 문서도 있다. ViaVersion은 완전히 구동되지 않도록 되어있다. (실행은 되지만, 다른 애드온을 꺼버린다.)
java은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
"[7] 데비안 계열은 apt, 레드햇 계열은 dnf 또는 yum, 아치 리눅스 계열은 pacman을 사용한다.[8] 이 폴더는 서버 세계, 로그, 설정 파일이 담길 폴더이므로 신중하게 정하자. 띄어쓰기나 기호가 없는 오로지 영문숫자_ 만으로 된 폴더명을 추천한다.[9] 어떤 구현물을 써야 할 지 모르겠다면 여기를 클릭해서 확인해보자.[10] 예: java -Xms8G -Xmx8G -jar "My Server 1.21.3.jar"[11] Java를 설치했더라도 이 과정에서 Java가 잡히지 않거나, Java가 여러 버전이 깔려 있을 때는 설치된 경로에서 java.exe를 찾아 수동으로 지정해줘야 한다.[12] 플러그인이나 모드가 많거나 동시 접속자가 많으면 더 많은 램을 할당할 필요가 있다. M 대신 G를 사용해 기가바이트 단위로 할당 가능하다. 1G=1024M[13] 경고가 나온다면 무시하고 실행하면 된다.[14] 폴더나 파일이 생성 되지 않는다변 .bat나.cmd 파일을 다시 메모장으로 열어 준 다음 서버 구현체 파일 이름과 메모장에 쓴 파일 이름이 일치한지 확인하면 된다.[15] 한 LG공유기로 예를 들자면 내부 포트를 지정된 범위에서만 선택 가능하다. ex)스타크래프트 1234. 메일 P2P 1555등등등 이런 경우면 여기에 맞게 외부 포트도 설정해주고 윈도우 방화벽도 다시 설정해주어야 하며 서버에서도 설정해주어야 한다.[16] 모뎀일 경우 통신사에 연락해야하는 경우가 많다.[17] 이것 역시 방법이 천차만별[18] 이 사이트에서 베드락 에디션 서버를 테스트하면 포트가 안열려있다고 나오지만 실제 접속해보면 문제 없이 접속되는 경우가 있다. 그리고 테스트할 때는 서버가 실행되고 있어야 한다.[19] 윈도우 방화벽을 열어주어야 랜서버로 같은 공유기 내에서 멀티를 할 수 있는 것이다.[20] 아웃바운드는 내가 접속하는 것, 인바운드는 남이 접속하는 것을 의미한다.[21] 프로그렘을 선택해서 자바로 지정해주어도 된다. jre에 있는 java.exe를 지정하면 된다.[22] 모든 로컬 포트로 설정해도 되지만 포트를 적게 열어두는 것이 그나마 보안에 도움이 된다.[23] 1000-2000이런 식으로 범위로 지정해주어도 된다. 다만 그 범위에 설정한 포트가 포함되어 있어야 된다.[24] 한번 다르게 설정되었다면 아래 방법으로 해결될때 까지 절대 문제가 해결되지 않는다. 환장할 노릇[25] 일반인도 .kr이 들어간 도메인을 사용할 수 있다. 국가기관은 go.kr을 사용하며 go.kr은 일반인이 사용하지 못한다.[26] no-ip는한달에 한 번 갱신하여야 도메인을 계속 사용 할 수 있는데 비용은 무료이다. 기간이 다가오면 메일이 오니 참고하자[27] MCV.KR은 no-ip와 다르게 한달에 한 번 갱신을 할 필요가 없고, SRV레코드 까지 지원하며, 현재는 무료 DDoS 방어 연결 서비스를 재공하고 있다.[28] 새벽에만 서버를 운영하는 등.[29] 한때 하이픽셀이 이 호스팅 업체를 통해 운영되었으나 자체 운영으로 전환되었다.[Log4j_미수정] 1.18 이하 버전부터 Log4j 취약점이 수정되어있지 않다.[31] 다만 1.13부터 데이터 팩 기능이 추가되면서 플러그인을 어느정도 대체하는 것이 가능하다.[32] 경제, RPG, 미니게임 등을 모두 배제하고 마인크래프트 본연의 야생 생존만이 유일한 장르인 서버.[33] 또한 비-바닐라 서버에서는 기반암 파괴, 레일 복사 등과 같은 버그들이 자체 패치된 경우가 많아 일일이 서버 설정을 수정해야하는 귀찮은 단점이 있다. 반면 바닐라 서버에서는 버그들을 모두 별다른 설정 없이 재현 가능하기 때문에 야생 유저들에게는 오히려 이런 점이 장점이 될 수도 있다.[34] 기존에 포크한 함수들은 앞으로 지원될 예정이지만 하드포크 이후 버킷/스피곳 측에서 추가한 기능들은 지원을 하지 않을 것이라 밝혔다.[35] 신규 버전의 Paper 업데이트 즉시 이전 버전의 지원은 종료된다.[Log4j미수정] 이 구현체는 1.7~1.8.9의 플레이어가 1.7.10 서버에 들어올 수 있는 구현체이다. 그러나 일반 버전도 ViaVersion이나 ProtocolSupport를 적용하면 최신버전까지도 지원할 수 있다. 단 Log4j 패치가 안되었으므로 위에 있는 필수적인 Log4j 패치 명령문을 cmd 파일에다가 입력해주고 웬만하면 지인들과 플레이할 때만 사용하자.[지원_불가] 이 API 기반 플러그인들의 완벽한 구동을 보장하지 않는다. 이유는 문서 참고.[지원_불가] [지원_불가] [지원_불가] [41] 거의 모든 Bukkit API를 기반으로 하는 플러그인들과 호환되지 않는다. Folia 자체에서 지원되는 API로 코드를 바꿔야 하는데, Folia 전용으로 별도의 플러그인을 제공하는 프로젝트가 거의 없기 때문이다.[42] 이 주소를 git clone으로 복사해 직접 컴파일해야 한다. 공식 다운로드는 API상으로만 제공되며, Paper 팀에서는 가급적이면 이미 컴파일된 파일을 공유하지 말아달라 말하고 있다. 빌드 방법과 다운로드 API 두 가지 모두 모르는 경우 쓰지 않는 것이 권장된다.[43] 기존에는 서버를 돌리는데 1코어만 사용해 코어의 개수가 많아져도 성능의 향상이 없다시피 했다. 그런데 이 구현을 사용하면 코어들을 구역별로 나눠 사용해 더 높은 성능을 낼 수 있는 것이다. 주로 스카이블럭과 SMP처럼 플레이어가 분산된 서버에서 큰 효과를 발휘한다.[44] Fabric, Sponge 등[45] 개발 기간만 따져도 최초 커밋을 기준으로 2024년 7월 기준 약 3년이다. 물론 3년이 짧은 시간은 아니지만 검증된 프로젝트들인 Spigot, Paper가 10년 넘는 역사를 보여주는 것을 보면 상대적으로 짧은 편.[46] Folia 단독으로 확실하게 재현 가능하고 기본 Paper에서 재현되지 않는 경우 GitHub Issue를 생성하여 버그를 신고 할 수 있다.[47] 공식 문서상에서 최소 16 코어(스레드가 아니다.)가 Folia의 성능을 보기에 충분하다고 한다. 그렇다고해서 서버가 아예 안켜지는 것이 아니기에 서버를 여는 것 자체는 가능하다. 다만 플러그인 개발의 용도가 아닌 이상 실제 사용으로 쓰일 일은 거의 없어 보인다.[지원_불가] [49] 예시로 주민 무한 할인 버그 토글이 가능한 villager-infinite-discounts, 제로틱 농장을 활성화 시켜주는 zero-tick-plants.[50] 이곳에서 받을 수 있는 클라이언트 설치파일로 포지서버 설치도 가능하다.[51] 이곳에서 받을 수 있는 클라이언트 설치파일로 포지서버 설치도 가능하다.[52] 인스톨러로 설치 후 모드를 적용하려면 API 파일을 모드 폴더에 넣어야 한다. 모드 폴더는 포지랑 동일하게 mods.[53] 이마저도 일부 버그 한정.[54] 1.8 이전 버전은 BuildTools에서 구할 수 없어 2024년 기준 미리 컴파일된 파일을 직접 찾아야한다. 특별한 이유가 있지 않은 이상 1.8 이상의 버전을 사용하는 것을 권장한다.[55] 과거 깃허브 저장소가 있었으나 DMCA 사건 이후 비활성화 되었다.[56] Git 저장소에 저장되어 있는 소스코드를 내려받아 프로그램을 컴파일하는 방법이다. 윈도우 환경에서는 Git Bash 프로그램을 설치해야 했으나 그냥 CMD에다 쳐도 알아서 Git를 다운받아 진행한다.[57] -jar 과 서버파일.jar 사이 -DIReallyKnowWhatIAmDoingISwear 를 넣으면 20초 기다림 없이 시작할 수 있으나, 아무리 다시 빌드하기 귀찮더라도 계속 업데이트를 해주는 것을 권장한다. 정말로 귀찮은 경우 Paper 사용을 고려해보자.[58] Glowstone보다 더 뛰어난 멀티쓰레드 환경이 구축되어있다. 월드뿐만 아니라 더 많은 부분이 멀티쓰레드로 설계되어있다.[59] 기본적인 게임 요소 또한 예외가 아니여서 라이브러리를 이용해 서버를 시작하면 특정 좌표에 스폰시키는 것과 플레이어 이름에 맞추어 스킨을 입히는 것조차 직접 구현해야하는 모습을 볼 수 있다.[60] 마인크래프트 1.20이 나온 시점에서 여전히 1.12.2까지만 지원할 정도이다.[61] 다운로드는 불가능하지만 Github에서 직접 받아 빌드할 수는 있다.[62] 2018년 초 기준, 마인카트도 구현되지 않았다.[63] 다운받은 파일 이름 끝부분은 Forge 호환버전을 의미한다.[64] sk89q, Craftbukkit 시절 WorldEdit 플러그인으로 유명해진 개발자. 현재 스펀지 개발에서 손을 뗀 상태.[65] 스펀지 공식 문서는 오픈 소스이며, 누구든지 번역에 참여할 수 있다.[66] -EssentialsX 개발자[67] 지원 종료[68] 최신 마인크래프트 버전도 패치하지 않으면 지원되지 않는 WorldEdit, Skript 등 플러그인도 완벽히는 아니지만 다른 하이브리드 구현체보단 잘 작동한다. 또한 자체적인 시스템을 추가하여 모드의 월드를 플러그인에 호환되도록 변환하는 시스템도 있다.[69] log4j 취약점이 수정된 업데이트가 출시되었다.[70] 이 플러그인 패치는 Mohist에서 해당 플러그인을 포크한 Github 에서 다운받아온다. 다만 이러한 방식이 플러그인의 원 제작자들 사이에서 큰 논란이 되었는데, 자세한 내용은 후술.[71] 이 버전과 1.16.5를 제외한 나머지는 깃허브에서 대놓고 안정성이 낮다고 나와있으니 해당 버전에서는 다른 서버 프로그램을 사용하는 것을 추천한다.[72] 공식 깃허브에서도 Cardboard를 대안으로 추천할 정도이다.[73] 예시로 UUID 스푸핑이 있다. 자세한 설명은 이곳 참고.[74] Paper 1.13이상을 요구하며, Fabric의 경우 FabricProxy-Lite가 필요하다.[75] 문서 참조[76] 1.13~1.20.1 이용을 원할시 공식 문서를 참고하는 것이 권장된다.[77] 후술할 Craftbukkit의 DMCA 사건 때문에 1.7.10 이하는 패치하고 싶어도 못 한다고 한다.[78] 1.15.2, 1.16.1, 1.16.3[79] 아카이브를 제외한 모든 다운로드 링크가 막혔다.[80] 청크 생성 속도, 빛 관련 성능에서 체감이 크다.[81] Purpur,