Jshader

jshader마인크래프트 서버에서 커스텀 셰이더 효과를 적용할 수 있게 해주는 플러그인이다. 클라이언트 측 모드 없이도 서버에서 다양한 시각적 효과를 제공할 수 있다.

주요 기능

셰이더 효과

서버 측에서 제어 가능한 다양한 셰이더 효과:

  • 화면 효과: 블러, 왜곡, 색상 필터
  • 환경 효과: 안개, 빛 번짐, 그림자
  • 상태 효과: 현기증, 환각, 충격 효과
  • 날씨 효과: 비, 눈, 폭풍 강화

리소스팩 연동

커스텀 리소스팩과 함께 사용하여 더욱 풍부한 시각 효과를 구현할 수 있다. 서버 리소스팩 자동 다운로드 기능을 지원한다.

명령어

명령어 설명 권한
/shader apply <플레이어> <셰이더> 셰이더 적용 jshader.apply
/shader remove <플레이어> 셰이더 제거 jshader.remove
/shader list 사용 가능한 셰이더 목록 jshader.list
/shader reload 셰이더 리로드 jshader.reload
/shader create <이름> 셰이더 생성 jshader.create
/shader test <셰이더> 자신에게 테스트 jshader.test

설정

# config.yml 주요 설정
shaders:
  blur:
    type: GAUSSIAN_BLUR
    intensity: 0.5
    duration: -1  # -1은 무한
    
  nightvision:
    type: COLOR_FILTER
    color: "#00FF00"
    brightness: 1.2
    
  underwater:
    type: DISTORTION
    wave-speed: 0.05
    wave-amplitude: 0.02
    color-overlay: "#000080"
    
resource-pack:
  enabled: true
  url: "https://example.com/shaders.zip"
  hash: "SHA-1 해시값"
  force: false

셰이더 종류

기본 셰이더

# 사용 가능한 기본 셰이더
- BLUR: 흐림 효과
- GRAYSCALE: 흑백 효과
- SEPIA: 세피아 톤
- NEGATIVE: 색상 반전
- RAINBOW: 무지개 효과
- GLITCH: 글리치 효과
- PIXELATE: 픽셀화
- VIGNETTE: 비네팅 효과

커스텀 셰이더 생성

# shaders/custom.yml
custom_shader:
  name: "커스텀 효과"
  description: "특별한 시각 효과"
  layers:
    - type: COLOR_FILTER
      color: "#FF0000"
      opacity: 0.3
    - type: DISTORTION
      strength: 0.1
    - type: VIGNETTE
      intensity: 0.5
      
  animation:
    enabled: true
    duration: 2000  # 밀리초
    loop: true

이벤트 연동

자동 적용

# 특정 상황에서 자동으로 셰이더 적용
triggers:
  on-damage:
    shader: "damage_effect"
    duration: 500
    
  on-potion-effect:
    CONFUSION:
      shader: "dizzy"
    BLINDNESS:
      shader: "darkness"
      
  in-biome:
    DESERT:
      shader: "heat_wave"
    SNOWY:
      shader: "frost"

API 사용법

// 플러그인에서 jshader API 사용
ShaderAPI api = jshader.getAPI();

// 셰이더 적용
api.applyShader(player, "blur", 5000); // 5초간

// 커스텀 셰이더 생성
Shader custom = api.createShader("custom")
    .addLayer(ShaderType.BLUR, 0.5f)
    .addLayer(ShaderType.COLOR_FILTER, Color.RED)
    .build();
    
api.applyShader(player, custom);

성능 최적화

performance:
  max-active-shaders: 50  # 동시 활성 셰이더 수
  update-interval: 1  # 업데이트 주기 (틱)
  client-side-caching: true  # 클라이언트 캐싱
  
  quality-settings:
    low: 
      skip-frames: 2
      reduce-quality: true
    medium:
      skip-frames: 1
      reduce-quality: false
    high:
      skip-frames: 0
      reduce-quality: false

활용 예시

  • 공포 맵: 어두운 화면 효과와 갑작스런 화면 왜곡
  • 약물 효과: 포션 효과에 따른 시각적 변화
  • 환경 연출: 지역별 특수 효과 (사막의 열기, 눈보라 등)
  • 컷신: 영화적 효과를 위한 화면 전환
  • 상태 이상: 피격, 중독, 질병 등의 시각화

호환성 및 제한사항

  • 클라이언트가 OptiFine 또는 Iris Shaders를 사용 중일 경우 충돌 가능
  • 일부 효과는 특정 그래픽 설정에서만 작동
  • 리소스팩 필수 요구 효과가 있을 수 있음

문제 해결

  • 셰이더가 적용되지 않음: 클라이언트 그래픽 설정 확인
  • 성능 저하: 동시 활성 셰이더 수 제한
  • 깜빡임 현상: 업데이트 주기 조정