버킷(마인크래프트)

Tdb (토론 | 기여)님의 2025년 7월 23일 (수) 00:04 판 (새 문서: '''Bukkit'''(버킷)은 마인크래프트 서버에 플러그인 기능을 추가한 최초의 서버 구동기이다. 현재는 개발이 중단되었지만, 마인크래프트 서버 플러그인 생태계의 기초를 마련한 역사적으로 중요한 프로젝트다. == 역사 == Bukkit은 2010년 hey0의 hMod 프로젝트가 중단된 후, 그 대안으로 시작되었다. Dinnerbone, EvilSeph, Grum, Tahg 등의 개발자들이 주도했으며, 2014년 DMCA 사태...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Bukkit(버킷)은 마인크래프트 서버에 플러그인 기능을 추가한 최초의 서버 구동기이다. 현재는 개발이 중단되었지만, 마인크래프트 서버 플러그인 생태계의 기초를 마련한 역사적으로 중요한 프로젝트다.

역사

Bukkit은 2010년 hey0의 hMod 프로젝트가 중단된 후, 그 대안으로 시작되었다. Dinnerbone, EvilSeph, Grum, Tahg 등의 개발자들이 주도했으며, 2014년 DMCA 사태로 개발이 중단될 때까지 마인크래프트 서버의 표준으로 자리잡았다.

특징

플러그인 API

  • 최초의 체계적인 마인크래프트 서버 API
  • 이벤트 기반 프로그래밍 모델
  • 간단하고 직관적인 구조
  • Java 기반 개발 환경

기본 구조

# Bukkit의 기본 폴더 구조
서버 폴더/
├── plugins/           # 플러그인 폴더
├── world/            # 월드 데이터
├── world_nether/     # 네더 월드
├── world_the_end/    # 엔드 월드
├── bukkit.yml        # Bukkit 설정 파일
├── server.properties # 서버 기본 설정
└── permissions.yml   # 권한 설정

CraftBukkit

CraftBukkit은 Bukkit API의 실제 구현체이다:

  • Bukkit: API (인터페이스)
  • CraftBukkit: 서버 구현체
  • 바닐라 서버 코드를 수정하여 API 구현

설정 파일

bukkit.yml

# 기본 bukkit.yml 설정
settings:
  allow-end: true                    # 엔드 차원 허용
  warn-on-overload: true            # 과부하 경고
  permissions-file: permissions.yml  # 권한 파일 위치
  update-folder: update             # 플러그인 업데이트 폴더
  plugin-profiling: false           # 플러그인 프로파일링
  connection-throttle: 4000         # 연결 제한 (밀리초)
  query-plugins: true               # 플러그인 쿼리 허용
  deprecated-verbose: default       # 구식 API 경고
  shutdown-message: Server closed   # 서버 종료 메시지

spawn-limits:
  monsters: 70      # 몬스터 스폰 제한
  animals: 10       # 동물 스폰 제한
  water-animals: 15 # 수중 동물 제한
  ambient: 15       # 주변 생물 제한

chunk-gc:
  period-in-ticks: 600  # 청크 가비지 컬렉션 주기

ticks-per:
  animal-spawns: 400      # 동물 스폰 틱
  monster-spawns: 1       # 몬스터 스폰 틱
  autosave: 6000         # 자동 저장 틱

aliases: now-in-commands.yml  # 명령어 별칭 파일

기본 명령어

명령어 설명 권한
/plugins 플러그인 목록 bukkit.command.plugins
/reload 서버 리로드 bukkit.command.reload
/version 버전 정보 bukkit.command.version
/help 도움말 bukkit.command.help
/ban 플레이어 차단 bukkit.command.ban
/kick 플레이어 추방 bukkit.command.kick

권한 시스템

permissions.yml

# 기본 권한 설정 예시
groups:
  default:
    permissions:
      bukkit.command.help: true
      bukkit.broadcast.user: true
    
  admin:
    permissions:
      bukkit.command.*: true
    inheritance:
      - default

users:
  player1:
    groups:
      - admin
    permissions:
      custom.permission: true

플러그인 개발

기본 플러그인 구조

// 메인 클래스 예시
public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        // 플러그인 활성화 시 실행
        getLogger().info("플러그인이 활성화되었습니다!");
    }
    
    @Override
    public void onDisable() {
        // 플러그인 비활성화 시 실행
        getLogger().info("플러그인이 비활성화되었습니다!");
    }
}

plugin.yml

name: MyPlugin
version: 1.0
main: com.example.MyPlugin
author: 작성자명
description: 플러그인 설명

commands:
  mycommand:
    description: 명령어 설명
    usage: /mycommand
    permission: myplugin.command

permissions:
  myplugin.command:
    description: 명령어 사용 권한
    default: op

한계점

  • 성능 최적화 부족
  • 바닐라 버그 수정 미포함
  • 업데이트 중단 (2014년 이후)
  • 최신 마인크래프트 버전 미지원

파생 프로젝트

버킷의 중단 이후 여러 파생 프로젝트가 등장했다:

  • Spigot: 성능 개선에 중점
  • Paper: Spigot의 포크, 추가 최적화
  • Glowstone: 처음부터 새로 작성된 구현체

유산

버킷이 마인크래프트 서버 생태계에 미친 영향:

  • 플러그인 시스템의 표준 확립
  • 서버 커스터마이징 문화 형성
  • 오픈소스 커뮤니티 발전
  • 현재까지 이어지는 API 구조의 기초

현재 상황

  • 공식 개발 중단
  • Spigot/Paper로 대부분 이전
  • 교육 목적으로만 참고 가치
  • 신규 서버에는 사용 비권장

마이그레이션

Bukkit에서 최신 구동기로 이전하는 방법:

1. Paper 또는 Spigot 다운로드
2. 기존 월드 폴더 복사
3. 플러그인 호환성 확인
4. bukkit.yml 설정 이전
5. 서버 시작 및 테스트