Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DiffPerPlayer

플레이어마다 개별 난이도를 설정할 수 있는 Minecraft Paper 서버 플러그인입니다.

핵심 개념: 서버 세계는 항상 하드 모드로 유지됩니다. 플레이어가 받는 피해, 허기 소모, 상태 이상 지속 시간만 개인 난이도에 맞게 조정됩니다. 몹 스폰, AI, 세계 환경은 전혀 건드리지 않습니다.


목차

  1. 동작 방식 요약
  2. 설치 방법
  3. 명령어
  4. 권한(Permission)
  5. 각 난이도별 차이점
  6. 설정 파일 (config.yml)
  7. 플레이어 데이터 파일 (playerdata.yml)
  8. 관리자 사용 예시
  9. 자주 묻는 질문 (FAQ)

동작 방식 요약

항목 설명
서버 세계 난이도 항상 하드 (강제 유지)
몹 스폰 / AI / 환경 플러그인이 건드리지 않음
플레이어가 받는 피해 개인 난이도에 따라 조정
허기로 인한 죽음 개인 난이도에 따라 일정 체력 아래로 내려가지 않음
독·시듦 지속 시간 개인 난이도에 따라 단축 또는 취소
데이터 저장 서버 재시작 후에도 유지

설치 방법

  1. 릴리즈 페이지에서 diffperplayer-1.0.0.jar 파일을 다운로드합니다.
  2. 다운로드한 .jar 파일을 서버의 plugins/ 폴더 안에 넣습니다.
  3. 서버를 시작(또는 재시작)합니다.
  4. 서버가 켜지면 plugins/DiffPerPlayer/ 폴더가 자동으로 생성됩니다.
    • config.yml — 플러그인 설정
    • playerdata.yml — 플레이어 난이도 데이터

요구 사항: Paper 1.21.1 이상, Java 21 이상


명령어

모든 명령어는 /playerdifficulty, /pd, /pdiff 세 가지 이름으로 동일하게 사용할 수 있습니다.


/pd get <플레이어명>

플레이어의 현재 난이도를 확인합니다.

/pd get Steve

결과 예시:

Steve의 난이도: NORMAL

/pd set <플레이어명> <난이도>

플레이어의 난이도를 변경합니다. 난이도는 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

권한(Permission)

권한 노드 기본값 설명
diffperplayer.command OP만 /pd 명령어 기본 접근권
diffperplayer.get OP만 다른 플레이어 난이도 조회
diffperplayer.set OP만 다른 플레이어 난이도 변경
diffperplayer.self 기본 비활성 자기 자신의 난이도를 스스로 변경

diffperplayer.self는 일반 플레이어가 자신의 난이도를 바꿀 수 있게 허용하는 권한입니다. 기본적으로는 비활성화되어 있으므로, 원하는 경우 권한 관리 플러그인(예: LuckPerms)으로 별도 부여해야 합니다.


각 난이도별 차이점

HARD (하드)

바닐라 하드 모드와 완전히 동일합니다. 아무런 보호 효과가 없습니다.

항목
받는 피해 원본 그대로
허기로 죽음 가능 (0 HP까지 내려감)
벌침 독 지속 시간 18초
동굴 거미 독 지속 시간 15초
위더 스컬 시듦 지속 시간 40초

NORMAL (노말)

바닐라 일반 모드와 비슷한 수준으로 피해가 줄어듭니다.

항목
받는 피해 하드 대비 약 ÷1.5
허기로 죽음 불가능 (최소 0.5 하트 유지)
벌침 독 지속 시간 10초
동굴 거미 독 지속 시간 7초
위더 스컬 시듦 지속 시간 10초

EASY (이지)

입문자나 편하게 즐기고 싶은 플레이어에게 적합합니다.

항목
받는 피해 노말보다 추가로 감소
허기로 죽음 불가능 (최소 5 하트 유지)
벌침 독 완전 취소
동굴 거미 독 완전 취소
위더 스컬 시듦 완전 취소

설정 파일 (config.yml)

파일 위치: 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 리셋

플레이어 데이터 파일 (playerdata.yml)

파일 위치: plugins/DiffPerPlayer/playerdata.yml

플레이어 UUID와 난이도가 저장됩니다. 직접 수정도 가능하지만, 서버가 꺼진 상태에서만 편집하는 것을 권장합니다.

players:
  a1b2c3d4-e5f6-7890-abcd-ef1234567890: NORMAL
  b2c3d4e5-f6a7-8901-bcde-f01234567891: EASY
  c3d4e5f6-a7b8-9012-cdef-012345678912: HARD

UUID는 플레이어의 고유 식별자입니다. 닉네임이 바뀌어도 UUID는 유지되므로 데이터가 유실되지 않습니다.


관리자 사용 예시

신규 플레이어 온보딩

새로 온 플레이어가 처음에 어려움을 느낀다면:

/pd set 신규플레이어 easy

익숙해지면 단계적으로 올려줄 수 있습니다:

/pd set 신규플레이어 normal

현재 난이도 확인 후 변경

/pd get Steve

Steve의 난이도: EASY

/pd set Steve normal

Steve의 난이도가 NORMAL로 변경되었습니다.


기본 난이도 변경

config.yml에서 아래 항목을 수정하면, 이후 처음 접속하는 모든 플레이어의 기본 난이도가 바뀝니다:

default-difficulty: EASY

자주 묻는 질문 (FAQ)

Q. 서버 세계 난이도를 평화로움/이지/노말로 바꾸면 어떻게 되나요? 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% 비율은 그대로 적용됩니다.

About

Plugin prompted and coded by LLMs to play Minecraft with noobs

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages