BKCommonLib

Tdb (토론 | 기여)님의 2025년 7월 23일 (수) 02:10 판 (문자열 찾아 바꾸기 - "분류:마인크래프트" 문자열을 "분류:마인크래프트/플러그인" 문자열로)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

BKCommonLib는 BergKiller가 개발한 마인크래프트 플러그인 개발 라이브러리다. 다양한 플러그인들이 공통으로 사용하는 기능을 제공하며, 특히 TrainCarts, MyWorlds 등의 플러그인에 필수적이다.

주요 기능

유틸리티 시스템

플러그인 개발에 필요한 다양한 유틸리티 제공:

  • 엔티티 및 블록 조작 API
  • 패킷 처리 시스템
  • 인벤토리 관리 도구
  • 파티클 및 사운드 효과 라이브러리

호환성 레이어

여러 마인크래프트 버전 간의 호환성을 보장하는 추상화 레이어를 제공한다. 이를 통해 의존 플러그인들이 버전 업데이트에 쉽게 대응할 수 있다.

성능 최적화

  • 청크 로딩 최적화
  • 엔티티 처리 개선
  • 메모리 사용량 감소
  • 틱 최적화

명령어

명령어 설명 권한
/bkcommonlib reload 라이브러리 리로드 bkcommonlib.command.reload
/bkcommonlib info 버전 및 상태 정보 bkcommonlib.command.info
/bkcommonlib debug 디버그 모드 토글 bkcommonlib.command.debug
/bkcommonlib timings 성능 측정 정보 bkcommonlib.command.timings

설정

# config.yml 주요 설정
debug:
  enabled: false  # 디버그 모드
  packet-logging: false  # 패킷 로깅
  
performance:
  chunk-loader-threads: 2  # 청크 로더 스레드 수
  entity-tracker-rate: 1  # 엔티티 추적 빈도
  
compatibility:
  force-disable-timings: false  # 타이밍 시스템 비활성화
  packet-handler-silent: true  # 패킷 오류 무시

의존 플러그인

BKCommonLib를 필요로 하는 주요 플러그인들:

  • TrainCarts: 기차 시스템 플러그인
  • MyWorlds: 멀티월드 관리 플러그인
  • SignLink: 가변 표지판 플러그인
  • LightCleaner: 조명 버그 수정 플러그인

API 기능

엔티티 관리

// 엔티티 조작 예시
CommonEntity entity = CommonEntity.get(bukkitEntity);
entity.setPosition(x, y, z);
entity.setMotion(new Vector(0, 1, 0));
entity.playEffect(ParticleType.EXPLOSION);

맵 디스플레이

// 맵 아이템에 커스텀 렌더링
MapDisplay display = MapDisplay.create(player, 128, 128);
display.draw(graphics -> {
    graphics.fillRect(0, 0, 128, 128, MapColorPalette.COLOR_RED);
    graphics.drawText(10, 10, "Hello World!");
});

문제 해결

버전 호환성

  • BKCommonLib 버전은 마인크래프트 버전과 정확히 일치해야 함
  • 의존 플러그인들도 호환되는 버전 사용 필요

성능 문제

# 성능 최적화 설정
performance:
  lazy-packet-handling: true  # 지연 패킷 처리
  cache-size: 1000  # 캐시 크기
  gc-interval: 6000  # 가비지 컬렉션 간격 (틱)

개발자 기능

이벤트 시스템

BKCommonLib는 향상된 이벤트 시스템을 제공한다:

  • 우선순위 기반 이벤트 처리
  • 비동기 이벤트 지원
  • 이벤트 필터링

월드 조작

// 월드 관련 유틸리티
CommonWorld world = CommonWorld.get(bukkitWorld);
world.setTime(12000);
world.setStorm(false);
world.broadcast(ChatColor.GREEN + "안내 메시지");

디버깅 도구

  • Packet Monitor: 패킷 송수신 모니터링
  • Entity Tracker: 엔티티 상태 추적
  • Performance Profiler: 성능 프로파일링
  • Memory Analyzer: 메모리 사용량 분석

주의사항

  • BKCommonLib 업데이트 시 의존 플러그인들도 함께 업데이트 필요
  • 디버그 모드는 성능에 영향을 줄 수 있으므로 운영 서버에서는 비활성화 권장
  • 일부 기능은 서버 구현체(Spigot, Paper 등)에 따라 다르게 작동할 수 있음

버전별 특징

  • 1.20.x: 새로운 블록 상태 API 추가
  • 1.19.x: 채팅 서명 시스템 대응
  • 1.18.x: 월드 생성 시스템 개선
  • 1.17.x: 패킷 시스템 전면 개편