행동 팩 안내
Minecraft: Bedrock Edition용 첫 번째 추가 콘텐츠를 제작하기 전에 사용자 정의 콘텐츠를 포함시킬 팩을 제작해야 합니다. 크리에이터가 만들 수 있는 두 가지 팩 유형은 리소스 팩과 행동 팩입니다. 행동 팩은 개체 행동을 유도하고, 전리품을 얻고, 규칙과 아이템, 제작법 및 거래 테이블을 생성하는 파일이 포함된 폴더 구조입니다. 이 튜토리얼은 행동 팩을 만드는 방법과 게임 내 소 개체에 행동을 추가하여 공격적으로 만드는 방법을 다룹니다.
이 튜토리얼에서는 다음과 같은 사항을 안내해 드립니다.
- Minecraft: Bedrock Edition에서 개체의 행동을 변경할 수 있다는 것.
- 행동 팩을 리소스 팩에 연결하는 방법.
튜토리얼을 시작하기 전에 아래 사항을 완료하시길 추천합니다.
행동 팩에는 여러분과 같은 크리에이터가 Minecraft 내 개체의 게임 플레이 행동을 추가하거나 제거하거나 변경하는 데 사용하는 파일이 포함되어 있습니다. 개체의 동작 파일은 닭이 씨앗을 들고 있는 플레이어를 따라가는 것과 같이 각 개체가 특정 동작을 수행하도록 하는 파일입니다.
Minecraft가 행동 파일을 찾고 사용하려면 폴더와 파일을 특정 구조로 설정해야 합니다. 이 튜토리얼은 이 폴더와 파일 구조를 만드는 과정을 안내합니다.
이 섹션에서는 My_BEHAVIOR_Pack이라는 폴더를 만들어 보겠습니다. 꼭 이렇게 이름 붙일 필요는 없습니다. 이 폴더의 이름은 원하는 대로 지정할 수 있지만, 다른 폴더의 이름은 이 튜토리얼에서 말하는 것과 정확히 같은 이름을 지정해야 Minecraft가 찾을 위치를 알 수 있습니다.
- com.mojang 폴더를 엽니다.
- development_behavior_packs 폴더를 엽니다.
- development_behavior_packs 폴더 안에 새 폴더를 만들고 이름을 My_BEHAVIOR_Pack으로 지정합니다.
- My_BEHAVIOR_Pack 폴더를 엽니다.
행동 팩을 Minecraft에 불러오려면 매니페스트 파일을 생성해야 합니다. 행동 팩 매니페스트 파일은 리소스 팩용으로 생성된 매니페스트 파일과 유사하지만 두 개의 추가 섹션이 있습니다.
- 모듈: 월드에 적용하는 방법을 Minecraft가 알 수 있도록 팩을 정의합니다. 행동 팩은 데이터 유형을 사용합니다.
- 종속성 - 행동 팩과 리소스 팩 사의 연결을 만들어 Minecraft에 사용자 정의 텍스처와 비주얼을 추가합니다.
- My_BEHAVIOR_Pack 폴더에 새 문서를 만들고 이름을 manifest.json으로 지정합니다.
- 파일 확장자를 .txt에서 .json으로 변경해야 합니다. 만약 탐색기 창에서 파일 확장자를 확인할 수 없다면 보기 탭에서 파일 확장자가 표시되게 할 수 있습니다.
- manifest.json 파일을 더블 클릭하여 텍스트 편집기에서 엽니다.
- 다음 코드를 복사하여 파일에 붙여넣습니다.
{
"format_version": 2,
"header": {
"description": "My attack cow behavior pack Add-On!",
"name": "My Behavior Pack",
"uuid":"",
"version": [1, 0, 0],
"min_engine_version": [1, 16, 0]
},
"modules":
[
{
"description": "My First Add-On!",
"type": "data",
"uuid": "",
"version": [1, 0, 0]
}
],
"dependencies": [
{
"uuid":"UUID from the header section of manifest.json in My_RESOURCE_Pack",
"version":[1,0,0]
}
]
}
리소스 팩 매니페스트 파일과 유사하게 매니페스트 파일의 헤더 및 모듈 섹션에 대해 서로 다른 두 개의 UUID를 생성해야 합니다. https://www.uuidgenerator.net/ 같은 온라인 생성기에서 UUID를 얻을 수 있습니다.
- UUID를 복사하여 헤더 섹션에 붙여넣습니다. 따옴표("") 사이의
"uuid"
필드에 붙여넣기해야 UUID가 제대로 읽힐 수 있습니다. - 모듈 섹션에서 사용할 새 UUID를 생성하려면 웹 페이지를 새로 고침합니다.
- 새 UUID를 복사하여 따옴표 사이의
"uuid"
필드에 있는 모듈 섹션에 붙여넣습니다.
행동 팩의 manifest.json 파일에는 리소스 팩과 동작 팩 사이의 연결을 만드는 데 사용되는 '종속성'이라는 세 번째 섹션이 있습니다. 이 연결은 리소스 팩 manifest.json 파일의 헤더 섹션에 있는 UUID가 행동 팩 manifest.json 파일의 종속성 섹션에 있는 UUID와 동일한 경우 생성됩니다. 행동 팩을 사용하기 위해 리소스 팩이 필요하지 않으며 리소스 팩을 사용하기 위해 행동 팩이 필요하지 않습니다. 둘 다 가지고 있는 경우 이 솔루션을 사용하여 둘을 함께 연결할 수 있으므로 행동 팩을 월드에 불러올 때 연결된 리소스 팩을 자동으로 불러오고 활성화합니다.
- development_resource_packs 폴더의 My_RESOURCE_Pack 폴더에 있는 manifest.json 파일을 엽니다.
- 리소스 팩 manifest.json 파일의 header 섹션에서 UUID를 복사합니다.
- development_behavior_packs 폴더의 *My_BEHAVIOR_Pack 폴더에 있는 manifest.json 파일로 이동합니다.
- 종속성 섹션의 "uuid" 필드에 UUID를 붙여넣습니다. 따옴표 사이의 모든 항목이 정확히 일치하는지 확인하세요.
- 행동 팩 manifest.json 파일을 저장합니다.
모든 개체의 행동은 Minecraft를 작동시키는 코드 안에 있는 JSON 파일에 정의되어 있습니다. Minecraft가 일반적인 "바닐라" 파일 대신 사용할 새 소 행동 파일을 만들어 보겠습니다.
- My_BEHAVIOR_Pack 폴더에서 폴더를 만들고 이름을 entities로 지정합니다.
- entities 폴더에 텍스트 파일을 만들고 이름을 cow.json으로 지정합니다.
- 다음 코드를 복사하여 cow.json 파일에 붙여넣습니다. 파일을 저장하고 나면 준비가 완료된 것입니다!
참고
편집된 전체 cow.json 파일입니다. 소가 많은 행동을 하기 때문에 파일의 크기가 큽니다!
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
"identifier": "minecraft:cow",
"is_spawnable": true,
"is_summonable": true,
"is_experimental": false
},
"component_groups": {
"minecraft:cow_baby": {
"minecraft:is_baby": {},
"minecraft:scale": {
"value": 0.5
},
"minecraft:ageable": {
"duration": 1200,
"feed_items": "wheat",
"grow_up": {
"event": "minecraft:ageable_grow_up",
"target": "self"
}
},
"minecraft:behavior.follow_parent": {
"priority": 6,
"speed_multiplier": 1.1
}
},
"minecraft:cow_adult": {
"minecraft:experience_reward": {
"on_bred": "Math.Random(1,7)",
"on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
},
"minecraft:loot": {
"table": "loot_tables/entities/cow.json"
},
"minecraft:behavior.breed": {
"priority": 3,
"speed_multiplier": 1.0
},
"minecraft:breedable": {
"require_tame": false,
"breed_items": "wheat",
"breeds_with": {
"mate_type": "minecraft:cow",
"baby_type": "minecraft:cow",
"breed_event": {
"event": "minecraft:entity_born",
"target": "baby"
}
}
},
"minecraft:interact": {
"interactions": [
{
"on_interact": {
"filters": {
"all_of": [
{
"test": "is_family",
"subject": "other",
"value": "player"
},
{
"test": "has_equipment",
"domain": "hand",
"subject": "other",
"value": "bucket:0"
}
]
}
},
"use_item": true,
"transform_to_item": "bucket:1",
"play_sounds": "milk",
"interact_text": "action.interact.milk"
}
]
}
}
},
"components": {
"minecraft:is_hidden_when_invisible": {},
"minecraft:type_family": {
"family": [
"cow",
"mob"
]
},
"minecraft:breathable": {
"total_supply": 15,
"suffocate_time": 0
},
"minecraft:navigation.walk": {
"can_path_over_water": true,
"avoid_water": true,
"avoid_damage_blocks": true
},
"minecraft:movement.basic": {},
"minecraft:jump.static": {},
"minecraft:can_climb": {},
"minecraft:collision_box": {
"width": 0.9,
"height": 1.3
},
"minecraft:nameable": {},
"minecraft:health": {
"value": 10,
"max": 10
},
"minecraft:hurt_on_condition": {
"damage_conditions": [
{
"filters": {
"test": "in_lava",
"subject": "self",
"operator": "==",
"value": true
},
"cause": "lava",
"damage_per_tick": 4
}
]
},
"minecraft:movement": {
"value": 0.25
},
"minecraft:despawn": {
"despawn_from_distance": {}
},
"minecraft:behavior.float": {
"priority": 0
},
"minecraft:behavior.panic": {
"priority": 1,
"speed_multiplier": 1.25
},
"minecraft:behavior.mount_pathing": {
"priority": 2,
"speed_multiplier": 1.5,
"target_dist": 0.0,
"track_target": true
},
"minecraft:behavior.breed": {
"priority": 3,
"speed_multiplier": 1.0
},
"minecraft:behavior.tempt": {
"priority": 4,
"speed_multiplier": 1.25,
"items": [
"wheat"
]
},
"minecraft:behavior.follow_parent": {
"priority": 5,
"speed_multiplier": 1.1
},
"minecraft:behavior.random_stroll": {
"priority": 6,
"speed_multiplier": 0.8
},
"minecraft:behavior.look_at_player": {
"priority": 7,
"look_distance": 6.0,
"probability": 0.02
},
"minecraft:behavior.random_look_around": {
"priority": 9
},
"minecraft:leashable": {
"soft_distance": 4.0,
"hard_distance": 6.0,
"max_distance": 10.0
},
"minecraft:balloonable": {},
"minecraft:rideable": {
"seat_count": 1,
"family_types": [
"zombie"
],
"seats": {
"position": [
0.0,
1.105,
0.0
]
}
},
"minecraft:physics": {},
"minecraft:pushable": {
"is_pushable": true,
"is_pushable_by_piston": true
},
"minecraft:conditional_bandwidth_optimization": {},
"minecraft:behavior.nearest_attackable_target": {
"priority": 2,
"must_see": true,
"reselect_targets": true,
"within_radius": 25.0,
"entity_types": [
{
"filters": {
"test": "is_family",
"subject": "other",
"value": "player"
},
"max_dist": 32
}
]
},
"minecraft:behavior.melee_attack": {
"priority": 3
},
"minecraft:attack": {
"damage": 3
}
},
"events": {
"minecraft:entity_spawned": {
"randomize": [
{
"weight": 95,
"trigger": "minecraft:spawn_adult"
},
{
"weight": 5,
"add": {
"component_groups": [
"minecraft:cow_baby"
]
}
}
]
},
"minecraft:entity_born": {
"add": {
"component_groups": [
"minecraft:cow_baby"
]
}
},
"minecraft:entity_transformed": {
"remove": {},
"add": {
"component_groups": [
"minecraft:cow_adult"
]
}
},
"minecraft:ageable_grow_up": {
"remove": {
"component_groups": [
"minecraft:cow_baby"
]
},
"add": {
"component_groups": [
"minecraft:cow_adult"
]
}
},
"minecraft:spawn_adult": {
"add": {
"component_groups": [
"minecraft:cow_adult"
]
}
}
}
}
}
이제 매니페스트 파일과 소 개체가 모두 행동 팩에 들어 있으므로 Minecraft를 실행하여 새 추가 콘텐츠를 테스트할 차례입니다. 리소스 팩 튜토리얼에서 설명한 것처럼 Pack Stacking 은 행동 팩에서도 작동합니다. 즉, 콘텐츠를 불러올 때 바닐라 콘텐츠를 먼저 불러오고 그 다음에 추가 콘텐츠를 불러옵니다. 모든 소는 cow.json 행동 파일에 의해 제어되므로 월드에 생성되는 모든 소는 새로운 행동을 하게 됩니다.
- Minecraft를 실행하고 플레이를 선택하세요.
- 새 월드 만들기를 선택하세요.
- 설정에서 아래로 스크롤하여 추가 콘텐츠로 이동하세요.
- 행동 팩을 클릭하여 사용 가능한 모든 팩을 확인하세요.
- MY PACKS 드롭다운을 클릭하여 여세요.
- My BEHAVIOR Pack을 선택하고 인증하기를 클릭하여 행동 팩을 월드에 추가하세요.
- 만들기를 클릭하여 나만의 월드를 만드세요.
- 소를 찾아 보세요.
행동 팩 문제? 문제 해결은 일반적인 모든 개발 프로세스의 일부입니다. 아래와 같은 위치에서 행동 팩 문제 해결을 시작할 수 있습니다.
리소스 팩이 추가 콘텐츠 섹션에 나타나지 않으면 manifest.json
파일에 문제가 있는 것입니다. 거기에서 시작해 보겠습니다!
manifest.json
헤더 및 모듈 섹션에 서로 다른 두 개의 UUID가 있습니까? 자세한 정보는 UUID 섹션을 참조하세요.- 파일 확장자 및 경로를 설정하셨습니까?
manifest.json
manifest.json
이 아닐 수도 있습니다. 탐색기 창에 파일 확장자가 표시되지 않는 경우 보기 탭에서 파일 확장명을 활성화할 수 있습니다. - JSON 중괄호와 대괄호를 다시 확인하세요. JSON 린팅 도구가 도움이 될 수 있습니다.
- 사용 중인 행동 팩에 문제가 있는 경우 추가 콘텐츠 섹션의 행동 팩 아래에 빨간색 느낌표가 표시됩니다.
- 행동 팩에는 더 많은 정보가 포함됩니다. 누락된 종속성을 경고하거나 다른 문제에 대한 진단을 실행할 수 있습니다.
entities
폴더가 올바른 위치에 있고 철자가 올바른지 확인하세요. 그런 다음cow
의 모든 철자를 확인하세요.dependencies
섹션의 UUID가 기존 리소스 팩과 일치하는지 (그리고 작동하는지) 확인하세요.- 먼저 불러오도록 행동 팩을 다른 팩 위로 이동하세요. 팩 스태킹으로 인해 변경 사항이 표시되지 않을 수 있습니다.
행동 팩이 작동하는 것을 살펴보았으므로 이제 행동 팩의 작동 방식과 기타 수행할 수 있는 작업에 대해 자세히 알아보겠습니다.
변경되지 않은 리소스 및 행동 파일의 예시를 확인하려면 Minecraft 바닐라 리소스 팩 및 바닐라 행동 팩을 확인하세요.