Minecraft 플러그인 packetevents
packetevents와 확인된 서버에 대한 정보
🔌 PacketEvents 소개
PacketEvents는 Minecraft Java Edition용 프로토콜 라이브러리로, 원시 프로토콜 패킷을 가로채고, 검사하고, 취소하고, 전송할 수 있는 API를 제공합니다. 서버/프록시에서 독립형 플러그인으로 사용할 수도 있고, 다른 플러그인과 모드의 라이브러리 의존성으로 포함할 수도 있습니다.
🎯 목적
플러그인 및 모드 개발자에게 안정적인 멀티플랫폼 패킷 레이어를 제공하여, Netty의 저수준 코드를 직접 작성하거나 버전별 프로토콜 구현을 여러 개 따로 유지하지 않고도 Minecraft 프로토콜 패킷(login, play, status, handshake 등)에 반응하고 조작할 수 있게 하는 것입니다.
⚙️ 기능
- 들어오고 나가는 패킷에 대한 이벤트 기반 패킷 가로채기(receive/send 이벤트 및 프로토콜 레벨 이벤트).
- 서버/클라이언트가 처리하기 전에 패킷을 취소하거나 수정할 수 있는 기능.
- 프로그래밍 방식으로 패킷을 전송하고 시뮬레이션할 수 있는 API.
- 깔끔한 라이프사이클: PacketEvents 인스턴스를 create/load/init/terminate하여 적절하게 리소스를 관리.
- 멀티 모듈 지원: 공통 플랫폼용으로 별도 빌드/모듈을 제공해 동일한 API가 다양한 서버/프록시/모드 환경에서 동작.
- 공개된 Javadocs와 Maven/Gradle 사용을 위한 개발자 설정 문서 제공.
🧩 대상
- 프로토콜 수준 접근(패킷 전송, 시뮬레이션, 수정)이 필요한 플러그인 및 모드 개발자.
- 패킷 가로채기가 필요한 플러그인의 의존성으로 PacketEvents를 설치하는 서버 운영자.
🏗️ 사용 예시
- 플러그인이 packet listener를 등록하고 특정 들어오는 패킷을 취소해 기본 처리를 막는 경우.
- 모드가 클라이언트에 합성 패킷을 보내 서버 측 엔티티 변경 없이 커스텀 시각 효과나 UI를 만드는 경우.
- 프록시 플러그인이 커스텀 인증 흐름을 위해 login/handshake 패킷을 처리하는 경우.
⚙️ 설치
📥 설정(서버 운영자)
- 공식 플러그인 JAR를 다운로드해 서버/프록시의
plugins/(또는 이에 준하는) 디렉터리에 넣습니다. - 서버/프록시를 재시작하고 로그를 확인해 PacketEvents가 올바르게 로드되었는지 확인합니다.
🛠️ 개발자용(빌드 설정)
PacketEvents는 플랫폼별 모듈로 배포됩니다. 문서에는 Maven/Gradle 예시가 나와 있으며, 라이브러리는 provided/compileOnly 범위로 추가하는 것이 의도되어 있습니다. 문서에서는 모듈 이름에 대한 placeholder를 사용하므로, 의존성을 추가할 때 대상 플랫폼 모듈(예: spigot, velocity, bungeecord, fabric, sponge)로 바꿔 주세요.
예시(공식 문서의 Gradle 스니펫):
// INSERT_MODULE_HERE를 지원되는 모듈 이름(spigot, velocity, bungeecord, fabric, sponge)으로 바꾸세요
compileOnly("com.github.retrooper:packetevents-~~INSERT_MODULE_HERE~~:2.12.1")
플러그인/모드에서 라이브러리 라이프사이클 메서드(load -> init)를 호출하고, 플러그인이 비활성화될 때 종료하세요.
🧠 기술 참고
- 공식 제공 모듈에는 Spigot, Velocity, BungeeCord, Fabric, Sponge가 포함됩니다.
- 프로젝트 설명에 따르면 Spigot 모듈은 Paper, Purpur, Folia 같은 널리 사용되는 fork에서 동작하도록 설계되었고, BungeeCord 모듈은 Waterfall에서 동작하도록 되어 있습니다.
- 프로젝트는 소스, 릴리스, Javadocs와 함께 공개되며 GPL-3.0 라이선스를 따릅니다.
- 번들링을 원하지 않는 경우 플러그인 빌드에는
provided/compileOnly범위로 추가하는 것이 의도되어 있으며, 플러그인이 PacketEvents를 배포물에 포함하는 경우의 번들링 지침도 문서화되어 있습니다.
🤝 이 플러그인이 유용한 경우
커스텀 인증, 패킷 기반 효과, 프록시 처리, 저수준 통합 등 Minecraft 프로토콜을 직접 제어해야 한다면, PacketEvents는 멀티플랫폼 API와 라이프사이클 관리를 제공해 서버나 프록시 구현마다 프로토콜 처리를 다시 작성하지 않고도 이러한 기능을 만들 수 있게 해줍니다.
- Netherlite is loading...550.59
- Froggie
보호된 클레임, 플레이어 상점과 경매가 있는 경제 시스템, 여러 버전 지원, 그리고 Java–Bedrock 크로스플레이를 제공하는 친근한 서바이벌 SMP로, 캐주얼 빌더와 커뮤니티에 적합합니다.
350.21 - LilBoxPvP
BoxPvP에 초점을 맞춘 서버로, 빠른 아레나 전투, 듀얼, 시즌별 진행을 제공합니다. 커스텀 아이템, NPC 기반 메뉴, 그리고 아마도 Java–Bedrock 크로스플레이를 지원합니다.
449.37 - A Minecraft Server148.26
- TGG Online
FPS 스타일의 한국 Minecraft 서버로, 좀비 서바이벌과 bomb/escape 미니게임을 제공하며 다양한 커스텀 무기, 커스텀 모델, 리소스 팩 기반의 경험을 제공합니다.
1747.74 - Racsu Planet
스킬, 퀘스트, 커스텀 던전, 그리고 공식 스토어와 커뮤니티 허브가 뒷받침하는 게임 내 경제를 갖춘 크로스플레이 서바이벌 MMORPG(Java + Bedrock).
247.05 - AnarchyLands CZ/SK145.74
플러그인 packetevents 페이지에는 모니터링에서 이 플러그인을 확인한 서버, 사용 중인 플랫폼과 버전이 표시됩니다.
플러그인은 명령어, 경제, 보호, 접근 권한, 미니게임, 연동 및 기타 메커니즘을 추가할 수 있습니다. packetevents의 실제 역할은 서버별 설정에 따라 다릅니다.
데이터는 서버의 기술 응답에서 자동으로 생성됩니다. 서버가 플러그인 목록을 비공개로 설정한 경우, packetevents을 사용하더라도 이 섹션에 표시되지 않을 수 있습니다.
packetevents을 사용하는 서버 목록을 통해 프로젝트를 비교하거나, 지원 버전을 확인하거나, 공개 서버에서의 플러그인 사용 사례를 찾을 수 있습니다.