가이드

BungeeCord 플러그인 만드는 법

2026년 10월 18일 업데이트

BungeeCord 플러그인은 게임 서버가 아니라 서버들 앞에 있는 프록시에서 실행돼요. 플레이어가 접속하고, 서버를 옮기고, 나가는 걸 볼 수 있어서 네트워크 전체 채팅, 스태프 도구, 점검 모드, MOTD, 서버 간 플레이어 이동에 알맞은 곳이에요. 월드나 블록은 없어요. 게임플레이는 백엔드 서버의 플러그인이 맡아요.

명령어를 내 네트워크에 맞게 바꿔 보세요.

Codexe로 이걸 생성하기

단계별 안내

  1. 1.쓰고 있는 프록시 확인하기

    BungeeCord(또는 Waterfall 같은 포크)와 Velocity는 서로 다른 API예요. BungeeCord 플러그인은 Velocity에서 실행되지 않고, 그 반대도 마찬가지예요.

  2. 2.프로젝트 설정하기

    bungeecord-api 의존성을 provided 스코프로 넣은 Maven 또는 Gradle 프로젝트. 실행할 때는 프록시가 제공해요.

  3. 3.메인 클래스 작성

    net.md_5.bungee.api.plugin.Plugin을 상속하는 클래스. onEnable()에서 getProxy().getPluginManager()로 명령어와 리스너를 등록해요.

  4. 4.bungee.yml에 정보 적기

    name, version, main, author. BungeeCord는 plugin.yml도 읽지만, bungee.yml을 쓰면 Spigot 플러그인과 헷갈리지 않아요. 명령어는 파일이 아니라 코드에서 등록해요.

  5. 5.명령어와 리스너 작성

    명령어는 Command를 상속하고, 리스너는 Listener를 구현하며 PostLoginEvent나 ServerSwitchEvent 같은 이벤트용 @EventHandler 메서드를 가져요.

  6. 6.필요하면 백엔드 서버와 통신하기

    프록시는 인벤토리나 월드를 볼 수 없어요. 그런 정보가 필요하면 각 백엔드 서버에 작은 보조 플러그인을 두고 프록시 플러그인과 플러그인 메시지를 주고받게 하세요.

  7. 7.프록시에 설치하기

    .jar를 프록시의 plugins/ 폴더에 넣고, 백엔드 서버가 아니라 프록시를 재시작하세요.

유용한 프록시 이벤트

이벤트발생 시점일반적인 용도
ProxyPingEvent클라이언트가 서버 목록을 새로 고칠 때MOTD, 접속자 수, 점검 메시지
PostLoginEvent플레이어가 프록시에 접속했을 때접속 메시지, 플레이어 데이터 불러오기
ServerConnectEvent플레이어가 서버에 접속하려고 할 때플레이어를 로비로 보내기, 서버 차단
ServerSwitchEvent플레이어가 다른 서버로 옮겼을 때네트워크 전체 "서버 접속" 메시지
PlayerDisconnectEvent플레이어가 네트워크를 떠났을 때데이터 저장, 스태프 알림
ChatEvent플레이어가 채팅 메시지나 명령어를 보낼 때네트워크 채팅, 필터, 스태프 채팅

네트워크를 올바르게 설정하기

  • 플레이어 이름과 UUID가 전달되도록 프록시의 config.yml에서 ip_forward를 켜고, 각 Spigot 또는 Paper 서버의 spigot.yml에서 bungeecord: true를 설정하세요.
  • 백엔드 서버를 online-mode=false로 설정하고, 인터넷에서 직접 접속할 수 없고 프록시를 통해서만 접속되도록 하세요.
  • 플러그인 메시지는 플레이어가 해당 백엔드 서버에 접속해 있을 때만 전달되므로, 아무도 없는 서버로 보낸 메시지는 도착하지 않아요.

설명 예시

"NetUtils라는 BungeeCord 1.21 프록시 플러그인. /lobby는 플레이어를 로비 서버로 보내요. /staffchat <message>(별칭 /sc)는 어느 서버에 있든 netutils.staff 권한이 있는 모두에게 메시지를 보내요. /maintenance on|off는 점검 MOTD를 표시하고 netutils.bypass 권한이 없는 플레이어를 내보내요. 스태프가 서버를 옮기면 스태프 채팅에 접속 메시지. 서버 이름, MOTD, 메시지는 config.yml에."

Codexe로 하기

BungeeCord/Velocity 유형을 고르고, 서로 다른 API이니 어떤 프록시를 쓰는지 적으세요. Codexe는 Maven으로 플러그인을 컴파일하고, 준비 완료 전에 .jar에 올바른 디스크립터가 있는지 확인해요. 요청에 버전이 없으면 BungeeCord API 1.21을 써요. 백엔드 보조 플러그인이 필요하면 별도의 Spigot/Paper 프로젝트로 요청하세요.

지금 체험하기는 아직 프록시 서버를 실행하지 않으니, 프록시 플러그인은 내 네트워크나 백엔드 서버 하나가 연결된 로컬 프록시에서 테스트하세요. BungeeCord 플러그인 생성기도 참고하세요.

질문

BungeeCord 플러그인이 블록이나 인벤토리를 바꿀 수 있나요?

아니요, 프록시는 연결과 메시지만 처리해요. 게임플레이에는 백엔드 플러그인을 쓰고, 둘이 함께 작동해야 하면 플러그인 메시지를 쓰세요.

Velocity에서도 작동하나요?

아니요. Velocity에는 자체 API와 velocity-plugin.json이 있어요. 둘 다 쓴다면 프로젝트를 두 개 만드세요.

채팅에는 프록시 플러그인과 백엔드 플러그인 중 무엇을 써야 하나요?

채팅이 모든 서버의 플레이어에게 닿아야 한다면 프록시 플러그인. 채팅이 한 서버 안에서만 오간다면 백엔드 플러그인.

내 네트워크용 플러그인 만들기

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

“NetUtils라는 BungeeCord 1.21 프록시 플러그인: /lobby로 플레이어를 로비 서버로 보내기, /staffchat(별칭 /sc)로 어느 서버에서든 netutils.staff 권한이 있는 모두에게 메시지 보내기, /maintenance on|off로 점검 MOTD 표시와 netutils.bypass 권한이 없는 플레이어 내보내기, 스태프의 서버 이동을 스태프 채팅에 알림, 서버 이름, MOTD, 메시지는 config.yml에.”

Codexe로 이걸 생성하기
내 네트워크용 BungeeCord 플러그인 만드는 법 | Codexe