차원 룰셋 — 낮/밤, 침대, 스카이박스
dimension_type JSON의 fixed_time, bed_works, effects 등 핵심 속성을 이해하고 magic_realm을 영구 밤 차원으로 설정하는 방법을 다룹니다.
dimension_type 속성 개요
차원의 물리 규칙은 모두 dimension_type JSON 한 파일에서 결정됩니다. 코드로 런타임에 바꾸는 것이 아니라, 데이터팩 JSON에 정적으로 선언합니다.
⚠️ 코드로 룰 동적 변경 금지
dimension_type의fixed_time,bed_works등은 정적 설정입니다. 런타임에LevelData.setGameType,setTime등으로 바꾸는 것은 별개 동작(게임 모드/시간 명령)이며, 차원 타입 자체를 변경하지 않습니다. 데이터팩 JSON에서만 정의하세요.
속성 전체 표
| 속성 | 타입 | 효과 | 예시 |
|---|---|---|---|
fixed_time | long (선택) | 시간 고정 (0~24000 tick). 없으면 낮/밤 사이클 정상 작동 | 18000 = 자정 |
has_skylight | boolean | 햇빛 존재 여부. false면 하늘 밝기 0 | true (오버월드), false (네더) |
has_ceiling | boolean | 네더처럼 위쪽 암석 천장 생성 | true (네더) |
ambient_light | float | 환경광 (0.0~1.0). 0이면 완전 어두움 | 0.5 |
ultrawarm | boolean | 물 증발 + 용암 빠르게 흐름 | false (오버월드), true (네더) |
bed_works | boolean | 침대로 잠 가능 여부. false면 폭발 | false (네더/엔드) |
respawn_anchor_works | boolean | 리스폰 앵커 작동 여부 | false (오버월드/엔드) |
effects | string | 스카이박스 시각 효과 | minecraft:overworld, minecraft:the_nether, minecraft:the_end |
piglin_safe | boolean | true면 피글린이 좀비화하지 않음 | true (네더) |
natural | boolean | 나침반/시계 정상 작동 여부 | true (오버월드) |
coordinate_scale | double | 좌표 비율. 네더는 8.0 (1블록 = 오버월드 8블록) | 1.0 |
logical_height | int | 엔더 진주/코러스 점프 최대 높이 | 256 |
min_y / height | int | 세계 최저 Y / 총 높이 | -64 / 384 |
fixed_time — 시간 고정
fixed_time을 설정하면 차원 안에서 시간이 멈춥니다. 값은 Minecraft 틱 단위입니다.
| 틱 값 | 시각 |
|---|---|
0 | 일출 (새벽) |
6000 | 정오 (한낮) |
12000 | 일몰 |
18000 | 자정 (한밤중) |
24000 | 다음 날 일출 (= 0과 동일) |
magic_realm은 영구 밤 차원이므로 18000으로 설정합니다.
"fixed_time": 18000fixed_time을 아예 생략하면 오버월드처럼 낮/밤 사이클이 정상 작동합니다.
bed_works — 침대 폭발
bed_works: false로 설정하면 침대를 우클릭했을 때 잠을 자는 대신 폭발합니다. 네더와 엔드의 동작과 동일합니다.
"bed_works": falsemagic_realm은 영구 밤 차원이므로 침대 수면을 막습니다. 플레이어가 침대를 사용하면 "잠을 잘 수 없습니다" 메시지와 함께 폭발이 발생합니다.
effects — 스카이박스 시각 효과
effects 속성은 차원의 하늘 색상, 안개, 별, 태양/달 렌더링 방식을 결정합니다.
| 값 | 시각 효과 |
|---|---|
minecraft:overworld | 파란 하늘, 구름, 태양/달 |
minecraft:the_nether | 붉은 안개, 천장 |
minecraft:the_end | 검은 하늘, 보라색 안개, 별 없음 |
magic_realm은 minecraft:the_end를 사용해 어두운 밤 분위기를 연출합니다.
"effects": "minecraft:the_end"magic_realm.json 최종 설정
앞서 설명한 속성들을 적용한 dimension_type/magic_realm.json 전체 파일입니다.
// examplemod-master-projects/dimension/src/main/resources/data/master_dimension/dimension_type/magic_realm.json
{
"ultrawarm": false,
"natural": true,
"has_skylight": true,
"has_ceiling": false,
"ambient_light": 0.3,
"fixed_time": 18000,
"bed_works": false,
"respawn_anchor_works": false,
"has_raids": false,
"piglin_safe": false,
"logical_height": 256,
"min_y": -64,
"height": 384,
"coordinate_scale": 1.0,
"infiniburn": "#minecraft:infiniburn_overworld",
"effects": "minecraft:the_end",
"monster_spawn_light_level": 0,
"monster_spawn_block_light_limit": 0
}변경 포인트 요약
| 속성 | 이전 값 | 변경 값 | 이유 |
|---|---|---|---|
fixed_time | 6000 (정오) | 18000 (자정) | 영구 밤 차원 |
bed_works | true | false | 밤 차원에서 침대 수면 불가 |
ambient_light | 0.5 | 0.3 | 더 어두운 환경광 |
effects | minecraft:overworld | minecraft:the_end | 어두운 스카이박스 |
인게임 확인
모드를 빌드하고 게임을 실행한 후 차원에 진입합니다.
/execute in master_dimension:magic_realm run tp @s ~ 64 ~
진입 후 확인할 사항:
- 하늘이 어두움 —
fixed_time: 18000+effects: minecraft:the_end적용 - 침대 우클릭 시 폭발 —
bed_works: false적용 - 스카이박스가 엔드 스타일 — 검은 배경, 보라빛 안개
자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
fixed_time 값을 24001 이상으로 설정 | 시간이 0으로 초기화됨 | 0~24000 범위 내 값 사용 |
effects 값에 오타 | 하늘이 기본값(오버월드)으로 렌더링 | minecraft:overworld, minecraft:the_nether, minecraft:the_end 중 하나 |
bed_works: false인데 침대 폭발 없음 | 바닐라 차원 규칙이 적용됨 | dimension_type JSON이 올바른 경로에 있는지 확인 |
ambient_light를 1.0 이상으로 설정 | 항상 최대 밝기 | 0.0~1.0 범위 내 값 사용 |
다음 단계
차원 룰셋 설정을 완료했습니다. 다음 챕터에서 차원 안에 지형과 구조물을 추가합니다.
- 06-world-gen-noise — 소음 기반 지형 생성
- 07-structure-placement — 커스텀 구조물 배치