동적 GameRules 관리자
| 구성 요소 | 클래스 |
|---|---|
| 관리자 클래스 | net.dasik.social.api.gamerule.DynamicGameRuleManager |
| 네임스페이스 키 형식 | modid:rule_name |
| 번역 자동 주입 | LanguageMixin -> Map GENERATED_TRANSLATIONS |
| 굵은 범주 헤더 | §lCategory Title (N rules) |
🎲 개요 및 네임스페이스 GameRules
DynamicGameRuleManager를 통해 하위 모드는 en_us.json 파일에 번역 키를 일일이 수동 등록할 필요 없이 프로그램 코드에서 직접 무제한으로 동적 GameRule을 등록할 수 있습니다.
핵심 기능
- 번역 자동 주입:
modid:rule_name키를 판독 가능한 영문명(예:bd_enable_guard_mode->BD Enable Guard Mode)으로 자동 변환하여LanguageMixin을 통해 언어 맵에 주입합니다. - 굵은 범주 헤더(
§l):registerCategory로 등록된 범주는 GUI 설정 화면에서 식별하기 쉽도록 자동으로 볼드 스타일이 적용됩니다. - 편리한 수학 변환 도우미:
getPct(Level level, GameRule<Integer> rule)— 정수값(0-100)을 Double(/ 100.0)로 변환.getChance(Level level, GameRule<Integer> rule)— 백분율을 Float(/ 100.0f)로 변환.getProb(Level level, GameRule<Integer> rule)— 퍼밀값(0-1000)을 Float(/ 1000.0f)로 변환.getDecileFloat(Level level, GameRule<Integer> rule)— 십분위수를 Float(/ 10.0f)로 변환.getIntVal(Level level, String key, int defaultValue)— 문자열 키로 정수값을 즉시 조회.
💻 개발자 코드 예제
java
// Register a dynamic boolean GameRule with description
GameRule<Boolean> ENABLE_GUARD = DynamicGameRuleManager.booleanRule(
"betterdogs:bd_enable_guard_mode",
GameRuleCategory.MOBS,
true
).description("Enable wolf sentinel guard mode").register();
// Querying GameRule safely across client/server
boolean isGuardEnabled = DynamicGameRuleManager.getBoolean(level, ENABLE_GUARD);