Paper(마인크래프트)
Paper(페이퍼)는 마인크래프트: 자바 에디션 서버를 위한 고성능 서버 구동기이다. Spigot을 기반으로 출발했으며, Bukkit/Spigot 플러그인 호환성을 유지하면서 성능 개선, 버그 수정, 추가 API, 서버 운영 편의 기능을 제공한다. 현대적인 공개 서버나 건축 서버에서는 기본 서버 파일 대신 Paper를 사용하는 경우가 많다.
Paper는 단순히 서버를 빠르게 만드는 도구라기보다 서버 운영 방식 전체와 연결된다. 구동기 버전, Java 버전, 월드 저장 구조, 플러그인 호환성, 설정 파일을 함께 관리해야 안정적으로 운영할 수 있다.
주요 특징
Paper의 주요 특징은 다음과 같다.
- Bukkit/Spigot 플러그인 호환성
- 비동기 청크 작업과 서버 성능 개선
- 다양한 게임플레이 버그 수정
- Paper 전용 API 제공
- 월드별 설정과 세부 최적화 옵션
- 안티엑스레이, 패킷 제한, 타이밍/프로파일링 등 운영 기능
Paper는 기본 서버와 동작이 완전히 같지는 않다. 일부 최적화나 버그 수정은 기존 바닐라 동작과 차이를 만들 수 있으므로, 바닐라와 최대한 같은 경험이 필요한 서버라면 설정을 검토해야 한다.
버전과 Java 요구사항
마인크래프트는 2026년부터 연도 기반 버전 번호 체계를 사용하기 시작했다. 이에 따라 Java Edition과 Bedrock Edition의 2026년 버전은 26.x 형식으로 표기된다.
Paper도 이 변화에 맞추어 26.1 계열부터 새로운 버전 표기 방식을 사용한다. PaperMC 공지에 따르면 26.1 이후의 Paper 빌드는 `<마인크래프트버전>.build.<빌드번호>-<상태>` 형식으로 표기된다. 예를 들어 `26.1.2.build.23-alpha`와 같은 방식이다.
Java 요구사항도 버전에 따라 달라진다.
| Paper/Minecraft 버전 | 권장 Java 버전 |
|---|---|
| 1.20 ~ 1.21.11 | Java 21 |
| 26.1 이상 | Java 25 |
서버를 업데이트할 때는 Paper jar만 교체하지 말고, 서버가 실행되는 Java 버전도 함께 확인해야 한다. Java 버전이 맞지 않으면 서버가 시작되지 않거나 플러그인이 정상적으로 동작하지 않을 수 있다.
설치와 실행
Paper 서버는 PaperMC 다운로드 페이지에서 서버 jar 파일을 내려받아 실행한다. 일반적인 실행 명령은 다음과 같다.
java -Xms4G -Xmx4G -jar paper.jar --nogui
`-Xms`와 `-Xmx`는 서버에 할당할 메모리를 지정한다. 작은 테스트 서버는 적은 메모리로도 실행할 수 있지만, 월드 크기와 플러그인 수, 동시 접속자 수가 늘어나면 더 많은 메모리와 높은 단일 코어 성능이 필요하다.
처음 실행하면 `eula.txt` 파일이 생성된다. EULA에 동의한 뒤 다시 실행하면 기본 월드와 설정 파일이 생성된다.
설정 파일 구조
Paper는 서버 루트와 `config` 폴더에 여러 설정 파일을 만든다. 버전별로 파일 이름과 위치가 달라질 수 있으므로, 설정 예시는 항상 실제 서버 버전에 맞춰 확인해야 한다.
일반적으로 확인할 설정 파일은 다음과 같다.
| 파일 | 용도 |
|---|---|
| `server.properties` | 서버 포트, 월드 이름, 게임 모드, 접속 인원, 뷰 거리 등 기본 서버 설정 |
| `bukkit.yml` | Bukkit 계열 기본 설정 |
| `spigot.yml` | Spigot 계열 호환 설정 |
| `config/paper-global.yml` | Paper 전역 설정 |
| `config/paper-world-defaults.yml` | 월드 기본 설정 |
| `paper-world.yml` | 특정 월드 또는 차원의 Paper 설정 |
Paper 26.1 계열에서는 월드 저장 구조가 변경되었다. 차원 폴더가 서버 루트에 따로 놓이는 방식에서 벗어나, 월드 폴더 안의 `dimensions` 구조로 정리된다. 업데이트 전에는 반드시 전체 월드와 플러그인 데이터를 백업해야 하며, 업데이트 후에는 월드 폴더 구조와 플러그인 호환성을 확인해야 한다.
성능 관리
Paper 서버 성능은 구동기 설정 하나로만 결정되지 않는다. 월드 크기, 청크 생성량, 엔티티 수, 플러그인 동작, 저장 장치 성능, Java 버전, CPU 단일 코어 성능이 함께 영향을 준다.
성능을 관리할 때 자주 확인하는 항목은 다음과 같다.
- TPS와 MSPT
- 청크 로딩과 청크 생성량
- 엔티티와 블록 엔티티 수
- 월드 저장 주기
- 플러그인별 처리 시간
- 지도 렌더링 플러그인의 부하
- 백업 작업 시간
서버가 느려질 때는 무작정 플러그인을 삭제하기보다 프로파일링 결과를 먼저 확인하는 것이 좋다. Paper는 성능 진단을 위해 Spark 프로파일러 사용을 안내하고 있으며, Paper Timings는 과거부터 많이 쓰였지만 최신 환경에서는 Spark가 더 자세한 정보를 제공하는 경우가 많다.
업데이트 시 주의사항
Paper 서버 업데이트는 다음 순서로 진행하는 것이 안전하다.
- 서버를 종료한다.
- 서버 전체 폴더를 백업한다.
- Paper, Java, 주요 플러그인의 지원 버전을 확인한다.
- 테스트 서버에서 먼저 실행한다.
- 월드 변환 또는 설정 파일 변경 사항을 확인한다.
- 로그에 오류가 없는지 확인한다.
- 실제 서버에 반영한다.
한 번 최신 버전으로 열린 월드는 이전 버전으로 되돌릴 수 없는 경우가 있다. 특히 월드 저장 구조가 바뀌는 버전에서는 백업 없이 업데이트하면 복구가 어렵다.
플러그인 개발 관련 변경
Paper는 서버 운영자뿐 아니라 플러그인 개발자에게도 중요한 구동기이다. Paper API를 사용하면 Bukkit/Spigot API만으로는 다루기 어려운 기능을 구현할 수 있다.
26.1 계열에서는 버전 문자열과 빌드 표기 방식이 바뀌었고, Mojang의 서버 jar 난독화 정책 변화도 개발 환경에 영향을 준다. 내부 클래스나 리플렉션에 의존하는 플러그인은 버전 업데이트 때 특히 깨지기 쉽다. 공개 서버에서 사용하는 플러그인은 가능하면 Paper API와 공식적으로 지원되는 API를 기준으로 작성하는 것이 좋다.
피해야 할 사항
운영 중인 Paper 서버에서 다음 행동은 문제가 될 수 있다.
- `/reload`로 플러그인을 다시 불러오기
- 플러그인 데이터 백업 없이 업데이트하기
- 버전이 맞지 않는 플러그인을 강제로 사용하기
- 오류 로그를 확인하지 않고 설정 파일을 계속 수정하기
- 같은 역할의 플러그인을 여러 개 중복 설치하기
- 월드 변환이 필요한 업데이트를 테스트 없이 바로 적용하기