플레이어마다 개별 난이도를 설정할 수 있는 Minecraft Paper 서버 플러그인입니다.
핵심 개념: 서버 세계는 항상 하드 모드로 유지됩니다. 플레이어가 받는 피해, 허기 소모, 상태 이상 지속 시간만 개인 난이도에 맞게 조정됩니다. 몹 스폰, AI, 세계 환경은 전혀 건드리지 않습니다.
- 동작 방식 요약
- 설치 방법
- 명령어
- 권한(Permission)
- 각 난이도별 차이점
- 설정 파일 (config.yml)
- 플레이어 데이터 파일 (playerdata.yml)
- 관리자 사용 예시
- 자주 묻는 질문 (FAQ)
| 항목 | 설명 |
|---|---|
| 서버 세계 난이도 | 항상 하드 (강제 유지) |
| 몹 스폰 / AI / 환경 | 플러그인이 건드리지 않음 |
| 플레이어가 받는 피해 | 개인 난이도에 따라 조정 |
| 허기로 인한 죽음 | 개인 난이도에 따라 일정 체력 아래로 내려가지 않음 |
| 독·시듦 지속 시간 | 개인 난이도에 따라 단축 또는 취소 |
| 데이터 저장 | 서버 재시작 후에도 유지 |
- 릴리즈 페이지에서
diffperplayer-1.0.0.jar파일을 다운로드합니다. - 다운로드한
.jar파일을 서버의plugins/폴더 안에 넣습니다. - 서버를 시작(또는 재시작)합니다.
- 서버가 켜지면
plugins/DiffPerPlayer/폴더가 자동으로 생성됩니다.config.yml— 플러그인 설정playerdata.yml— 플레이어 난이도 데이터
요구 사항: Paper 1.21.1 이상, Java 21 이상
모든 명령어는 /playerdifficulty, /pd, /pdiff 세 가지 이름으로 동일하게 사용할 수 있습니다.
플레이어의 현재 난이도를 확인합니다.
/pd get Steve
결과 예시:
Steve의 난이도: NORMAL
플레이어의 난이도를 변경합니다. 난이도는 easy, normal, hard 중 하나입니다 (대소문자 무관).
/pd set Steve easy
/pd set Alex NORMAL
/pd set Notch hard
결과 예시:
Steve의 난이도가 EASY로 변경되었습니다.
config.yml에서 notify-player-on-change: true로 설정되어 있으면, 난이도가 변경된 플레이어에게도 알림 메시지가 전송됩니다.
명령어 입력 시 Tab 키를 누르면 자동완성이 제공됩니다.
| 입력 위치 | 자동완성 목록 |
|---|---|
| 첫 번째 인자 | get, set |
| 두 번째 인자 | 현재 접속 중인 플레이어 목록 |
세 번째 인자 (set 사용 시) |
easy, normal, hard |
| 권한 노드 | 기본값 | 설명 |
|---|---|---|
diffperplayer.command |
OP만 | /pd 명령어 기본 접근권 |
diffperplayer.get |
OP만 | 다른 플레이어 난이도 조회 |
diffperplayer.set |
OP만 | 다른 플레이어 난이도 변경 |
diffperplayer.self |
기본 비활성 | 자기 자신의 난이도를 스스로 변경 |
diffperplayer.self는 일반 플레이어가 자신의 난이도를 바꿀 수 있게 허용하는 권한입니다. 기본적으로는 비활성화되어 있으므로, 원하는 경우 권한 관리 플러그인(예: LuckPerms)으로 별도 부여해야 합니다.
바닐라 하드 모드와 완전히 동일합니다. 아무런 보호 효과가 없습니다.
| 항목 | 값 |
|---|---|
| 받는 피해 | 원본 그대로 |
| 허기로 죽음 | 가능 (0 HP까지 내려감) |
| 벌침 독 지속 시간 | 18초 |
| 동굴 거미 독 지속 시간 | 15초 |
| 위더 스컬 시듦 지속 시간 | 40초 |
바닐라 일반 모드와 비슷한 수준으로 피해가 줄어듭니다.
| 항목 | 값 |
|---|---|
| 받는 피해 | 하드 대비 약 ÷1.5 |
| 허기로 죽음 | 불가능 (최소 0.5 하트 유지) |
| 벌침 독 지속 시간 | 10초 |
| 동굴 거미 독 지속 시간 | 7초 |
| 위더 스컬 시듦 지속 시간 | 10초 |
입문자나 편하게 즐기고 싶은 플레이어에게 적합합니다.
| 항목 | 값 |
|---|---|
| 받는 피해 | 노말보다 추가로 감소 |
| 허기로 죽음 | 불가능 (최소 5 하트 유지) |
| 벌침 독 | 완전 취소 |
| 동굴 거미 독 | 완전 취소 |
| 위더 스컬 시듦 | 완전 취소 |
파일 위치: plugins/DiffPerPlayer/config.yml
서버를 처음 시작하면 자동으로 생성됩니다. 원하는 항목만 수정 후 저장하면 됩니다. (설정 변경 후 서버 재시작 또는 플러그인 리로드가 필요합니다.)
# =============================================
# DiffPerPlayer 설정 파일
# =============================================
# 서버에 처음 접속하는 플레이어에게 자동으로 부여할 기본 난이도
# 사용 가능한 값: EASY, NORMAL, HARD
default-difficulty: NORMAL
# 모든 세계를 강제로 하드 모드로 유지할지 여부
# true = 세계 설정을 바꿔도 항상 하드로 되돌아옴
# false = 세계 자체 난이도를 그대로 유지
force-world-hard: true
# 관리자가 플레이어 난이도를 변경할 때 해당 플레이어에게 채팅 알림을 보낼지 여부
notify-player-on-change: true
# 디버그 로그 활성화 여부 (문제 해결 시에만 true로 설정 권장)
debug: false
# 플레이어 데이터를 저장할 파일 이름 (경로가 아닌 파일명만 입력)
data-file: playerdata.yml
# =============================================
# 메시지 설정 (색상 코드 사용 가능: & 기호 사용)
# %player% = 플레이어 이름, %difficulty% = 난이도 이름
# =============================================
messages:
difficulty-changed: "&a%player%의 난이도가 &e%difficulty%&a로 변경되었습니다."
difficulty-get: "&b%player%의 난이도: &e%difficulty%"
no-permission: "&c권한이 없습니다."
player-not-found: "&c플레이어를 찾을 수 없습니다: %player%"
invalid-difficulty: "&c올바르지 않은 난이도입니다. easy / normal / hard 중 하나를 사용하세요."
usage: "&c사용법: /pd <get|set> <플레이어> [easy|normal|hard]"| 코드 | 색상 |
|---|---|
&a |
초록 |
&b |
하늘색 |
&c |
빨강 |
&e |
노랑 |
&f |
흰색 |
&6 |
금색 |
&l |
굵게 |
&r |
리셋 |
파일 위치: plugins/DiffPerPlayer/playerdata.yml
플레이어 UUID와 난이도가 저장됩니다. 직접 수정도 가능하지만, 서버가 꺼진 상태에서만 편집하는 것을 권장합니다.
players:
a1b2c3d4-e5f6-7890-abcd-ef1234567890: NORMAL
b2c3d4e5-f6a7-8901-bcde-f01234567891: EASY
c3d4e5f6-a7b8-9012-cdef-012345678912: HARDUUID는 플레이어의 고유 식별자입니다. 닉네임이 바뀌어도 UUID는 유지되므로 데이터가 유실되지 않습니다.
새로 온 플레이어가 처음에 어려움을 느낀다면:
/pd set 신규플레이어 easy
익숙해지면 단계적으로 올려줄 수 있습니다:
/pd set 신규플레이어 normal
/pd get Steve
Steve의 난이도: EASY
/pd set Steve normal
Steve의 난이도가 NORMAL로 변경되었습니다.
config.yml에서 아래 항목을 수정하면, 이후 처음 접속하는 모든 플레이어의 기본 난이도가 바뀝니다:
default-difficulty: EASYQ. 서버 세계 난이도를 평화로움/이지/노말로 바꾸면 어떻게 되나요?
A. force-world-hard: true(기본값)이면 플러그인이 자동으로 하드로 되돌립니다. 의도적으로 세계 난이도를 바꾸고 싶다면 config.yml에서 force-world-hard: false로 설정하세요.
Q. 플레이어가 자기 난이도를 스스로 바꿀 수 있나요?
A. 기본적으로 불가능합니다. LuckPerms 등 권한 플러그인으로 diffperplayer.self 권한을 부여하면 허용됩니다.
Q. 이지 모드 플레이어도 몹에게 죽을 수 있나요? A. 네. 피해가 줄어들 뿐이지 완전히 면역이 되는 것은 아닙니다. 허기로 인한 죽음만 5하트 아래로 내려가지 않도록 보호됩니다.
Q. 데이터는 서버 재시작 후에도 유지되나요?
A. 네. playerdata.yml 파일에 저장되며, 서버 시작 시 자동으로 불러옵니다.
Q. 몇 명의 플레이어 데이터까지 지원하나요? A. 제한 없습니다. 모든 플레이어 데이터는 메모리에 캐싱되어 빠르게 처리됩니다.
Q. 설정 파일을 수정했는데 언제 적용되나요?
A. 서버 재시작 또는 플러그인 리로드(/reload confirm 또는 플러그인 매니저 사용) 후 적용됩니다.
Q. 갑옷이나 저항 효과가 있을 때 피해 감소 계산은 어떻게 되나요? A. 갑옷·저항·인챈트 효과의 비율을 유지한 채로 최종 피해를 조정합니다. 예를 들어 갑옷으로 40% 감소되는 상황이라면, 이지 모드에서도 그 40% 비율은 그대로 적용됩니다.