Cloth Config
Cloth Config는 마인크래프트 모드 개발자들이 설정 화면을 쉽게 만들 수 있도록 도와주는 라이브러리 모드이다. Fabric과 Forge 모두를 지원하며, 많은 인기 모드들이 설정 인터페이스를 구현하는 데 사용한다.
Cloth Config는 shedaniel이 개발한 오픈소스 프로젝트로, 복잡한 GUI 코드 없이도 세련된 설정 화면을 만들 수 있게 해준다. 개발자는 간단한 API 호출만으로 다양한 설정 옵션을 구현할 수 있으며, 사용자는 일관된 인터페이스를 통해 모드를 설정할 수 있다.
특징
다양한 설정 타입 지원
- 불리언 (체크박스, 토글)
- 정수/실수 슬라이더
- 텍스트 입력 필드
- 열거형 선택
- 색상 선택기
- 키 바인딩 설정
- 리스트 편집기
사용자 친화적 기능
- 실시간 검색
- 카테고리 분류
- 툴팁 지원
- 설정 초기화
- 변경사항 미리보기
- 다국어 지원
개발자 친화적 API
- 직관적인 빌더 패턴
- 자동 설정 저장/로드
- 유효성 검사
- 동적 설정 생성
- 커스텀 위젯 지원
설치 방법
일반 사용자는 Cloth Config를 직접 설치할 필요가 없다. 이를 필요로 하는 모드를 설치하면 자동으로 의존성으로 다운로드된다. 수동 설치가 필요한 경우:
1. 사용 중인 모드 로더 확인 (Fabric/Forge) 2. 해당 버전의 Cloth Config 다운로드: - Modrinth: modrinth.com/mod/cloth-config - CurseForge: curseforge.com/minecraft/mc-mods/cloth-config 3. .minecraft/mods 폴더에 복사
사용하는 주요 모드
많은 인기 모드들이 Cloth Config를 사용한다:
- REI (Roughly Enough Items)
- Light Overlay
- MiniHUD
- Litematica
- Not Enough Animations
- Dynamic FPS
개발자 가이드
기본 사용법
// 의존성 추가 (build.gradle) dependencies { modApi "me.shedaniel.cloth:cloth-config-fabric:11.0.99" } // 설정 화면 생성 ConfigBuilder builder = ConfigBuilder.create() .setParentScreen(parent) .setTitle(Text.translatable("config.examplemod.title")); ConfigCategory general = builder.getOrCreateCategory(Text.translatable("config.examplemod.general")); general.addEntry(entryBuilder.startBooleanToggle(Text.translatable("config.examplemod.toggle"), currentValue) .setDefaultValue(true) .setTooltip(Text.translatable("config.examplemod.toggle.tooltip")) .setSaveConsumer(newValue -> this.toggleOption = newValue) .build()); general.addEntry(entryBuilder.startIntSlider(Text.translatable("config.examplemod.slider"), currentValue, 0, 100) .setDefaultValue(50) .setSaveConsumer(newValue -> this.sliderValue = newValue) .build()); return builder.build();
고급 기능
// 커스텀 리스트 설정 general.addEntry(entryBuilder.startStrList(Text.translatable("config.examplemod.list"), currentList) .setDefaultValue(Arrays.asList("item1", "item2")) .setTooltip(Text.translatable("config.examplemod.list.tooltip")) .setSaveConsumer(newValue -> this.listOption = newValue) .build()); // 하위 카테고리 SubCategoryBuilder subCategory = entryBuilder.startSubCategory(Text.literal("Advanced")); subCategory.add(/* entries */); general.addEntry(subCategory.build());
설정 타입
기본 타입
타입 | 설명 | 사용 예 |
---|---|---|
Boolean Toggle | 켜기/끄기 설정 | 기능 활성화 |
Int/Long Field | 정수 입력 | 수량 설정 |
Float/Double Field | 실수 입력 | 배율 설정 |
String Field | 텍스트 입력 | 이름 설정 |
Enum Selector | 선택 목록 | 모드 선택 |
특수 타입
타입 | 설명 | 사용 예 |
---|---|---|
Color Field | 색상 선택기 | UI 색상 |
Key Binding | 키 설정 | 단축키 |
Slider | 슬라이더 | 볼륨 조절 |
List | 리스트 편집 | 아이템 목록 |
테마와 스타일
Cloth Config는 마인크래프트의 UI 스타일을 따르면서도 현대적인 느낌을 제공한다:
- 다크 모드 지원
- 부드러운 애니메이션
- 일관된 색상 스키마
- 반응형 레이아웃
버전 호환성
Cloth Config는 다양한 버전을 지원한다:
- Minecraft 1.14+: 모든 버전 지원
- Fabric: 네이티브 지원
- Forge: Architectury API를 통한 지원
- Quilt: Fabric 버전 사용 가능
대안 라이브러리
다른 설정 라이브러리들:
- YACL (Yet Another Config Lib): 더 현대적인 API
- AutoConfig: 어노테이션 기반
- CompleteConfig: 자동 GUI 생성
- MidnightLib: 경량 대안
문제 해결
일반적인 문제
- 설정이 저장되지 않음: setSaveConsumer 콜백 확인
- GUI가 깨짐: 텍스트 키 확인, 번역 파일 점검
- 크래시: Cloth Config 버전과 모드 버전 호환성 확인
성능 고려사항
- 많은 설정 항목은 로딩 시간 증가
- 동적 설정은 신중히 사용
- 큰 리스트는 페이지네이션 고려