BKCommonLib는 버거킬러(Bergerkiller)가 개발하는 마인크래프트: 자바 에디션 서버용 라이브러리 플러그인이다. 서버 내부 구현에 직접 접근해야 하는 기능을 호환성 계층으로 감싸고, 설정·패킷·엔티티·지도 표시 등에 쓰이는 공통 API를 제공한다. TrainCarts, MyWorlds, SignLink처럼 같은 개발자가 제작한 여러 플러그인의 선행 플러그인으로 사용된다.[1]

일반 이용자가 독립적인 기능을 사용하기보다는 다른 플러그인이 필요로 하는 기반 구성 요소에 가깝다. 서버 관리자는 의존 플러그인과 함께 설치하고 호환되는 빌드를 유지하면 되며, 개발자는 BKCommonLib의 API를 통해 버전마다 달라지는 서버 내부 코드에 직접 의존하는 범위를 줄일 수 있다.

기능

BKCommonLib가 제공하는 기능은 다음과 같이 나뉜다.[2]

  • YAML 설정 파일, 파일 저장, NBT 태그를 다루는 데이터 저장 API
  • 엔티티의 동작과 클라이언트 표시 방식을 제어하는 엔티티·네트워크 컨트롤러
  • 패킷 처리, 이벤트, 작업 예약, 변환, 점수판과 탭 목록을 위한 서비스
  • 블록·인벤토리·아이템·조합법을 다루는 유틸리티
  • 지도 아이템과 아이템 액자를 화면처럼 사용하는 Map Display API

Map Display는 표시 클래스가 기록된 지도 아이템을 감지해 갱신 루프를 시작한다. 인접한 아이템 액자를 하나의 큰 화면으로 묶을 수 있고, 플레이어의 클릭 위치와 이동 입력을 콜백으로 전달한다. 지도 ID 할당과 보이는 영역의 갱신도 라이브러리가 맡는다.[3]

설치와 관리

  1. 서버 버전에 맞는 BKCommonLib 배포 파일을 내려받는다.
  2. JAR 파일을 서버의 plugins 폴더에 넣는다.
  3. TrainCarts 등 의존 플러그인도 함께 설치한 뒤 서버를 재시작한다.
  4. 시작 로그에서 BKCommonLib와 의존 플러그인이 모두 활성화되었는지 확인한다.

BKCommonLib는 서버 내부 구조를 중개하므로 마인크래프트가 갱신된 직후에는 새 빌드가 필요할 수 있다. 오래된 서버를 쓴다는 이유만으로 오래된 BKCommonLib를 고르는 방식은 적절하지 않으며, 배포 페이지에서 해당 서버 버전을 지원하는 최신 빌드를 확인하는 편이 안전하다. 의존 플러그인도 서로 호환되는 버전으로 맞춰야 한다.[4]

BKCommonLib 자체에는 이용자가 일상적으로 사용할 명령이 많지 않다. 실제 명령과 권한은 TrainCarts나 MyWorlds 같은 의존 플러그인에서 제공한다. 권한 기본값은 JAR 내부의 PermissionDefaults.yml에 계층형으로 선언되며, 필요하면 권한 플러그인에서 이를 덮어쓸 수 있다.[5]

개발자용 API

플러그인 프로젝트에서는 BKCommonLib를 컴파일 의존성으로 추가하고 plugin.ymldepend 또는 softdepend에 관계를 선언한다. 직접 JAR 안에 포함하면 서버에 로드된 BKCommonLib와 클래스가 중복될 수 있으므로 제공 의존성으로 다루는 것이 일반적이다.

API 사용 범위가 넓고 서버 내부와 밀접하므로 예전 예제를 그대로 복사하기보다 현재 소스와 Javadoc에서 메서드 계약을 확인해야 한다. 특히 맵 표시와 엔티티 컨트롤러는 생명주기 콜백을 전제로 하며, Bukkit 객체처럼 임의로 시작·종료하거나 지도 ID를 직접 배정하면 라이브러리의 관리 과정과 충돌할 수 있다.

같이 보기

각주

  1. BKCommonLib, SpigotMC. 2026년 8월 5일 확인.
  2. BKCommonLib, TrainCarts Wiki. 2026년 8월 5일 확인.
  3. Map Display API, TrainCarts Wiki. 2026년 8월 5일 확인.
  4. BKCommonLib 호환성 안내, SpigotMC. 2026년 8월 5일 확인.
  5. Permission Defaults, TrainCarts Wiki. 2026년 8월 5일 확인.

외부 링크