반응형
마인크래프트 자바에디션 1.21.5 - 기술적 업데이트 정리
해당 글은 마인크래프트 업데이트 기사와 마인크래프트 1.21.5 위키 항목을 바탕으로 작성되었습니다.
이 글의 작성에는 AI가 사용되었습니다.
명령어 형식
- loot tables, predicates, modifiers , data components, formatted text(/loot, /give, /tellraw, /execute if predicate, execute if items 등)에서 boolean(true, false) 값을 넣을 때 숫자를 넣어도 가능합니다.
- /tellraw, /title 등의 Text 구성요소를 받는 명령어들은 이제 SNBT를 사용합니다.
- 자세한 Text 구성요소에 대한 내용은 이 글을 확인해주세요
/bossbar, /scoreboard, /team
- 이제 대화 구성요소에서 @s를 먼저 설정하고 불러옵니다.
- 예시
- scoreboard의 displayText를 selector:@s 로 했을 때

/data
- 이제 이기종 리스트를 생성, 수정할 수 있습니다.
- 이제 경로를 탐색할 때 빈 키를 넣을 수 없습니다.
- 예시: /data get foo..bar (.이후에 키가 와야하는데 바로 .이 옴 -> 키가 없음)
/fill, /clone, /setblock, /place template
- 이제 /fill 의 replace 옵션과 다른 추가 옵션을 동시에 사용할 수 있습니다.
- 새로운 옵션 strict가 추가되었습니다.
- 설정될 경우 해당 명령은 블록 업데이트, 모양 업데이트를 실행하지 않고 블록을 배치합니다.

Game rule
allowFireTicksAwayFromPlayer
- 기본값: false
- true일 경우, 플레이어로부터 일정 거리 바깥에서도 불이 번지거나 용암으로 인한 화재가 진행됩니다
tntExplodes
- 기본값: true
- false로 설정 시 TNT가 폭발하지 않습니다.
- TNT가 점화되지 않고, 점화 시도 시 actionbar에 알림이 표시됩니다.
- 레드스톤 신호를 넣으면 사라지며, 크리퍼로 tnt를 터트려도 마찬가지입니다.
- 불이 붙으면 나무처럼 타서 사라집니다.

Data pack
- 데이터 팩 버전이 71로 업데이트되었습니다.
- 갑옷 장식 패턴과 재료 아이템은 이제 trim 레지스트리에서 설정하지 않습니다. 이제 조합법과 아이템에 설정됩니다.
- 포션 엔티티(투척형/잔류형)가 각각 splash_potion, lingering_potion으로 분리되었습니다.
- map_id가 없는 지도는 이제 아무 툴팁도 표시하지 않습니다.
- ID가 잘못된 지도는 여전히 "알수 없는 지도"를 표시합니다
- 클라이언트에 --renderDebugLabels 실행 인수가 추가되었습니다.
- 렌더링 디버깅을 위한 OpenGL 객체 디버그 라벨을 보여줍니다.
NBT 형식
- 이제 게임 내에서 NBT 데이터를 다루는 인터페이스는 이기종 리스트를 지원합니다. (SNBT 표현, /data 등)
- 이기종 리스트 : 리스트 원소의 유형이 통일되지 않은 리스트 ex: [1, true, 2, "asdf"]
- /data 명령어 등으로 기존 list의 원소 유형과 다른 값을 넣거나 교체하는 것에 더이상 오류를 일으키지 않습니다.
- 배열 유형 ([I; 1, 2, 3] 등)은 여전히 유형 제한을 받습니다.
- 하지만 NBT 파일 형식은 변경되지 않습니다.
- 따라서 이기종 리스트는 저장되기 전, 형식과 맞도록 우회하기 위해 변환됩니다.
- 예시: ['a', {'b':3}] -> [{'':'a'},{'b':3}]
- 위 데이터와 test2:[1, 2, 3, 4]를 같이 저장했을때 NBT 파일을 열어본 결과입니다.
- 따라서 이기종 리스트는 저장되기 전, 형식과 맞도록 우회하기 위해 변환됩니다.

- 외부 툴에서 여전히 NBT 파일을 이전처럼 읽을 수 있지만 이기종 리스트는 변환된 상태로 읽게 될 것입니다.
- 게임에서 생성한 데이터에서 변경된 것은 없습니다. text 구성요소 등의 이기종 리스트를 사용하는 요소는 기존에도 위 형태를 사용하고 있었습니다.
- 기존에 이기종 리스트를 표현할 때 사용되던 wrapper 객체는 이제 게임 내에서 볼 수 없으며 NBT 파일, 네트워크 형식을 직접 사용하는 개발자에게만 관련이 있습니다.
SNBT 형식
- SNBT (NBT 유사 데이터의 텍스트 표현)은 이제 이기종 리스트를 사용할 수 있습니다.
- 하지만 NBT 파일 형식은 변경되지 않습니다.
- 따라서 /data, summon 등 명령어를 통해 작성한 SNBT가 NBT 값에 들어갈 때 NBT 형식에 맞도록 변환됩니다.
- 예시: ['a', {'b':3}] -> [{'':'a'},{'b':3}]
- 따라서 /data, summon 등 명령어를 통해 작성한 SNBT가 NBT 값에 들어갈 때 NBT 형식에 맞도록 변환됩니다.
- 이제 기존의 NBT, text 구성요소, predicates 등 객체와 유사한 데이터에 관한 텍스트 형식이 확장되었습니다.
- SNBT는 다음과 같은 연산을 지원합니다.
- bool(값) - 값을 boolean(true, false)로 변환합니다.
- 값이 boolean 이라면 그대로 반환합니다.
- 값이 숫자 값이라면 0이 아닐 때 true를 반환합니다.
- uuid(문자열) - UUID 문자열을 UUID 정수(int) 배열로 반환합니다.
- bool(값) - 값을 boolean(true, false)로 변환합니다.
- 숫자 형식(Number Format)
- 정수 부분이나 소수 부분이 생략된 부동소수점 표기를 지원합니다.
- 예시: .1(소수 부분만 존재), 1.(정수 부분만 존재)
- 부동소수점 값에 E 표기법을 사용할 수 있습니다.
- 예시: 1.2e3, 1.2E3, 1.2E+3, 12000e-1 모두 1200.0을 의미합니다.
- 1e1000 같은 ‘암묵적 무한 값’은 이제 거부됩니다.
- 정수 앞에 0x(16진수), 0b(2진수)를 붙여서 진법을 표현할 수 있습니다.
- 예시: 0xbad → 2989, 0b101 → 5
- 정수가 0으로 시작되는 경우(예: 0123)는 사용 불가입니다.
- 원래 일부 언어에서 8진수로 인식할 수 있지만, 혼동을 방지하기 위해 막았습니다.
- 숫자 내에 _(언더스코어)를 넣어 가독성을 높일 수 있습니다. (시작·끝에는 불가)
- 예시: 0b10_01, 0xAB_CD, 1_2.3_4__5f, 1_2e3_4
- NaN, Inf(무한대), 16진 부동소수(예: 0x1.Fp10) 등은 지원하지 않습니다.
- 정수 부분이나 소수 부분이 생략된 부동소수점 표기를 지원합니다.
- 타입 접미사(Type suffix)
- 정수형 접미사: b(byte), s(short), i(int), l(long)을 사용할 수 있는데, 이제 s(signed, 부호 있음), u(unsigned, 부호 없음)도 앞에 붙일 수 있습니다.
- 이 접미사는 변환시에만 적용되며 실제 값은 signed(부호 있음) 값으로 저장됩니다.
- 예시: 240ub 는 16sb로 저장됨
- 240sb는 범위를 넘어 파싱 에러가 납니다.
- u, s 접미사가 없을 때, 십진수로 쓰인 정수는 ‘signed’로 해석하고, 2진수(0b), 16진수(0x)로 쓴 정수는 ‘unsigned’로 해석합니다.
- 주의: 16진수에 b가 들어갈 수 있어서, 16진수로 byte 사이즈를 표현하려면 0x11ub처럼 반드시 u 또는 s를 붙여야 합니다.
- 정수형 접미사: b(byte), s(short), i(int), l(long)을 사용할 수 있는데, 이제 s(signed, 부호 있음), u(unsigned, 부호 없음)도 앞에 붙일 수 있습니다.
- 문자열(Strings)
- 작은따옴표(')와 큰따옴표("), 백슬래시(\) 외에도 다양한 이스케이프 시퀀스를 사용할 수 있습니다.
- 유니코드 이스케이프(유니코드 변환):
- \x(2자리), 예: \x42
- \u(4자리), 예: \u2603
- \U(8자리), 예: \U00002603
- \N{이름}, 예: \N{Snowman}
- 유니코드 이스케이프(유니코드 변환):
- 작은따옴표(')와 큰따옴표("), 백슬래시(\) 외에도 다양한 이스케이프 시퀀스를 사용할 수 있습니다.

- 기존 이스케이프 시퀀스:
- \b : 백스페이스
- \s : 띄어쓰기
- \t : 탭
- \n : 줄바꿈
- \f : 폼 피드
- \r : 캐리지 리
- 따옴표 없는(미인용, unquoted) 문자열은 숫자나 부호 등으로 시작할 수 없습니다(0-9, ., +, - 등).
- 숫자와 혼동되는 표기를 방지하기 위한 제한입니다.
- 배열 및 리스트([B;], [I;], [L;])
- [B;], [I;], [L;]과 같은 특정 배열에 접미사 없이 값을 넣으면, 해당 배열 타입으로 자동 해석됩니다.
- 예: [B;1,2] → [B;1b,2b] 와 동일
- 또한, 더 작은 타입을 더 큰 타입 배열에 넣어도 허용됩니다.
- 예: [I;1b,2s,3] → [I;1i,2i,3i]
- [B;], [I;], [L;]과 같은 특정 배열에 접미사 없이 값을 넣으면, 해당 배열 타입으로 자동 해석됩니다.
- 리스트( [] )와 컴파운드( {} )에서의 트레일링(남는) 콤마
- 리스트: 마지막 원소 뒤에 콤마 하나가 있어도 허용합니다.
- 예: [1,2,] → [1,2]와 동일
- 다만 [1,,] 처럼 유효하지 않은 자리(요소 없음)에 콤마가 있으면 오류
- 컴파운드(맵 구조): {키:값,}처럼 마지막에도 콤마 가능.
- 예: {a:b,} → {a:b}와 동일
- 마찬가지로 {a:b,,} 등은 허용 안 함.
- 리스트: 마지막 원소 뒤에 콤마 하나가 있어도 허용합니다.
test 기능
- 테스트 기능이 새롭게 추가되었습니다. 자세한 내용은 이 게시글을 참고해주세요.
Server.jar
- net.minecraft.gametest.Main 클래스를 통해 서버 실행 시, 테스트 전용 월드를 만들어 자동으로 테스트 수행 후 종료하는 기능이 제공됨.
아이템 구성요소
tooltip_display
- tooltip_display는 아이템에 표시될 툴팁을 세부적으로 제어합니다.
- 기존의 show_in_tooltip 항목, hide_additional_tooltip, hide_tooltip 구성요소를 대체합니다.
- 형식 : 객체
- hide_tooltip (boolean, 기본값: false)
- true이면 이 아이템은 어떤 툴팁도 표시하지 않습니다.
- hidden_components (컴포넌트 ID 리스트, 기본값: [])
- 특정 아이템 구성요소가 제공하는 툴팁을 숨깁니다.
- 해당하는 아이템 구성요소에 툴팁이 없다면 아무 효과도 없습니다.
- hide_tooltip (boolean, 기본값: false)
- 예시
- tooltip_display={ "hide_tooltip": false, "hidden_components": ["minecraft:block_entity_data", "minecraft:block_state"] }
- block_entity_data, block_state 구성요소가 제공하는 툴팁을 숨깁니다.
trim, unbreakable, jukebox_playable
- show_in_tooltip가 제거되고, tooltip_display로 대체되었습니다.
hide_additional_tooltip, hide_tooltip
- 컴포넌트가 제거되었으며, tooltip_display의 hidden_components로 대체되었습니다.
attribute_modifiers
- show_in_tooltip 필드가 제거되고, tooltip_display 컴포넌트로 대체되었습니다.
- 이 컴포넌트는 이제 항상 단순화된 형태로 동작합니다. 즉, { modifiers: [...] } 구조 대신 최상위에 attributes_modifiers=[...] 형태가 사용됩니다.
can_place_on, can_break
- show_in_tooltip 필드가 제거되고, tooltip_display로 대체되었습니다.
- predicates 필드는 이제 최상위로 인라인되어, 단일 객체 혹은 리스트로 바로 지정할 수 있습니다.
- 예시
- 이전: can_place_on={predicates:[{blocks:'stone'},{blocks:'dirt'}]}
변경 후: can_place_on=[{blocks:'stone'},{blocks:'dirt'}] - 이전: can_place_on={predicates:[{blocks:'stone'}]}
변경 후: can_place_on={blocks:'stone'}
- 이전: can_place_on={predicates:[{blocks:'stone'},{blocks:'dirt'}]}
dyed_color
- show_in_tooltip 필드가 제거되고, tooltip_display로 대체되었습니다.
- 이제 항상 단순화된 형태로 동작하여, rgb 필드를 최상위로 인라인합니다.
- 예시:
- 이전: dyed_color={rgb:12345} → 변경 후: dyed_color=12345
- 또한 dyed_color는 RGB 배열 형식도 지원합니다.
- 예시: dyed_color=[0.5, 1.0, 0.2]
enchantments, stored_enchantments
- show_in_tooltip가 제거되고, tooltip_display로 대체되었습니다.
- 내부 levels 필드는 이제 최상위로 인라인되어, 예전의 { levels:{sharpness:2} } 구문이 {sharpness:2}로 간소화됩니다.
equippable
- 이제 안장 슬롯(saddle slot)에도 적용 가능합니다.
- allowed_entities를 통해 어떤 엔티티가 장착할 수 있는지 세부 지정할 수 있습니다.
- 새 선택사항 필드 equip_on_interact(boolean)가 추가되었습니다.
- true일 경우, 플레이어가 해당 아이템을 우클릭해 직접 몹에 장착할 수 있습니다(단, 몹이 해당 슬롯에 이미 아이템을 착용 중이 아니라면).
- 지정하지 않을 시 기본값은 false입니다.
tool
- 새 선택사항 필드 can_destroy_blocks_in_creative(boolean)가 추가되었습니다.
- false일 경우, 크리에이티브 모드에서도 이 아이템으로 블록을 부술 수 없습니다.
- 기본값은 true입니다.
block_attacks
- block_attacks 구성요소가 존재하면, 플레이어가 해당 아이템을 사용하여 방패처럼 공격을 막을 수 있게 됩니다.
- block_delay_seconds (양의 실수, 기본값 0)
- 공격을 막기 위해 우클릭을 얼마 동안 유지해야 하는지(초 단위).
- bypassed_by (#데미지 타입 태그, 선택사항)
- 여기 명시된 데미지 타입 태그에 속한 공격은 방어가 불가능합니다.
- damage_reductions (객체 리스트, 선택사항)
- 데미지를 얼마나 막아낼지 설정합니다.
- 설정되지 않으면 모든 데미지를 100% 막습니다.
- 항목별 공식: 막아낼 피해량 = base + factor * (들어온 데미지)
- 이때 막아낼 피해량은 0 ~ (들어온 데미지) 를 벗어나지 않습니다.
- 각 객체당 형식
- type (특정 데미지 타입 ID, 리스트, 태그 등, 선택사항)
- 여기에 해당되는 데미지 타입에만 적용합니다.
- 설정되지 않을 경우 모든 데미지 타입에 적용합니다.
- base (실수)
- 위 공식의 base 값입니다.
- factor (실수)
- 위 공식의 factor 값입니다.
- horizontal_blocking_angle (양의 실수, 기본값 90)
- 방어 각도 제한으로 이 각보다 큰 각에서 들어오는 공격은 막지 못합니다.
- type (특정 데미지 타입 ID, 리스트, 태그 등, 선택사항)
- disable_cooldown_scale (양의 실수, 기본값 1)
- 공격받았을 때 공격 받은 아이템에 weapon 구성요소가 있다면 disable_blocking_for_seconds와 곱해져 나온 값(초) 만큼 아이템의 방어가 비활성화됩니다.
- 0으로 설정 시 공격으로 비활성화되지 않습니다.
- item_damage (객체, 선택사항)
- 방어 성공 후 아이템 내구도를 얼마나 깎을지 결정합니다.
- (base + factor * (받은 최종 데미지)) 의 내림값만큼 내구도를 소모합니다.
- 공식의 계산 결과가 음수일 경우 아이템이 수리됩니다.
- 형식
- threshold(양의 실수)
- 이 값보다 큰 데미지를 받았을 때만 내구도가 감소합니다.
- base (실수)
- 위 공식의 base 값입니다.
- factor (실수)
- 위 공식의 factor 값입니다.
- threshold(양의 실수)
- block_sound (사운드 이벤트, 선택사항)
- 공격을 성공적으로 막았을 때 재생되는 소리입니다.
- disabled_sound (사운드 이벤트, 선택사항)
- 공격으로 인해 방어가 비활성화될 때 재생되는 소리입니다.
break_sound
- break_sound 구성요소가 존재하면, 아이템 내구도가 0이 되어 부서질 때 지정된 사운드를 재생합니다.
- 만약 이 구성요소가 없으면 아이템이 깨질 때 별도의 소리 재생이 없습니다.
- 기본적으로 모든 아이템이 break_sound를 갖고 있습니다.
- 형식 : 사운드 이벤트
- break_sound='item.wolf_armor.break'
potion_duration_scale
- 이 구성요소가 존재하면, potion_contents 구성요소가 주는 포션 효과 지속 시간을 배율로 조정합니다.
- potion_contents의 custom_effects에도 동일하게 적용됩니다.
- 설정되지 않을 경우 기본값은 1.0입니다.
- 형식 : 양의 실수
- potion_duration_scale=0.25
- 포션의 지속시간을 0.25배합니다.
provides_banner_patterns
- provides_banner_patterns 구성요소가 존재하면, 해당 아이템을 베너 패턴 아이템처럼 직조기(Loom)에 넣어 사용할 수 있습니다.
- 형식 : #배너 패턴 태그 문자열
- provides_banner_patterns="#minecraft:pattern_item/globe"
provides_trim_material
- 이 구성요소가 존재하면, 해당 아이템을 갑옷 장식(trim) 제작 재료로 사용할 수 있습니다.
- #trim_material 아이템 태그에 속해 있어야 기존 대장장이 작업대 레시피와 호환됩니다.
- 이제 trim material 레지스트리 정의는 아이템을 특정하지 않습니다.
- 형식 : 장식 재료(trim material) ID
- provides_trim_material="minecraft:iron"
weapon
- weapon 구성요소가 존재하면, 이 아이템으로 공격할 때 ‘Item Used’ 통계가 올라가며 내구도 감소나 방어 비활성화 효과 등을 설정할 수 있습니다.
- 형식 : (객체)
- item_damage_per_attack (양의 정수, 기본값 1)
- 공격할 때마다 아이템이 소모할 내구도입니다.
- disable_blocking_for_seconds (양의 실수, 기본값 0)
- 0이 아니면, 공격에 성공했을 때 상대방의 방패나 block_attacks 구성요소를 비활성화 시킬 시간(초)입니다.
- item_damage_per_attack (양의 정수, 기본값 1)
- 예시
- weapon={item_damage_per_attack:2, disable_blocking_for_seconds:2}
- 공격할때마다 내구도가 2 달고, 방패를 2초동안 비활성화시키는 공격을 할 수 있습니다.
- item_damage_per_attack이 적용되기 위해선 max_damage와 damage 구성요소가 존재해야합니다.
- weapon={item_damage_per_attack:2, disable_blocking_for_seconds:2}
엔티티 유형 구성요소
- 각종 엔티티의 유형을 결정하는 구성요소가 엔티티마다 추가되었습니다.
- 자세한 내용은 이 글을 확인해주세요
- 크리에이티브 인벤에서 꺼낼 수 있는 몹이 담긴 양동이, 그림 등은 이제 entity_data 대신 엔티티 유형 구성요소를 사용합니다.
- 열대어가 담긴 양동이, 그림 등에 나오는 커스텀 툴팁은 이제 bucket_entity_data, entity_data가 아닌 엔티티 유형 구성요소에 의해 결정됩니다.
엔티티 구성요소
Entity NBT
- 마커(marker)에만 존재하던 data 항목이 모든 엔티티에 가능하도록 변경되었습니다.
- 해당 항목의 내용이 존재해야만 저장됩니다.
- minecraft:custom_data 구성요소로 노출됩니다.
- 생성 알 등으로 소환했을 때 custom_data 구성요소 값이 data 항목에 값이 들어갑니다.
- predicate의 custom_data 구성요소 검사로 확인할 수 있습니다
drop_chances
- ArmorDropChances, HandDropChances, body_armor_drop_chance 필드가 모두 하나의 drop_chances 필드로 통합되었습니다.
- 형식: 장비 슬롯 → 드롭 확률 형태의 맵 구조
- 사용 가능한 장비 슬롯: head, chest, legs, feet, mainhand, offhand, body
- 예: drop_chances:{chest:0.1, feet:1.0}
- 명시되지 않거나 제거될 경우 해당 슬롯은 기본 드롭 확률(0.085)로 간주합니다.
- 특정 슬롯이 기본값(0.085)일 경우 실제 NBT에 저장되지 않으며, 만약 모든 슬롯이 기본값이면 drop_chances 자체가 제거됩니다.
Area Effect Cloud
- potion_duration_scale (float, 기본값 1.0)
- 이 값만큼 효과(포션 등)의 지속 시간을 스케일링합니다.
- 예: 잔류형 포션이 만든 Area Effect Cloud는 기본적으로 0.25를 가집니다(지속시간 1/4).
- Duration 필드가 지정되지 않을 시 기본값이 -1이 되어 영구 유지합니다(이전엔 0틱 → 즉시 사라짐).
equipment
- ArmorItems, HandItems, body_armor_item 필드가 모두 equipment 필드로 통합되었습니다.
- 형식: 장비 슬롯 → 아이템 스택 형태의 맵 구조
- 사용 가능한 장비 슬롯: head, chest, legs, feet, mainhand, offhand, body, saddle
- 예: equipment:{chest:{id:"minecraft:diamond_chestplate"}}
- 말, 돼지, 스트라이더 등 다양한 몹의 안장(기존 bool Saddle 플래그)이 equipment.saddle 슬롯으로 통합되었습니다.
- 안장 사망 드롭 확률 또한 drop_chances.saddle값으로 제어합니다.
- 플레이어(자신)에게는 영향을 주지 않지만, 다른 모든 몹이나 갑옷 거치대(Armor Stand) 등에 적용됩니다.
- 기존 인벤토리를 통해 갑옷/오프핸드를 설정하던 방식은 여전히 호환되지만, 내부 저장은 이제 equipment 필드로 관리합니다.
- Pos, Motion, Rotation에 값을 넣을 때 요구하는 값이 아닌 경우 ([1, 2, 3]이 아니라 [1, 2] 등) 해당하는 부분만 넣는게 아닌 무시됨
- FallDistance → fall_distance (float → double)
- SleepingX, SleepingY, SleepingZ → sleeping_pos (정수 배열, 예: [I;1,2,3])
- 플레이어의 SpawnX, SpawnY, SpawnZ, SpawnAngle, SpawnDimension, SpawnForced → 하나의 respawn 필드로 통합
- 예: respawn:{pos:[I;100,64,200],angle:45.0,dimension:"minecraft:nether",forced:true}
- enteredNetherPosition → entered_nether_pos로 이름 변경, double 배열로 관리
- 예: entered_nether_pos:[1.0,2.0,3.0]
- Tags, FallFlying 등 여러 불필요 필드는 제거되면 보존되지 않습니다.
- Health, Air 필드는 명시되지 않을 경우 각각 최대값으로 디폴트 처리합니다.
몹별 세부 변화
더보기
- allay
- CanDuplicate 필드가 제거되고, 이제 DuplicationCooldown으로만 제어됩니다.
- arrow, spectral_arrow, trident
- inBlockState, SoundEvent 필드 제거 시 보존되지 않음.
- damage 필드가 명시되지 않으면 기본값 2.
- block_display, item_display, text_display
- glow_color_override 필드 제거 시 보존되지 않음.
- interpolation_duration, teleport_duration, start_interpolation, shadow_radius, width, height 등 다양한 필드가 기본값 0(또는 1)로 설정됩니다(별도 지정 없을 시).
- view_range의 기본값은 1.
- cat
- CollarColor 기본값이 14(빨간색)로 설정됩니다.
- creeper
- Fuse 미지정 시 30, ExplosionRadius 미지정 시 3.
- dolphin
- TreasurePosX/Y/Z 필드가 제거되었습니다.
- Moistness 미지정 시 2400.
- dragon_fireball, wind_charge, breeze_wind_charge, wither_skull, small_fireball, large_fireball
- acceleration_power가 명시되지 않으면 0.1.
- ender_dragon
- DragonDeathTime 필드가 기본값 0.
- evoker_fangs, area_effect_cloud, 모든 투사체
- Owner 필드가 제거되면 더 이상 보존하지 않습니다.
- falling_block
- BlockState가 air일 수 있으며, 이렇게 되면 즉시 소멸합니다. 명시 없으면 모래(sand)로 설정.
- HurtEntities 미지정 → false(단, 모루인 경우 true),
- FallHurtAmount 미지정 → 0,
- FallHurtMax 미지정 → 40,
- DropItem 미지정 → true,
- TileEntityData 제거 시 보존되지 않음.
- firework_rocket
- ShotAtAngle 미지정 시 기본값 false.
- fox
- Trusted 필드 미지정 시 빈 리스트로 설정.
- ghast
- ExplosionPower 미지정 시 1.
- goat
- HasLeftHorn, HasRightHorn 미지정 시 true.
- interaction
- width, height가 미지정이면 1.
- item
- Health 미지정 시 5,
- PickupDelay 미지정 시 0,
- Age 미지정 시 0,
- Owner, Thrower 필드 제거 시 보존되지 않음.
- item_frame, glow_item_frame
- ItemDropChance가 미지정 시 1.0.
- item_frame, glow_item_frame, painting, leash_knot
- TileX, TileY, TileZ → 하나로 합친 block_pos(예: [I;10,65,20]).
- minecart, *_minecart
- CustomDisplayTile 필드가 제거됨.
- DisplayState 지정 시 무조건 표시, DisplayOffset도 별도 지정 가능.
- phantom
- Size → size로 이름 변경.
- AX, AY, AZ → anchor_pos로 합침.
- player
- SpawnX/Y/Z/Angle/Dimension/Forced → 합쳐서 respawn.
- enteredNetherPosition → entered_nether_pos.
(위에서 이미 언급)
- primed_tnt
- block_state 미지정 시 tnt,
- fuse 미지정 시 80,
- explosion_power 미지정 시 4.
- shulker
- Color 기본값 16(특수값, 무색).
- shulker_bullet
- Dir, Target 제거 시 보존되지 않음.
- skeleton
- StrayConversionTime 제거 시 보존되지 않음.
- small_fireball, large_fireball
- ExplosionPower 미지정 시 1.
- snow_golem
- Pumpkin 미지정 시 true.
- spectral_arrow
- Duration 미지정 시 200.
- tnt_minecart
- fuse 미지정 시 80,
- explosion_power 미지정 시 4,
- explosion_speed_factor 미지정 시 1.
- trader_llama
- DespawnDelay 미지정 시 47999.
- turtle
- HomePosX/Y/Z → home_pos,
- TravelPosX/Y/Z 제거,
- HasEgg → has_egg.
- vex
- LifeTicks → life_ticks,
- BoundX/Y/Z → bound_pos.
- villager
- Gossips 제거 시 보존되지 않음.
- FoodLevel, Xp 미지정 시 0,
- ConversionTime 제거 시 보존되지 않음.
- wandering_trader
- wander_target 제거 시 보존되지 않음.
- DespawnDelay 미지정 시 0.
- witch, ravager, pillager, illusioner, evoker, vindicator
- patrol_target 제거 시 보존되지 않음.
- wolf
- CollarColor 미지정 시 14(빨간색).
- zombie
- DrownedConversionTime 제거 시 보존되지 않음.
- zombie_villager
- Gossips 제거 시 보존되지 않음.
- Xp 미지정 시 0,
- ConversionTime 제거 시 보존되지 않음.
horse.saddle
- 해당 슬롯은 이제 saddle로 이름이 변경되었으며 모든 엔티티가 안장을 장착할 수 있습니다.
- equippable 구성요소를 통해 설정됩니다.
- 기존의 안장을 지원하던 엔티티만 탑승, 렌더링 기능을 지원합니다.
- saddle 슬롯에 존재하는 아이템의 attribute modifiers는 정상적으로 적용됩니다.
wolf/sound_variant
- 늑대(또는 유사 엔티티)의 소리 변형을 위한 wolf_sound_variant 레지스트리가 추가되었습니다.
- 해당 구성요소로 늑대가 다양한 소리를 내도록 설정할 수 있습니다.
아이템 구성요소 호환
- 일부 구성요소는 아이템이 소환하는 엔티티에게도 자동으로 전달됩니다.
- minecraft:custom_name → 모든 엔티티
- minecraft:custom_data → 모든 엔티티
- minecraft:potion_contents, minecraft:potion_duration_scale → 잔류형 포션, 영역 효과 구름(Area Effect Cloud)
Entity variant components
- 엔티티 외관을 결정하던 서브-Predicate(아홀로틀, 여우 변형 등)가 이제 전부 컴포넌트 기반으로 전환.
- 자세한 것은 이 글을 확인해주세요
블록 엔티티 NBT
- 더 이상 사용되지 않는 일부 블록 엔티티 필드들은 제거될 경우 자동으로 삭제되어 저장되지 않습니다.
- CustomName 필드: 제거 시 보존되지 않음
- LootTable 필드: 제거 시 보존되지 않음
더보기
- 모닥불 (campfire)
- CookingTimes, CookingTotalTimes 필드는 제거 시 보존되지 않습니다.
- 조각된 책장 (chiseled_bookshelf)
- last_interacted_slot 필드는 지정되지 않았을 경우 기본값 -1로 설정됩니다.
- 엔드 게이트웨이 (end_gateway)
- exit_portal 필드는 제거되면 더 이상 보존되지 않습니다.
- 화로 계열 (furnace, smoker, blast_furnace)
- RecipesUsed 필드는 제거되면 저장되지 않습니다.
- 호퍼 (hopper)
- TransferCooldown 필드는 명시되지 않으면 기본값 -1이 됩니다.
- 직소 블록 (jigsaw)
- name, target, pool 필드는 지정되지 않으면 기본값 minecraft:empty로 설정됩니다.
- final_state는 지정되지 않으면 minecraft:air로 설정됩니다.
- 스컬크 비명체 (sculk_shrieker)
- warning_level 필드는 지정되지 않으면 기본값 0으로 설정됩니다.
- 해골 (skull)
- note_block_sound 필드는 제거되면 보존되지 않습니다.
- 구조물 블록 (structure_block)
- ignoreEntities, showboundingbox 필드는 명시되지 않으면 기본값 true로 설정됩니다.
- posY 필드는 지정되지 않으면 기본값 1로 설정됩니다
발전과제
- 이제 background 항목은 textures/ 접두사와 .png 접미사가 자동으로 포함됩니다.
태그
더보기
새로운 태그
- 바이옴 태그
- #spawns_cold_variant_farm_animals : 추운 지역 유형 동물들이 스폰하는 바이옴입니다.
- #spawns_warm_variant_farm_animals : 더운 지역 유형 동물들이 스폰하는 바이옴입니다.
- 블록 태그
- #camels_spawnable_on : 낙타가 스폰할 수 있는 블록입니다.
- #edible_for_sheep : 양이 먹고 양털을 재생할 수 있는 블록입니다.
- #plays_ambient_desert_block_sounds : 사막 환경음을 재생할 수 있는 블록입니다.
- #replaceable_by_mushrooms : 버섯이 배치되거나 자랄 때 대체할 수 있는 블록입니다.
- #sword_instantly_mines : 검에 의해 즉시 채굴되는 블록입니다.
- 엔티티 태그
- #can_equip_saddle : 안장을 장착할 수 있는 엔티티입니다.
- 안장이 작동하는 것은 아니며, 안장 슬롯에 장착시킬 수 있습니다.
- #can_wear_horse_armor : body 슬롯에 말 갑옷을 장착할 수 있는 엔티티입니다.
- #can_equip_saddle : 안장을 장착할 수 있는 엔티티입니다.
- 아이템 태그
- #book_cloning_target : 글이 쓰인 책과 조합하여 책을 복사할 수 있는 아이템입니다.
- #eggs : 모든 달걀 아이템입니다.
- #flower : #flowers 블록 태그의 아이템입니다.
- 구조물 태그
- #on_savanna_villlage_maps : 사바나 주민 마을에서 나오는 모든 구조물입니다.
- #on_desert_village_maps : 사막 주민 마을에서 나오는 모든 구조물입니다.
- #on_plains_village_maps : 평원 주민 마을에서 나오는 모든 구조물입니다.
- #on_taiga_village_maps : 타이가 주민 마을에서 나오는 모든 구조물입니다.
- #on_snowy_village_maps : 설원 주민 마을에서 나오는 모든 구조물입니다.
- #on_swamp_explorer_maps : 늪 탐험가 지도에서 나오는 모든 구조물입니다.
- #on_jungle_explorer_maps : 정글 탐험가 지도에서 나오는 모든 구조물입니다.
변경된 태그
- #bee_attractive, #flowers (블록 태그) 그리고 #bee_food (아이템 태그)에
- cactus_flower, wildflowers가 추가되었습니다.
- #replaceable_by_trees (블록 태그)에
- bush, firefly_bush, leaf_litter, short_dry_grass, tall_dry_grass가 추가되었습니다.
- #replaceable (블록 태그)에
- bush, leaf_litter, short_dry_grass, tall_dry_grass가 추가되었습니다.
- #inside_step_sound_blocks (블록 태그)에
- leaf_litter, wildflowers가 추가되었습니다.
- #enderman_holdable, #wall_post_override (블록 태그)에
- cactus_flower가 추가되었습니다.
- #dragon_immune, #wither_immune (블록 태그)에
- test_block, test_instance_block가 추가되었습니다.
- #has_structure/woodland_mansion (바이옴 태그)에
- pale_garden이 추가되었습니다.
- #bypasses_shield (데미지 타입 태그)에
- cactus, campfire, dry_out, hot_floor, in_fire, lava, lightning_bolt, sweet_berry_bush가 추가되었습니다.
- #big_dripleaf_placeable (블록 태그)
- pale_moss_block가 제거되었습니다.
- #dead_bush_may_place_on (블록 태그)가 #dry_vegetation_may_place_on 으로 이름 변경되었으며,
- farmland가 추가되었습니다.
- #is_overworld, #has_structure/trial_chambers (바이옴 태그)가
- 필요한 바이옴을 누락 없이 포함하도록 수정되었습니다.
- #mineable/axe, #sword_efficient (블록 태그)에서
- 도구 없이 즉시 파괴되는(손으로 빠르게 캘 수 있는) 블록들이 제거되었습니다.
- #default_spawns, #full_moon_spawns (고양이 변형(cat variant) 태그)
- 두 태그가 완전히 제거되었습니다.
바이옴 정의
바이옴 효과
- dry_foliage_color 항목이 추가되었습니다.
- 낙엽의 색을 결정합니다.
Loot Functions
- toggle_tooltips 함수
- 어떤 구성요소 ID든 넣을 수 있음
- tooltip_display 구성요소의 숨기기 항목에서 넣거나 뺄 수 있음.
Particle format
- 새로운 firefly 파티클이 추가되었습니다.
- 새로운 tinted_leaves 파티클이 추가되었습니다.
- 색상 파라미터를 받습니다.
- packed int 또는 4개의 실수 리스트를 받습니다.
- 색상 파라미터를 받습니다.
Predicates
블록 술어 (Block predicates)
- 새로운 선택사항: components, predicates
- 아이템 술어에 있던 components, predicates와 동일한 형식/기능을 갖습니다만, 블록 엔티티(있다면)에 적용됩니다.
- components: 블록 엔티티가 가진 구성요소를 정확히 일치시킵니다.
- predicates: 블록 엔티티 구성요소 중 일부 항목만 부분적으로 검사해 일치하는지 확인합니다.
엔티티 술어 (Entity predicates)
- 새로운 선택사항: components
- 엔티티가 가진 데이터 컴포넌트(예: custom_data, dyed_color, etc.)와 정확 일치를 검사합니다.
- 형식: { <구성요소 이름>: <매칭할 값> }
- 새로운 선택사항: predicates
- 아이템 술어의 predicates와 동일한 형식/기능이지만, 엔티티 구성요소에 적용됩니다.
- 부분 매칭 용도로 사용됩니다.
변형(sub-predicate) 제거
- 아래 엔티티 서브 술어들이 제거되고, 이제는 components + variant 엔티티 구성요소 조합으로 대체됩니다:
- minecraft:axolotl, minecraft:fox, minecraft:mooshroom, minecraft:rabbit, minecraft:horse, minecraft:llama, minecraft:villager, minecraft:parrot, minecraft:salmon, minecraft:tropical_fish, minecraft:painting, minecraft:cat, minecraft:frog, minecraft:wolf, minecraft:pig
- minecraft:sheep 서브 술어의 color 필드가 제거되었습니다(이 역시 components 방식을 사용).
참고: stepping_on 엔티티 술어는 이제 엔티티가 지면에 서 있을 때만 검사할 수 있습니
Recipes
crafting_transmute
- 셜커 박스 염색 등, input 아이템의 구성요소를 유지해서 result를 주는 조합법입니다.
- result 필드가 확장되어, 이제 count(개수)와 components(구성요소 패치)를 지정할 수 있습니다.
- 이때 components는 기존 아이템의 구성요소에 덮어씌우거나 제거(! 붙이기)할 수 있는 패치 개념입니다.
"result": {
"id": "minecraft:stick",
"count": 3,
"components": {
"!minecraft:damage": {},
"minecraft:enchantment_glint_override": {}
}
}
- 이전과 동일한 방법을 사용하는 것 역시 가능합니다.
- "result": "minecraft:stick"
smithing_transform
- base 재료 필드가 이제 필수로 바뀌었습니다.
- 이전에는 없어도 레시피가 파싱은 되지만 실제로 사용 불가능한 상태였습니다.
smithing_trim
- base, template, addition 재료가 이제 필수 항목입니다.
- 예전에는 명시하지 않아도 파싱되었으나, 실제로 쓸 수 없는 레시피가 생성되는 문제가 있었습니다.
- 새 필드 pattern이 추가되었습니다.
- 어느 장식(트림) 패턴을 적용할지 결정하는 ID입니다.
- 예: "pattern": "minecraft:bolt"
- 결과적으로 트림 패턴 레지스트리에서는 어떤 아이템을 사용하는지 명시하지 않고, 대신 레시피 쪽에서 제어합니다.
- 어느 장식(트림) 패턴을 적용할지 결정하는 ID입니다.
리소스팩
- pack_format가 이제 55로 업데이트되었습니다.
- 새로운 텍스처:
- 낙엽(falling leaves) 파티클용 텍스처가 추가됨.
- Wildflowers 블록 텍스처가 추가됨.
- 새로운 사운드:
- 철 블록, 철 문, 철 문틀(문 철창), 무거운 무게 압력판 등에서
깨짐(break), 설치(place), 밟기(step), 낙하(fall), 타격(hit) 소리가 추가되었습니다.
- 철 블록, 철 문, 철 문틀(문 철창), 무거운 무게 압력판 등에서
- 건조한(마른) 잎사귀 색상맵(dry foliage colormap)을 활용해 일부 블록을 틴트할 수 있게 되었습니다.
- dry foliage 전용 colormap 텍스처가 추가되었으며, 이것을 이용해 건조 톤으로 색을 입힐 수 있습니다.
- spawn_egg.png, spawn_egg_overlay.png 삭제
- 스폰 알 텍스처가 더 이상 개별 파일로 존재하지 않고, 엔티티 기반 데이터 구조에 편입된 것으로 보입니다.
- 양 털 텍스처: sheep_fur → sheep_wool로 이름이 바뀌었습니다.
엔티티 유형에 따른 에셋 변화
더보기
돼지(pig) 텍스처 및 변형
- 기본 돼지 텍스처: pig → temperate_pig로 이름 변경
- 새 변형 텍스처:
- cold_pig
- warm_pig
- temperate_pig 텍스처의 크기가 변경됨.
- 데이터 기반 변형(Experimental)
- data/<namespace>/pig_variant/<id>.json 파일로 돼지 변형을 정의 가능
- model: normal 또는 cold
- texture: 사용할 텍스처 경로(예: assets/<namespace>/textures/...)
- biome: 이 변형이 자연 스폰되는 바이옴(단일 값·리스트·태그 지정 가능)
- 명시 안 되면, 다른 모든 변형이 안 맞을 때만 이 변형이 적용
- data/<namespace>/pig_variant/<id>.json 파일로 돼지 변형을 정의 가능
- 안장 텍스처(pig_saddle) 크기도 변경됨.
- 돼지와 스트라이더용 새 장비(Equipment) 레이어 타입이 추가되어, 안장 텍스처가 해당 폴더로 이동/정리되었습니다.
소(cow) 텍스처 및 변형
- 기본 소 텍스처: cow → temperate_cow로 이름 변경
- 새 변형 텍스처:
- cold_cow
- warm_cow
- temperate_cow의 텍스처 크기가 변경됨.
- 빨간/갈색 버섯소(red_mooshroom, brown_mooshroom) 텍스처 크기가 변경됨.
- 기본 소(temperate_cow) 모델과 텍스처도 업데이트:
- 주둥이(snout) 추가
- 다리가 대칭(좌우 미러) 구조로 바뀜
- 데이터 기반 변형(Experimental)
- data/<namespace>/cow_variant/<id>.json 정의
- model: normal, cold, warm
- asset_id: 텍스처 리소스 경로 (예: "my_namespace:my_cool_cow")
- spawn_conditions: 특정 바이옴/조건에서 이 변형이 적용
- data/<namespace>/cow_variant/<id>.json 정의
닭(chicken) 텍스처 및 변형
- 기본 닭 텍스처: chicken → temperate_chicken
- 파일 경로도 변경: entity/chicken.png → entity/chicken/temperate_chicken.png
- 새 변형 텍스처:
- cold_chicken
- warm_chicken
- 데이터 기반 변형(Experimental)
- data/<namespace>/chicken_variant/<id>.json으로 정의
- model: normal, cold
- asset_id: 텍스처 리소스 경로
- spawn_conditions: 바이옴 조건 등.
- data/<namespace>/chicken_variant/<id>.json으로 정의
아이템 렌더링
- 아이템 디스플레이 (Item Display)
- firstperson_lefthand, thirdperson_lefthand 변환(transform)이 이제 실제 손에 들고 있을 때처럼 똑같이 렌더링됩니다.
- 아이템 엔티티 (떨어진 아이템)
- 땅에 놓였을 때, 아이템 모델 크기에 따라 공중에서 떠 있는 높이가 달라집니다.
(즉, 너무 커서 지면을 뚫는 일이 없게 자동 조정) - 아이템 스택이 바닥에 있을 때, 모델 깊이(Z축)가 1/16 블록 미만이면 평면 스택으로 렌더링(기존처럼).
그렇지 않으면 덩어리(클러스터) 형태로 주변에 약간 퍼진 모습으로 렌더링됩니다. - 예전에는 ‘기본 내장/생성’ 모델만 평면 스택 렌더링을 썼지만, 이제 실제 모델 치수에 따라 결정됩니다.
- 땅에 놓였을 때, 아이템 모델 크기에 따라 공중에서 떠 있는 높이가 달라집니다.
장비(Equipment) 에셋
- 새로운 장비 레이어 타입이 추가되어, 안장(Saddle) 장착 상태를 세분화해 관리할 수 있게 되었습니다:
- pig_saddle - 돼지용 안장 레이어
- strider_saddle - 스트라이더용 안장 레이어
- camel_saddle - 낙타용 안장 레이어
- horse_saddle - 말용 안장 레이어
- donkey_saddle - 당나귀용 안장 레이어
- mule_saddle - 노새용 안장 레이어
- skeleton_horse_saddle - 스켈레톤 말 안장 레이어
- zombie_horse_saddle - 좀비 말 안장 레이어
- 그에 따라 아래 텍스처들이 이동되었습니다:
- entity/pig/pig_saddle.png → entity/equipment/pig_saddle/saddle.png
- entity/strider/strider_saddle.png → entity/equipment/strider_saddle/saddle.png
- 그리고 텍스처가 분리된 경우:
- entity/camel/camel.png → entity/equipment/camel_saddle/saddle.png
- entity/horse/horse_<variant>.png → entity/equipment/horse_saddle/saddle.png
- entity/horse/donkey.png → entity/equipment/donkey_saddle/saddle.png
- entity/horse/mule.png → entity/equipment/mule_saddle/saddle.png
- entity/horse/horse_skeleton.png → entity/equipment/skeleton_horse_saddle/saddle.png
- entity/horse/horse_zombie.png → entity/equipment/zombie_horse_saddle/saddle.png
- 또한 dyeable 속성이 적용된 장비 레이어는, 아이템이 #dyeable 태그에 속해 있지 않더라도 dyed_color 구성요소를 통해 염색 표현이 가능합니다.
아이템 모델 정의 (Items model definition)
Select Property / Boolean Property
- minecraft:component라는 새로운 선택 프로퍼티가 추가되었습니다.
- 데이터 팩에 해당 레지스트리 엔트리가 없는 경우, 해당 항목만 무시(무음)되며 모델 전체가 무효화되지는 않습니다.
- 조건부 모델을 정의할 때 component predicates를 이용해 아이템에 특정 컴포넌트가 있는지 확인할 수 있습니다.
- 이전과 달리 <predicate 타입>:<값> 형태가 아니라, predicate와 value 두 필드로 나뉩니다.
- 예시: { "predicate": "minecraft:data_component_predicate_type", "value": "<해당 타입별 값>" }
- 이는 아이템 술어(item predicate) 에서 사용하던 로직을 확장한 것으로,
아이템 자체가 가진 구성요소(예: block_attacks, unbreakable, 등)를 검사해 특정 모델로 스위칭할 수 있습니다.
- 이전과 달리 <predicate 타입>:<값> 형태가 아니라, predicate와 value 두 필드로 나뉩니다.
아틀라스
- minecraft:paletted_permutations 스프라이트 소스에 새 항목 separator가 추가되었습니다.
- 기본값은 '_' 입니다.
- 텍스쳐 이름과 퍼뮤테이션(색상 변형 등) 이름을 합쳐서 최종 스프라이트 이름을 만들 때 중간에 추가되는 구분자입니다.
쉐이더(Shaders)
- 코어 쉐이더·포스트 프로세싱(후처리) 효과 정의를 JSON으로 했던 방식을 변경:
- 기존 JSON "shader program" 파일이 제거됨.
- 여전히 셰이더 자체(GLSL)는 그대로 덮어쓸 수 있음.
- 포스트 프로세싱은 여전히 JSON으로 설정 가능하지만, program 필드 대신:
- vertexShader, fragmentShader 로 명시해야 합니다.
- 예: <namespace>:<path> → assets/<namespace>/shaders/<path>.<vsh|fsh>
- **유니폼(uniform) 필드 type**가 필수가 되었습니다 (예: int, vec2, matrix4, …).
- values는 선택사항이지만, 지정하지 않으면 런타임 시 문제(블러 효과 미설정 등)가 있을 수 있음.
- **글로벌 유니폼(Global uniforms)**이 추가되었고, 게임이 자동으로 해당 값을 셰이더에 공급:
- 예: ModelViewMat, ProjMat, GameTime, FogStart, FogEnd, LineWidth 등
- 지정된 타입과 맞지 않으면 이상동작이 발생할 수 있음.
반응형
'마인크래프트 강좌 > 업데이트 정리' 카테고리의 다른 글
마인크래프트 자바에디션 1.21.5 - Text 구성요소 업데이트 정리 (0) | 2025.03.25 |
---|---|
마인크래프트 1.21.4 기술적 업데이트 정리 (2) | 2024.12.06 |
마인크래프트 1.21.2, 1.21.3 기술적 업데이트 정리 (2) | 2024.10.25 |
마인크래프트 1.21 기술적 업데이트 정리 (1) | 2024.06.23 |
마인크래프트 자바에디션 1.18.2 [기술적인 부분] (2) | 2022.03.13 |