BlueMap

BlueMap마인크래프트 서버의 월드를 실시간 3D 웹맵으로 렌더링하는 플러그인이다. 고품질의 3차원 맵을 웹 브라우저에서 볼 수 있으며, 플레이어 위치와 마커 기능을 지원한다.

주요 기능

3D 렌더링

  • 실시간 3D 월드 렌더링
  • 부드러운 카메라 이동과 회전
  • 높은 디테일의 블록 모델
  • 동적 조명 효과

웹 인터페이스

  • 반응형 웹 디자인
  • 모바일 기기 지원
  • 직관적인 컨트롤
  • 다크/라이트 테마

실시간 업데이트

  • 블록 변경사항 자동 반영
  • 플레이어 위치 실시간 표시
  • 라이브 채팅 연동
  • 마커 시스템

명령어

명령어 설명 권한
/bluemap reload 설정 리로드 bluemap.command.reload
/bluemap render <월드> 월드 렌더링 시작 bluemap.command.render
/bluemap stop 렌더링 중지 bluemap.command.stop
/bluemap purge <맵> 맵 데이터 삭제 bluemap.command.purge
/bluemap marker create <id> 마커 생성 bluemap.command.marker
/bluemap freeze <맵> 맵 업데이트 중지 bluemap.command.freeze
/bluemap debug 디버그 정보 bluemap.command.debug

설정

# bluemap.conf 주요 설정
accept-download: true  # EULA 동의

web-server {
  enabled: true
  port: 8100
  ip: "0.0.0.0"
  max-connection-count: 100
}

render-threads: 2  # 렌더링 스레드 수
metrics: true  # 통계 수집

maps [
  {
    id: "world"
    name: "오버월드"
    world: "world"
    
    # 렌더링 설정
    render-distance: 10
    min-y: -64
    max-y: 320
    
    # 초기 카메라 위치
    start-pos: {x: 0, y: 100, z: 0}
    
    # 렌더링 품질
    hires-tiles {
      resolution: 32
      view-distance: 4.5
    }
    
    lowres-tiles {
      resolution: 1024
      view-distance: 200
    }
  }
]

마커 시스템

마커 생성

# markers.yml
markers:
  spawn:
    type: POI  # Point of Interest
    position: {x: 0, y: 64, z: 0}
    label: "스폰 지점"
    icon: "home"
    
  shop:
    type: POI
    position: {x: 100, y: 70, z: -50}
    label: "중앙 상점"
    icon: "shopping-cart"
    detail: "모든 아이템을 구매할 수 있습니다"
    
  region:
    type: SHAPE
    shape: "rectangle"
    corners: [{x: -100, z: -100}, {x: 100, z: 100}]
    label: "보호 구역"
    color: "#00FF00"
    fill-opacity: 0.3

마커 아이콘

# 사용 가능한 기본 아이콘
- home: 집
- shopping-cart: 상점
- flag: 깃발
- star: 별
- warning: 경고
- info: 정보
- users: 모임 장소
- landmark: 랜드마크

플레이어 표시 설정

# players.conf
players {
  enabled: true
  update-interval: 1  # 초
  
  # 플레이어 숨기기
  hide-invisible: true
  hide-spectators: true
  hide-vanished: true
  
  # 플레이어 정보 표시
  show-name: true
  show-head: true
  show-direction: true
  
  # 권한별 설정
  groups {
    default {
      visible: true
      marker-color: "#FFFFFF"
    }
    
    vip {
      visible: true
      marker-color: "#FFD700"
    }
  }
}

성능 최적화

# 성능 관련 설정
performance {
  # 청크 업데이트 감지
  update-detection {
    enabled: true
    interval: 30  # 초
  }
  
  # 렌더링 우선순위
  render-priority {
    spawn-area: HIGH
    player-activity: MEDIUM
    default: LOW
  }
  
  # 리소스 제한
  limits {
    max-tiles-per-render: 1000
    max-memory-usage: 2048  # MB
  }
}

웹서버 커스터마이징

# 웹 인터페이스 설정
web-config {
  # 언어 설정
  language: "ko_KR"
  
  # UI 테마
  default-theme: "dark"
  
  # 기본 맵
  default-map: "world"
  
  # 컨트롤 설정
  controls {
    zoom-speed: 2
    rotation-speed: 1.5
    pan-speed: 1
  }
  
  # 추가 기능
  features {
    search: true
    coordinates: true
    compass: true
    minimap: true
  }
}

고급 기능

리소스팩 지원

# 커스텀 리소스팩 적용
resource-pack {
  enabled: true
  path: "resourcepacks/custom.zip"
  
  # 블록 모델 오버라이드
  block-models {
    "minecraft:chest": "custom:fancy_chest"
  }
}

API 엔드포인트

BlueMap은 REST API를 제공한다:

  • /maps - 맵 목록
  • /maps/{map}/players - 플레이어 위치
  • /maps/{map}/markers - 마커 정보
  • /maps/{map}/tiles - 타일 데이터

활용 예시

  • 서버 홍보: 웹사이트에 3D 맵 임베드
  • 건축 전시: 건축물 갤러리 구성
  • 이벤트 안내: 마커로 이벤트 장소 표시
  • 영토 관리: 팩션이나 타운 영역 시각화

문제 해결

  • 렌더링이 느림: render-threads 증가, 해상도 조정
  • 웹맵 접속 불가: 방화벽 포트 확인
  • 메모리 부족: lowres 타일 해상도 감소
  • 블록이 표시되지 않음: 리소스팩 호환성 확인

단점

Dynmap과 비교했을 때 맵 서비스를 위한 타일의 용량이 지나치게 비대해 맵 용량 보다 BlueMap의 맵 데이터가 더 큰 경우가 있다. 특히 외부 인스턴스에 의존했을 때 막대한 디스크 및 트래픽 비용을 발생시킬 수 있다는 것이 최대 단점이다.

다른 플러그인과의 연동

  • GriefPrevention: 클레임 영역 표시
  • WorldGuard: 보호 구역 경계 표시
  • Towny: 마을 영역 시각화
  • DiscordSRV: Discord에 맵 링크 공유[1]
  1. Discord 봇을 통해 맵 스크린샷 전송 가능