가이드

Minecraft GUI 메뉴 플러그인 만드는 법

2026년 10월 18일 업데이트

서버 메뉴(워프, 상점, 키트, 설정)는 플러그인이 열고 제어하는 상자 인벤토리예요. 각 칸에는 버튼 역할을 하는 아이템이 들어가요. 단순해 보이지만, 모든 종류의 클릭을 취소하지 않는 메뉴는 플레이어가 버튼을 가져가 버리게 해요. 이 가이드는 메뉴가 작동하는 방식과 메뉴를 만들고 테스트하는 방법을 다뤄요.

이 예시로 시작하세요.

Codexe로 이걸 생성하기

단계별 안내

  1. 1.메뉴 스케치하기

    상자 메뉴는 9칸짜리 줄이 1~6줄(9~54칸)이에요. 어느 칸에 어떤 아이템이 들어가는지, 클릭하면 무엇을 하는지, 유리판처럼 장식일 뿐인 칸은 어디인지 적으세요.

  2. 2.홀더로 인벤토리 만들기

    직접 만든 InventoryHolder 클래스를 써서 Bukkit.createInventory(holder, size, title)로 여세요. 플러그인은 홀더를 보고 클릭이 일반 상자가 아니라 자기 메뉴에서 일어났다는 걸 알아요.

  3. 3.클릭 처리하기

    InventoryClickEvent에서 홀더를 확인하고, 이벤트를 취소한 다음, 그 칸의 동작을 실행하세요. 동작이 끝나면 메뉴를 닫거나 새로 고치세요.

  4. 4.아이템을 옮기는 다른 모든 방법 막기

    InventoryDragEvent도 취소하고, 메뉴가 열려 있는 동안의 Shift 클릭, 숫자 키, 플레이어 자신의 인벤토리 클릭도 처리하세요.

  5. 5.목록이 길면 페이지 추가하기

    한 화면에 들어가지 않는 워프나 상점 아이템은 맨 아래 줄을 이전, 다음, 닫기 버튼용으로 비워 두세요.

  6. 6.명령어로 열기

    예를 들어 /warps로 열거나, 아이템이나 NPC로 열어요. 모두를 위한 메뉴가 아니라면 명령어에 권한을 지정하세요.

  7. 7.빌드하고 하나하나 클릭해 보기

    Codexe가 플러그인을 컴파일하게 하고, 테스트 서버에 접속해서 모든 버튼을 클릭해 보세요. 테스트 플레이어가 대신 메뉴를 열고 칸을 클릭해 줄 수도 있어요.

메뉴를 안전하게 지키는 규칙

  • 메뉴는 제목이 아니라 홀더로 식별하세요. 제목은 이름을 바꾼 아무 상자로나 따라 할 수 있어요.
  • 다른 일을 하기 전에 클릭부터 취소하세요. 그래야 동작에서 오류가 나도 아이템이 플레이어 커서에 남지 않아요.
  • 플레이어 인벤토리에서의 드래그와 Shift 클릭을 취소하세요. 그렇지 않으면 아이템이 메뉴 안으로 밀려 들어올 수 있어요.
  • 칸에 있는 아이템을 믿지 마세요. 동작은 칸 번호나 아이템의 태그로 찾으세요.
  • 느린 작업(데이터베이스 읽기, 웹 요청)은 메인 스레드 밖에서 실행하고, 끝나면 메뉴를 업데이트하세요.

설정 파일로 만드는 메뉴

서버 운영자는 새로 빌드하지 않고 메뉴를 바꾸고 싶어 해요. 메뉴마다 크기, 제목, 그리고 버튼별로 칸, 재료, 이름, 설명, 동작을 설정 파일에 정의하도록 요청하세요:

키예시하는 일
size27칸 수, 9의 배수
slot13버튼이 들어갈 위치, 0부터 셈
materialENDER_PEARL표시되는 아이템
actionwarp:spawn클릭하면 하는 일: 워프, 명령어, 다른 메뉴

설명 예시

"WarpMenu라는 Paper 1.21.4 플러그인. /warps를 입력하면 워프마다 버튼이 하나씩 있는 6줄 메뉴가 열리고, 페이지당 45개, 맨 아래 줄에 이전, 다음, 닫기 버튼. 관리자는 /setwarp <name> <material>로 워프를 추가하고 /delwarp로 삭제해요. 워프를 클릭하면 3초 준비 시간 뒤에 텔레포트하고, 움직이면 취소돼요. 플레이어는 메뉴의 어떤 아이템도 가져가거나 옮길 수 없어요. 워프는 warps.yml에, 메뉴 제목, 버튼 이름, 메시지는 config.yml에 저장."

테스트 플레이어로 메뉴 테스트하기

Codexe의 테스트 플레이어는 메뉴를 열고 칸을 클릭한 뒤, 메뉴가 열렸는지, 메시지가 나왔는지, 아이템이 지급됐는지 확인할 수 있어요. "일반 플레이어가 /warps를 실행하고 0번 칸을 클릭하면 텔레포트 메시지가 보인다"처럼 내 말로 테스트를 추가하면, Codexe가 변경 사항을 전달할 때마다 다시 실행돼요.

질문

1.8에서도 작동하나요?

상자 메뉴는 1.8부터 모든 버전에 있어요. 세부 API(재료 이름, 제목)가 다르니 요청에 버전을 적어 주세요.

대신 Skript로 메뉴를 만들 수 있나요?

네, skript-gui 애드온으로 가능해요. Codexe의 Skript 테스트 서버에는 이 애드온이 설치되어 있어요. 크거나 많이 쓰이는 메뉴라면 플러그인이 더 나아요.

메뉴를 커스텀 텍스처처럼 보이게 할 수 있나요?

아이템이나 인벤토리 배경을 바꾸는 리소스 팩이 있어야만 가능해요. 플러그인 쪽은 똑같아요: 칸, 아이템, 클릭.

내 메뉴 만들기

이 프롬프트는 바로 보낼 수 있는 상태로 열려요:

“WarpMenu라는 Paper 1.21.4 플러그인: /warps로 워프마다 버튼이 있는 6줄 메뉴 열기, 페이지당 45개, 맨 아래 줄에 이전/다음/닫기 버튼, 관리자용 이름과 재료를 받는 /setwarp와 /delwarp, 움직이면 취소되는 3초 텔레포트 준비 시간, 어떤 아이템도 가져가거나 옮길 수 없음, 워프는 warps.yml에, 제목과 메시지는 config.yml에 저장.”

Codexe로 이걸 생성하기
Minecraft GUI 메뉴 플러그인 만드는 법 | Codexe