마인크래프트/플러그인 개발
Quest - 범용 퀘스트 플러그인
KUDONG12
2020. 3. 29. 21:10
2021/7/19 추가
예전에 잠깐 만들어본 퀘스트 관련 플러그인
지금 생각하면 구조도 개판이고 스파게티코드에 스레드 관리도 비효율적으로 짠거 투성이다.
이젠뭐 과거의 유물이라 생각하고 남겨두기로 했다.
Quest
마인크래프트 1.15.1 퀘스트 플러그인입니다
Features
- 절차에따라 진행되는 퀘스트 방식
- 플레이어를 위한 퀘스트 GUI 지원
- 퀘스트 공개시간에 대한 타이머 설정가능 (비동기 스레드 작동)
- 게임도중에 종료시 해당지점의 체크포인트까지 세이브 & 서버 리로드시 세이브
- GUI를 통한 퀘스트 통계 및 퀘스트 로그 확인기능 추가
- 퀘스트 완료시 보상시스템 & 퀘스트 정산소 구역 설정 기능 추가
- 원하는 크기로 리사이징을 통한 이미지 OR URL이미지 생성기능(JPG만 지원)
- 여러 퀘스트 플래그 지원
- 백업기능추가(1시간간격)
- Citizens2 연동 지원
Quest
퀘스트를 만들기위해서는 우선 plugins/AldarQuest/images 폴더에 해당 퀘스트 이미지를 넣습니다.
이미지명은 <알파벳>_<숫자> 로 저장해야합니다. 예시: a_1 또는 b_3 또는 c_11 .....
(128X128 사이즈의 이미지를 권장합니다.(Support JPG only))
이미지를 넣으신후 재부팅을 하시면 생성된 Quest.yml에 다음과 같은 섹션이 생깁니다.
<이미지 파일명>:
name: ' '
description: ' '
goal: ' '
reward: ' '
address: ' '
time: 2
path: <이미지 파일명>.jpg
step:
- ' '
- ' '
- ' '
이곳에서 직접 커스텀마이징을 통해서 퀘스트를 만드실수 있습니다.
- name - 퀘스트의 이름 (필수)
- description - 해당 퀘스트의 설명 (필수)
- goal - 퀘스트 목표 (필수)
- reward - 보상 아이템 목록 (필수)
- address - 퀘스트 URL
- time - 퀘스트 공개 시간 (필수) (단위:분)
- path - 파일명 (자동생성)
- step - 퀘스트 진행 순서 (필수)
예시
a_1:
name: '좀비1마리잡기'
description: '좀비를 1마리 잡아주세요'
goal: 좀비1마리를 잡는것이 목표입니다.
reward: test 10
address: ' '
time: 200
path: a_1.jpg
step:
- HUNT 1 ZOMBIE @ 좀비를 1마리 잡으세요
- CHAT1 3 &6[앙기모띠] 좀비 1마리를 잡아주셔서 감사합니다!
- CHAT1 3 &6[앙기모띠] 앙기모띠 npc를 클릭해주세요
- CLICK_NPC 앙기모띠 @ 해당 npc를 클릭하세요
퀘스트 플래그 목록(진행순서)
HUNT
- HUNT <수량> <몹이름> .... @ <설명>
- HUNT 1 skeleton king @ 스켈레톤 킹 1마리를 사냥하세요.
- HUNT 3 pig / 1 zombie @ 돼지3마리와 좀비 1마리를 사냥하세요
일정수의 몹을 잡아야 완료되는 플래그입니다.
- 복수의 몹을 설정할려면 / 을 추가하여 늘릴수 있습니다.
LOCATE
- LOCATE <Location1> <location2> @ <설명>
- LOCATE -241,64,-101,world -245,66,-98,world @ 해당 지역으로 이동하세요
특정 장소에 도달하면 완료되는 플래그입니다.
- location1 좌표와 location2 좌표 사이의 공간으로 설정됩니다.
- location 양식은 <X좌표,Y좌표,Z좌표,월드> 입니다
CLICK
- CLICK <Location> <Clickable Item> @ <설명>
- CLICK -243,65,-115,world LEVER @ 레버를 클릭하세요
버튼이나 레버를 클릭하면 완료되는 플래그입니다.
- location 양식은 <X좌표,Y좌표,Z좌표,월드> 입니다
CHAT1
- CHAT1 <시간(초)> <출력내용>
- CHAT1 3 &6[앙기모띠] 좀비 1마리를 잡아주셔서 감사합니다!
진행될때 상황에따라 원하는 메세지를 출력합니다.
- 액션바를 이용한 문구로 출력됩니다.
- 출력내용은 컬러코드를 지원합니다.
CHAT2
- CHAT2 <시간(초)> <출력내용(주 제목)> @ <출력내용(부 제목:optional)>
- CHAT2 3 &6테스트 문구입니다.
- CHAT2 3 &6[앙기모띠] @ 좀비 1마리를 잡아주셔서 감사합니다!
진행될때 상황에따라 원하는 메세지를 출력합니다.
- 타이틀 형식으로 출력됩니다.
- 부제목을 추가할려면 @ 을 추가하여 늘릴수 있습니다.
- 출력내용은 컬러코드를 지원합니다.
CLICK_NPC (시티즌 연동 필수)
- CLICK_NPC <Npc이름> @ <설명>
- CLICK_NPC 앙기모띠 @ 해당 npc를 클릭하세요
- NPC를 오른쪽 클릭시 완료되는 플래그입니다.
GIVE_NPC (시티즌 연동 필수)
- GIVE_NPC <Npc이름> <수량> <아이템 이름> @ <설명>
- GIVE_NPC 앙기모띠 3 테스트용 칼 / 3 테스트용 스틱 @ 테스트용 칼3개와 태스트용 스틱 3개를 앙기모띠에게 전달해주세요
NPC를 오른쪽 클릭시 요구하는 수량의 아이템을 가지고 있으면 NPC에게 아이템을 주는 플래그입니다.
- 복수의 아이템을 설정할려면 / 을 추가하여 늘릴수 있습니다.
Commands
<일반사용자>
/q
- 퀘스트 패널을 엽니다.
<관리자>
/aq open
- 퀘스트 보상 정산소를 엽니다.
/aq log <퀘스트이름>
/aq log a_1
- 현재 진행중인 퀘스트의 로그를 확인합니다.
/aq create <이름>
- 퀘스트 보상 정산소를 생성합니다. (이전에 나무삽을 통한 좌표 설정이 필요합니다.)
/aq remove <이름>
- 퀘스트 보상 정산소를 삭제합니다.
/aq reload
- 퀘스트 이미지를 리로드 합니다.
/c <filename(.jpg생략)> <height> <width>
- 플레이어가 바라보는 방향의 1칸 앞으로 해당 사이즈의 이미지를 생성합니다.
/cu <url> <height> <width>
- 플레이어가 바라보는 방향의 1칸 앞으로 해당 사이즈의 URL 이미지를 생성합니다.
/board <@NotNULL 이름> <플래그>
- 여러 퀘스트가 담긴 보드를 생성합니다. (반드시 나무삽을 통한 좌표설정이 선행되어야합니다. 또한 명령어 입력시 설치될 방향을 바라보고 있어야합니다.)
Reward
rewards.yml 을 통해서 보상아이템을 만들거나 수정하실수 있습니다.
예시
test:
item: DIAMOND_SWORD
dname: 테스트용 칼
lores:
- 안녕
- 하세요
- ㅋㅋ?
slot: mainhand
attr:
- generic.attackDamage 600
- generic.maxHealth 200
- test - 보상 이름 (아무 이름이나 가능합니다 예시로 test란 이름을 사용했습니다.)
- dname - 아이템의 displayname
- item - 아이템 이름
- lores - 아이템 설명
- slot - 아이템 적용범위 (mainhand,offhand,feet,legs,chest,head)
- attr - 아이템 속성 https://minecraft.gamepedia.com/Attribute 참조