마인크래프트 강좌/업데이트 정리

마인크래프트 1.21 기술적 업데이트 정리

Potan 2024. 6. 23. 19:29
반응형

마인크래프트 1.21 명령어와 데이터팩에 관련한 업데이트 내용 정리

해당 글은 마인크래프트 위키의 1.21 항목을 바탕으로 작성되었습니다.

 

명령어

  • @n 엔티티 선택자가 추가되었습니다. 가장 가까운 엔티티를 선택합니다.
    • 기존의 @e[sort=nearest, limit=1] 과 동일합니다.
  • /give, /item, /loot 명령어의 아이템 인수가 이제 ! 접두어를 통해 구성요소를 제거할 수 있습니다.
    • /give @s diamond_pickaxe[!minecraft:tool] : tool 구성요소가 제거된 다이아몬드 곡괭이를 얻습니다.

!minecraft:tool이라는 구성요소로 변경된 상태

  •  /attribute 명령어의 uuid와 name 항목이 id 항목으로 통합되었습니다.
    • 예시 : /attribute @s minecraft:generic.movement_speed modifier add test -0.5 add_value

 

아이템 구성요소

  • custom_data : 이제 SNBT 문자열로 지정해 JSON 유형의 정보를 저장할 수 있습니다.
    • 이는 set_custom_data 전리품 함수(item modiier)와 custom_data 술어에도 적용됩니다.
  • food : 새로운 항목을 가집니다.
    • using_converts_to : (선택사항) 존재할 때 해당 아이템이 소모되면 해당 음식 아이템은 이 항목의 아이템을 변경됩니다.
    • 예시 :/give @s minecraft:potato[food={can_always_eat:true,nutrition:1,saturation:0,using_converts_to:{id:"poisonous_potato",components:{"minecraft:custom_name":'"감자가 썩었다."'}}}]

앗 썩었다...

  • jukebox_playable 아이템 구성요소가 추가되었습니다.
    • 설정될 경우 해당 아이템은 주크박스에 넣어 노래를 재생시킬 수 있습니다.
    • jukebox_playable={
          song : 주크박스에 넣었을 때 재생될 주크박스 음악의 id입니다.
          show_in_tooltip : false일 경우 song의 정보가 아이템 설명에 표시되지 않습니다. (기본값 true)
      (예전에는 음악 디스크의 hide_additional_tooltip 구성요소에 의해 제어되었었습니다.)

예시 : /give @s potato[minecraft:jukebox_playable={song:"minecraft:precipice", show_in_tooltip:true}]

주크박스에 잘 들어갑니다

 

엔티티 데이터

  • 투사체
    • 화살 계열 투사체의 ShotFromCrossbow 태그가 삭제되었습니다.
    • 대신 발사된 무기와 위치 정보를 포함하는 weapon 태그가 생겼습니다.

-36 99 10 좌표에서 석궁으로 발사한 투사체입니다.

  • power NBT 태그가 삭제되고 acceleration_power 태그로 변경되었습니다. 투사체의 가속도(그리고 최대속도)를 설정하는 숫자 값입니다.
    • 이러한 변경은 dragon_fireball, large_fireball, small_fireball, fireball, breeze_wind_charge, wind_charge, wither_skull 엔티티에게 적용됩니다.

 

속성 (Attributes)

  • 속성 수정자의 UUID와 name 조합이 삭제되고 다른 요소처럼 네임스페이스 ID로 식별합니다.
  • 한 속성의 수정자로 하나의 ID만 사용할 수 있지만 만약 서로 다른 속성의 수정자일 경우 같은 ID를 사용할 수 있습니다.
  • 기존의 내장 수정자는 새로운 ID로 변경되며 기존의 커스텀 수정자는 minecraft 네임스페이스의 GUID로 변경됩니다.
  • 커스텀 수정자의 base값은 이제 리스폰해도 유지됩니다.
  • 활성화된 효과와 수정자는 차원이 바뀌거나 엔딩 크레딧을 보고 난 뒤에도 유지됩니다. 

엔티티 속성

  • 내부의 태그 이름이 변경되었습니다.
    • Attributes -> attributes
    • Name -> id
    • Base -> base
    • Modifiers -> modifiers
      • Amount -> amount
      • Operation -> operation
      • 이제 수정자의 내부 형식이 attribute_modifiers 아이템 구성요소와 동일하게 맞춰집니다.
        • add_value - 이전의 0 을 대체합니다.
        • add_multiplied_base - 이전의 1 을 대체합니다.
        • add_multiplied_total - 이전의 2 를 대체합니다.

변경/추가된 속성 (더보기)

더보기

generic.attack_knockback

  • 이제 플레이어를 상대로도 작동합니다.

 

generic.burning_time

  •  엔티티가 불이 붙은 뒤 얼마나 오랫동안 불이 유지될 지에 대한 값입니다.
  • 0일 경우 불이 유지되지 않으며 1일 경우 기본 시간동안 유지됩니다. 값이 클 수록 불이 오래 유지됩니다.
  • 기본값 : 1, 최소값 0, 최대값 1024입니다.

 

generic.explosion_knockback_resistance

  • 엔티티가 폭발로부터 받는 넉백에 대한 저항 값입니다.
  • 1일 경우 모든 폭발로 인한 넉백을 무효화시킵니다. 0일 경우 저항이 없습니다.
  • 기본값 : 0, 최소값 : 0, 최대값 : 1

 

player.mining_efficiency

  • 블록에 맞는 도구를 사용해 채굴할 때 속도를 증가시키는 값입니다.
  • 기본값 0, 최소값 : 0, 최대값 : 1024

 

generic.movement_efficiency

  • 이동을 방해하는 방해요소를 얼마나 효율적으로 지나갈수 있을지 값입니다.
  • 1일 경우 모든 이동속도 패널티를 무시합니다. 0일 경우 이동속도 패널티를 최대로 받습니다.
  • 기본값 : 0, 최소값 0, 최대값 : 1

 

generic.oxygen_bonus

  • 물 속에서 숨 게이지를 소모하지 않을 확률입니다.
  • 0일 경우 아무 효과가 없으며 1 이상일 경우 1 / ( + 1)  의 확률로 숨 게이지를 소모합니다.
  • 기본값 0, 최소값 0, 최대값 1024


player.sneaking_speed

  • 웅크렸을 때 이동속도 배율입니다.
  • 0일 경우 웅크렸을 때 움직이지 못합니다. 1일 경우 걸을 때 이동속도를 의미합니다.
  • 기본값 : 0.3, 최소값 : 0, 최대값 1


player.submerged_mining_speed

  • 물 속에서 채굴할 때의 채굴 속도 배율입니다. 단 이것은 물에 잠기는 것의 패널티만이며 다른 배율(ex: 물속에서 지면에 서있지 않는 경우)이 별도로 적용됩니다.
  • 0일 경우 물속에서 채굴할 수 없습니다. 1일 경우 밖에서 캐는 것과 같은 속도를 가집니다.
  • 기본값 : 0.2, 최소값 : 0, 최대값 20


player.sweeping_damage_ratio

  • 휩쓸기 공격이 주 대상이 아닌 주변 대상을 공격할 때 무기 데미지가 얼마나 추가되는지에 대한 값입니다.
  • 0일 경우 휩쓸기 데미지(1뎀)만이 들어갑니다. 1일 경우 휩쓸기 데미지(1) + 무기 데미지가 들어갑니다.
  • 기본값 : 0, 최소값 : 0, 최대값 : 1


generic.water_movement_efficiency

  • 물 속에서 이동할 때의 효율입니다. 단 이것은 물에 잠기는 것의 패널티만이며 다른 배율(물속에서 지면에 서있지 않는 경우)이 별도로 적용됩니다.
  • 0일 경우 패널티를 최대로 받고 1일 경우 패널티를 받지 않습니다.
  • 기본값 : 0, 최소값 : 0, 최대값 : 1

 

데이터팩

  • 데이터 팩 버전이 48이 되었습니다.
  • 경로가 변경되었습니다. 대부분의 경로에서 복수형이 제거되었습니다.
    • structures -> structure
    • advancments -> advancement
    • functions -> function
    • recipes -> recipe
    • loot_tables -> loot_table
    • predicates -> predicate
    • item_modifiers -> item_modifier
    • tags/functions -> tags/function
    • tags/items -> tags/item
    • tags/blocks -> tags/block
    • ......
  • decorated_pot_patterns 레지스트리가 decorated_pot_pattern으로 변경되었습니다.
  • 직쏘 구조물과 single_pool_element 타입에 새로운 구성가능한 필드가 추가되었습니다.
  • 고정된 위치 셋에 장식을 설치할 때 사용되는 새로운 설치 구성자 타입 fixed_placement가 추가되었습니다.
  • 엔더월드의 흑요석 플랫폼을 위한 새로운 장식 타입 end_platform이 추가되었습니다.

 

주크박스

  • 데이터팩에서 로드되는 주크박스 음악 레지스트리를 추가했습니다. 
  • 경로는 다음으로 정의됩니다. data/<namespace>/<jukebox_song>/<id>.json
  • 파일의 항목
    • sound_event : 플레이어가 주크박스에 재생시켰을 때 발생하는 사운드 이벤트입니다.
    • description : 텍스트 구성요소로 표현되는 재생시켰을 때 화면에 표시되는 설명 창입니다.
    • length_in_seconds : 음악의 길이를 저장하는 양의 소수입니다.
    • comparator_output : 주크박스에 이 음악이 재생 중일 때 비교기로 내보낼 레드스톤 신호 크기입니다. 0 ~ 15 만 가능합니다.

해당 파일은 /reload 로는 인식되지 않고 맵을 재부팅해야만 인식하며 실험적 기능이 적용된 맵 경고문이 발생합니다.

 

 그림

  • 이제 그림 정보가 데이터팩에서 불러와집니다.
  • 경로는 data/<namespace>/painting_variant/id.json 입니다.
    • width : 그림의 폭 (블록 단위)입니다. (1 ~ 16 사이)
    • height : 그림의 높이 (블록 단위) 입니다. (1 ~ 16 사이)
    • asset_id : paintings 아틀라스 내 스프라이트의 id입니다.

skeleton 그림을 3 x 4 범위로 불러오는 그림입니다.

  • 리소스팩의 atlases/painting.json 에서 그림 텍스쳐의 정보를 관리하고 이를 데이터팩이 크기를 지정해서 설치할 수 있게 해줍니다.

해당 파일은 /reload 로는 인식되지 않고 맵을 재부팅해야만 인식하며 실험적 기능이 적용된 맵 경고문이 발생합니다.

 

마법부여

마법부여는 이제 데이터팩에서 불러와집니다.

마법부여와 관련된 효과, 속성, 마법부여 제공자, 위치기반 효과, 효과 조건, 효과 구성요소, 인챈트 태그 등이 추가되었습니다.

이 글을 확인해주세요

 

데미지 타입

  • in_fire 에서 분리된 새 데미지 타입 campfire 가 추가되었습니다. 기본 상태는 다음과 같습니다.

 

태그 (더보기)

더보기
  • #burn_from_stepping : 데미지 타입 태그가 추가되었습니다. 무언가의 위를 걸을 때 받는 데미지 타입들의 태그입니다. (ex: 마그마블록) 해당 태그의 데미지 타입들은 차가운 걸음 마법 부여로 상쇄됩니다.
  • #panic_causes 데미지 타입 태그가 추가되었습니다. : #panic_environmental_causes, arrow, dragon_breath, explosion, fireball, fireworks, indirect_magic, magic, mob_attack, mob_projectile, player_attack, player_explosion, sonic_boom, sting, thrown, trident, unattributed_fireball, wind_charge, wither, wither_skull 를 가지고 있습니다.
    • 동물들에게 패닉을 유발하는 데미지 타입 태그입니다.
  • #panic_enviromental_causes 데미지 타입 태그가 추가되었습니다. : cactus, freeze, hot_floor, in_fire, lava, lightning_bolt, on_fire 를 가지고 있습니다.
    • 중립 동물들에게 패닉을 유발하는 데미지 타입 태그입니다. (늑대, 북극곰 등)

 

  • #has_structure/trial_chambers 바이옴 태그가 추가되었습니다. : #is_overworld를 포함합니다.

  • #air 블록 태그가 추가되었습니다. : air, cave_air, void_air 를 가지고 있습니다. 공기 계열 블록들을 가진 태그입니다.
  • #blocks_wind_charge_explosions 블록 태그가 추가되었습니다. : 방벽과 기반암을 가지고 있습니다. 돌풍구에 맞았을 때 폭발에 영향을 받지 않게합니다.
  • #mob_interactable_doors 블록 태그가 추가되었습니다. : #wooden_doors와 모든 구리 문 블록들을 가지고 있습니다.

 

  • #can_turn_in_boats 엔티티 태그가 추가되었습니다. : 브리즈를 가지고 있습니다.
  • #deflects_projectiles 엔티티 태그가 추가되었습니다. : 브리즈를 가지고 있습니다.
  • #immune_to_infested 엔티티 태그가 추가되었습니다. : 좀벌레를 가지고 있습니다.
    • 벌레먹음 디버프에 면역인 엔티티입니다. 
  • #immune_to_oozing 엔티티 태그가 추가되었습니다 : 슬라임을 가지고 있습니다.
    • 점액화 디버프에 면역인 엔티티입니다.
  • #no_anger_from_wind_charge 엔티티 태그가 추가되었습니다 : 보그드, 브리즈, 스켈레톤, 스트레이, 좀비, 허스크, 거미, 동굴거미, 슬라임을 가지고 있습니다.

 

  • #enchantable/mace 아이템 태그가 추가되었습니다. : 메이스를 가지고 있습니다.

 

  •  #on_trial_chambers_maps 구조물 태그가 추가되었습니다. : trial_chambers를 포함합니다.

 

  • 보그드가 #skeletons 엔티티 태그에 추가되었습니다.
  • 브리즈가 #fall_damage_immune 엔티티 태그에 추가되었습니다.
  • 금고가 #features_cannot_replace 블록 태그에 추가되었습니다.
  • 시련 생성기가 #features_cannot_replace, #lava_pool_stone_cannot_replace 블록 태그에 추가되었습니다.
  • wind_charge(돌풍구 엔티티)가 #impact_projectiles 엔티티 태그에 추가되었습니다.
  • 새롭게 추가된 블록들 중 곡괭이로 채굴 가능한 블록들이 mineable/pickaxe 블록 태그에 추가되었습니다.
  • 새롭게 추가된 블록들 중 돌곡괭이 이상 채굴 가능한 블록들이 #needs_stone_tool 블록 태그에 추가되었습니다.
  • 새롭게 추가된 반블록, 계단, 다락문, 문, 담장 블록들이 #slabs, #stairs, #trapdoors, #doors, #walls 블록, 아이템 태그에 추가되었습니다.
  • 철퇴가 #breaks_decorated_pots 아이템 태그에 추가되었습니다.
  • music_discs 아이템 태그가 삭제되었습니다.

 

Number Provider

  • enchantment_level
    • 마법 부여 레벨 값을 제공하는 새로운 number provider입니다.
      • amount : 마법 부여 레벨에 기반하는 레벨 기반 값을 줍니다. 

 

전리품 테이블 (Loot table)

전리품 함수 (Item modifier)

  • set_ominous_bottle_amplifier 전리품 함수가 추가되었습니다.
    • 드랍될 아이템의 ominous_bottle_amplifier 구성요소를 설정합니다.
      • conditions : 해당 함수의 조건 리스트입니다.
      • amplifier : ominous_bottle_amplifier 구성요소에 설정될 값입니다. (Number Provider)
    • 우민이 떨구는 불길한 병의 흉조 레벨을 결정하는 전리품 함수입니다.
  • looting_enchant 항목이 enchanted_count_increase 로 변경되었습니다.
    • enchantment 내부 항목이 추가되었습니다. 수율을 증가시켜줄 마법 부여의 네임스페이스 ID입니다. 
  • enchant_randomly 항목의 형식이 변경되었습니다. enchantments 항목이 options로 변경되었습니다.
    • options : 특정 마법 부여, 마법 부여 리스트, 마법 부여 태그 등을 넣을 수 있습니다.
    • only_compatible : 새로운 Boolean 항목으로 만약 true일시 해당 아이템과 호환되는 마법 부여만 부여할 수 있습니다. (기본값 true) 
      • 참고 : 책은 모든 마법 부여와 호환되는 것으로 간주됩니다.
  • enchant_with_levels
    • treasure 항목이 삭제되었습니다.
    • 이제 option 항목은 특정 마법 부여, 마법 부여 리스트, 마법 부여 태그 등을 넣을 수 있습니다.
  • copy_name
    • killer 항목이 attacking_entity 으로 변경되었습니다.
    • killer_player 항목이 last_damage_player로 변경되었습니다.

 

조건, 술어 (predicate)

  • 대상
    • 몇몇 대상 이름이 일반적인 내용을 위해 수정되었습니다.
      • killer -> attacker
      • direct_killer -> direct_attacker
      • killer_player -> attacking_player
  • enchantment_active_check
    • Enchantment Active 파라미터가 있는지 감지하는 조건입니다. 마법 부여가 부여되어있는지 아닌지 감지하는 조건입니다.
      • active : 해당 파라미터가 있는지 없는지 비교할 boolean 값입니다.
  • random_chance
    • 이제 chance field에 Number Provider를 사용할 수 있습니다.
  • random_chance_with_looting 항목이 random_chance_with_enchanted_bonus 로 변경되었습니다.
    • looting_multiplier 항목이 삭제되었습니다.
    • enchantment 항목이 추가되었습니다.
      • 보너스 기회를 받을 마법부여의 네임스페이스ID를 받습니다.
    • chance 항목이 삭제되었습니다.
    • unenchanted_chance 항목이 추가되었습니다. 마법부여되지 않은 아이템일 때의 확률이빈다.
    • enchanted_chacne 항목이 추가되었습니다. 마법 부여된 아이템일 때의 확률로 레벨에 기반한 값입니다.

 

  • jukebox_playable 아이템 하위 술어가 추가되었습니다.
    •  jukebox_playable 구성요소와 일치하는지 검사합니다.
    • song : (선택사항) 일치할 주크박스 음악의 id, id 리스트, id 태그의 정보입니다.
  • Enchantment Predicate
    • enchantment 항목이 삭제되었습니다.
    • enchantments 항목이 추가되었습니다. 하나의 마법 부여, 마법 부여 리스트, 마법 부여 태그가 가능합니다.
      • 만약 리스트나 태그 등을 통해 여러 마법 부여가 저장되면 아무 마법 부여나 일치해도 술어가 일치한 것으로 판정합니다.
    • 만약 enchantments 항목이 없을 경우 아무 마법 부여나 levels 항목 테스트가 가능합니다.
    • enchantments, levels 항목이 둘 다 없을 경우 아무 마법 부여나 존재 시 일치하는 것으로 판정합니다.

 

엔티티 플래그 술어

  • 새로운 항목을 추가 가능합니다.
    • is_on_ground : 선택사항 boolean 입니다. 존재할 경우 해당 엔티티의 on ground 가 일치하는 지 확인합니다.
    • is_flying : 선택사항 boolean 입니다. 존재할 경우 엔티티의 비행 상태가 일치하는 지 확인합니다.
      • 비행 상태가 참인 경우 : 겉날개로 날기, 크리에이티브로 날기

 

위치 술어

  • 새로운 항목을 추가 가능합니다.
    • can_see_sky : 선택사항 boolean입니다. 설정할 경우 해당 위치가 정확히 태양광 최대일 때 일치합니다.
    • weather : 선택사항 열거형입니다. 설정할 경웅 해당 위치의 날씨가 제공된 것과 일치해야합니다.
      • clear, raining, thunder 가 가능합니다.
  • 새로운 엔티티 하위 술어 movement_affected_by 위치 술어가 추가되었습니다. (선택사항)
    • 만약 존재할 경우 엔티티의 이동에 관여하기 위해선 0.5 블록 밑에 있는 블록에 대한 술어가 일치해야합니다.

 

이동 술어

  • 엔티티 술어의 movement 감지로 사용할 수 있는 하위 술어가 추가되었습니다.
    • x, y, z : 해당하는 축으로 min/max 범위에 block/sec 속도로 이동할 때 일치합니다.
    • speed : 전체 block/sec 속도가 min/max 범위에 있을 때 일치합니다.
    • horizontal_speed : 엔티티의 수평 block/sec 속도가 min/max 범위에 있을 때 일치합니다.
    • vertical_speed : 엔티티의 수직 block/sec 속도가 min/max 범위에 있을 때 일치합니다.
    • fall_distance : 엔티티의 낙하 거리가 min/max 범위에 있을 때 일치합니다.
  • 플레이어 술어의 gamemode 항목이 게임모드 리스트도 넣을 수 있도록 변경되었습니다.

 

주기적 틱 (Periodic Ticks)

  • 엔티티 술어의 periodic_tick 으로 사용할 수 있는 새로운 하위 술어입니다. (양의 정수)
    • 이 하위 술어는 엔티티의 수명의 n틱마다 true를 반환합니다.

 

블록 술어 (월드 생성 스타일)

  • unobstructed
    • 새로운 블록 술어 타입으로 만약 해당하는 블록에 아무 엔티티도 없다면 통과합니다.
    • 항목
      • offset : 테스트할 원점으로부터의 offset 을 지정하는 3개의 정수 리스트입니다. (선택사항, 기본값 : [0, 0, 0])

 

데미지 타입 술어

  • 새로운 옵션 is_direct가 추가되었습니다. (선택사항 boolean)
    • true로 설정될 경우 해당 데미지는 직접적이어야 하고 false로 설정될 경우 해당 데미지는 간접적이어야 합니다.
    • 직접적의 의미는 데미지의 출처와 소스 엔티티가 동일할 때 입니다.

 


 사용자 지정 구조물

  • 구조물을 위한 새로운 NBT 태그 dimension_padding이 추가되었습니다.
    • 해당 구조물의 바운딩 박스에 수직 패딩을 추가해 차원의 가장자리를 뚫고 생성되지 않게 막습니다.
    • 기본값 0
    • 트라이얼 챔버 (시련의 회당)는 깊은 지하에 생성되어 기반암과 종종 만나기에 값 10을 갖고 있습니다.
    • 항목
      • bottom : 밑 부분의 수직 패딩입니다. (음이 아닌 정수)
      • top : 상단 부분의 수직 패딩입니다. (음이 아닌 정수)
      • 한 개의 값으로 두 항목 전부 값을 줄 수 있습니다.
      • dimension_padding : 10 과 dimension_padding : {bottom : 10, top : 5) 둘다 가능합니다.

 

넉백

  • 투사체 넉백은 이제 사수의 위치에 기반하지 않습니다.
    • 화살, 화염구 등의 투사체 넉백은 이제 이동방향으로 밀어냅니다.
    • 투척형 포션, 폭죽 등의 투사체 넉백은 이제 발사체와 멀어지는 방향으로 밀어냅니다.
    • 발사기로 발사된 발사체도 넉백을 가집니다.

 

디버그

이제 게임은 실패한 청크 로드에 대한 보고서를 디버그 디렉토리에 저장합니다.

 

반응형