전리품 테이블 안내

전리품 테이블은 게임에서 아이템이 생성되는 방식을 정의하는 JSON 형식 파일입니다. 상자의 내용물을 생성하고, 개체가 사망하면 드롭하는 아이템을 정의하거나, 심지어 개체가 장비하는 아이템을 정의하는 용도로 사용할 수 있습니다. 버섯소 젖 짜기나 낚시 같은 게임플레이 메커니즘에서 사용하기도 합니다.

전리품을 보기 위해 상자를 여는 알렉스를 보여주는 이미지

전리품 테이블 파일은 행동 팩의 루트 디렉터리에 들어 있으며 일반적으로 "풀"이라고 하는 세 가지 주요 섹션으로 구성됩니다.

    • 개체를 선택하기 위해 이 풀을 롤하는 횟수입니다. 정해진 롤 횟수로 만드는 정수일 수도 있고, 선택할 수 있는 롤 횟수의 최소/최대 범위일 수도 있습니다.
  • 조건(선택 사항) 자세한 정보
    • 이 풀을 롤하려면 충족해야 하는 조건입니다.
  • 엔트리
    • 이 롤에서 게임이 선택하는 개체 목록입니다. item이나 loot_table로 설정할 수 있으며, 이 롤에서 아무 일도 일어나지 않는 가능성을 부여하고 싶다면 empty로 설정하세요.

이 튜토리얼에서는 다음과 같은 사항을 안내해 드립니다.

  • JSON을 사용하여 전리품 테이블을 정의하는 방법
  • 선택된 아이템을 수정하기 위해 함수를 엔트리에 적용하는 방법
  • 풀이나 개체를 선택했을 때 조건을 사용하여 추가 제한을 적용하는 방법

요구 사항

튜토리얼을 시작하기 전에 아래 사항을 완료하시길 추천합니다.

기본 사용법

먼저 호출하면 다이아몬드 하나를 반환하는 전리품 테이블을 만들겠습니다.

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond"
                }
            ]
        }
    ]
}

화면에서처럼 우리는 한 번만 롤하며 롤할 때마다 다이아몬드 하나를 포함하는 단일 풀을 정의했습니다. 이 풀을 개체의 행동 파일에 있는 minecraft:loot 구성 요소와 결합했다면, 사망 시 다이아몬드를 드롭하게 됩니다.

두 가지 아이템 중에서 하나를 선택하게 하려면 어떻게 해야 할까요? 다이아몬드나 석탄 조각을 반환하게 하려면 어떻게 해야 할까요? entries 개체에 두 번째 값을 추가하면 됩니다.

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond"
                },
                {
                    "type": "item",
                    "name": "minecraft:coal"
                }
            ]
        }
    ]
}

이렇게 하면 다이아몬드가 석탄 조각과 비슷한 확률로 드롭됩니다. 모든 entries에는 weight가 할당되어 있습니다. 지정하지 않으면 기본적으로 1이 되어 모든 entries가 동일한 확률로 롤링됩니다. 가중치를 조절하려면 weight 값을 직접 정의해야 합니다.

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "weight": 7
                }
            ]
        }
    ]
}

weight가 어떻게 롤에 영향을 미치는지를 이해하는 가장 좋은 방법은 위의 예시에서 엔트리가 2개가 아닌 8개가 있다고 가정하는 것입니다. 일곱 번은 석탄이 나오고 한 번은 다이아몬드가 나옵니다. 즉 롤에서 다이아몬드가 아닌 석탄이 나올 확률이 7배나 높습니다.

(플레이어의 운 특성을 바탕으로 weight를 조절하는) Java Edition의 quality 변경자가 Bedrock Edition의 바닐라 파일에 존재하지만, Bedrock Edition은 현재 운 특성을 지원하지 않으며 따라서 이 기능은 아무런 쓸모가 없습니다.

entries 모음을 롤하는 횟수를 무작위로 선정할 수도 있습니다. rolls 키는 게임에서 무작위로 선택하는 minmax 값을 이용해 설정할 수 있습니다.

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "weight": 7
                }
            ]
        }
    ]
}

이 경우 게임은 엔트리를 1~3회 롤하게 됩니다. 그 결과 최소 1회에서 최대 3회마다 이 전리품 테이블이 호출됩니다.

다음은 전리품 테이블을 하나의 엔트리로 사용하는 또 다른 예시입니다. 이 예시에서 게임은 다른 전리품 테이블을 호출하고 그에 따른 결과를 반환합니다.

{
    "pools": [
        {
            "rolls": {
                "min": 1,
                "max": 3
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "weight": 7
                },
                {
                    "type": "loot_table",
                    "name": "loot_tables/custom/some_loot_table",
                    "weight": 1
                }
            ]
        }
    ]
}

전리품 테이블은 어떤 식으로도 자신을 참조할 수 없다는 점에 주의하세요. 롤을 수행한 후 같은 전리품 테이블이 반복적으로 나타난다면 아무것도 반환되지 않습니다.

함수 및 아이템 수정

함수는 아이템을 수정하는 엔트리에 추가할 수 있는 선택적 작업입니다. 함수를 이용하면 사용자는 반환되는 아이템 수를 정의하고, 아이템의 특성을 수정하거나, 다른 수많은 작업을 수정할 수 있습니다. 이 문서에서는 함수의 일반적인 사용 방법을 다룹니다. 모든 가용 함수에 대한 심층적인 설명은 전리품 및 거래 목록 함수 튜토리얼에서 확인할 수 있습니다.

set_count

이 엔트리와 함께 반환되는 아이템의 최소 및 최대 수량을 설정합니다.

                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "set_count",
                          "count": {
                            "min": 1,
                            "max": 6
                          }
                        }
                    ]
                }

위의 예시에서는 엔트리를 롤할 때마다 다이아몬드 1개~6개를 반환합니다.

set_data

아이템의 데이터 값을 설정합니다. 특정 포션이나 특정 색상 염료를 반환하는 등의 작업에 유용합니다. 또한 특정 색상의 양털이나 특정 나무 유형 같은 다양한 블록 값을 반환할 수도 있습니다.

                {
                    "type": "item",
                    "name": "minecraft:potion",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "set_data",
                        "data": 21
                      }
                    ]
                }

위의 예시에서는 회복 포션을 반환합니다.

                {
                    "type": "item",
                    "name": "minecraft:wool",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "set_data",
                        "data": 1
                      }
                    ]
                }

이 예시는 주황색 양털을 반환합니다.

specific_enchants

이 함수를 사용하면 아이템에 대한 구체적인 효과부여 목록을 설정할 수 있습니다. 사용자는 일반적으로는 게임에서 부여할 수 없는 효과를 아이템에 적용할 수 있습니다.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "specific_enchants",
                          "enchants": [
                             "knockback",
                             "fire_aspect"
                          ]
                        }
                    ]
                }

효과부여를 개체로 정의하여 효과부여 레벨을 정의할 수도 있습니다. 최대 효과부여 레벨은 하드 코딩되며 덮어쓸 수 없습니다.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "specific_enchants",
                          "enchants": [
                             {
                                "id": "knockback",
                                "level": 1
                             },
                             {
                                "id": "unbreaking",
                                "level": 3
                             }
                          ]
                        }
                    ]
                }

다중 함수

다중 함수를 정의할 수 있습니다. 다음은 두 가지 함수를 결합하는 예시입니다. 이 예시에서 이 엔트리는 회복 포션 1개~3개를 반환합니다.

                {
                    "type": "item",
                    "name": "minecraft:potion",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                              "min": 1,
                              "max": 3
                            }
                        },
                        {
                            "function": "set_data",
                            "data": 21
                        }
                    ]
                }

다중 함수는 같은 함수의 배수일 수 있지만, 이러한 함수가 서로 충돌한다면 마지막으로 정의한 함수가 적용됩니다.

예를 들어 아래 예시에서처럼 다중 set_count 함수를 사용하면 중복 함수 중 마지막 함수만 사용하게 되며, 따라서 아이템 개수는 1개~3개가 아닌 5개~7개가 됩니다.

                {
                    "type": "item",
                    "name": "minecraft:potion",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                              "min": 1,
                              "max": 3
                            }
                        },
                        {
                            "function": "set_count",
                            "count": {
                              "min": 5,
                              "max": 7
                            }
                        }
                    ]
                }

조건

조건은 풀을 사용하거나 개별 엔트리를 선택하려면 충족해야 하는 요구 사항 목록입니다. 모든 조건은 조건 목록에 저장됩니다. 조건은 한 번에 하나씩 실행됩니다. 목록에 있는 조건 하나가 실패하면, 같은 목록에 있는 다른 조건은 무시됩니다.

일치 도구 조건

match_tool 전리품을 떨어뜨리는 데 사용된 도구(또는 무기 또는 플레이어가 사용하는 모든 아이템)가 제공된 변경자 조건 세트와 일치하는지 확인하는 조건입니다. 사용된 술어는 수, 내구도, 효과부여, 아이템입니다.

  • 수: 아이템의 양
    • range_max: 최대값
    • range_min: 최소값
  • 내구도: 아이템의 내구도
    • range_max: 최대값
    • range_min: 최소값
  • 효과부여: 효과부여 목록
    • 효과부여: 효과부여 ID
    • 레벨: 효과부여 레벨
    • range_max: 최대값
    • range_min: 최소값
  • 아이템: 아이템 ID

예시:


"conditions": [  
            {  
              "condition": "match_tool",  
              "enchantments": [  
                {  
                  "enchantment": "sharpness",  
                  "levels": {  
                    "range_max": 6  
                  }  
                }  
              ],  
              "item": "minecraft:diamond_sword",  
              "count": 1,  
              "durability": {  
                "range_min": 1  
              }  
            }  
          ]  

풀 조건

조건을 풀에 적용하면 정의된 조건을 바탕으로 전체 풀을 실행할 수 있습니다.

아래 예시는 호출하는 개체가 스켈레톤 때문에 사망하여 다이아몬드나 석탄 조각이 반환되었을 때만 트리거됩니다.

{
    "pools": [
        {
            "conditions": [
                {
                    "condition": "killed_by_entity",
                    "entity_type": "minecraft:skeleton"
                }
            ],
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "weight": 1
                }
            ]
        }
    ]
}

엔트리 조건

조건을 롤에 있는 특정 entries에 적용할 수도 있습니다. 아래 예시는 호출하는 개체가 플레이어에 의해 사망하면 50% 확률로만 다이아몬드를 반환합니다. 다른 50% 호출에서는 석탄을 반환합니다.

{
    "pools": [
        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "weight": 1,
                    "conditions": [
                        {
                            "condition": "killed_by_player"
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "weight": 1
                }
            ]
        }
    ]
}

사용 가능한 다양한 함수조건을 탐색하면 플레이어의 환경을 진정으로 사용자 정의할 수 있게 됩니다. 아이템의 이름을 정하고 이야기를 부여하거나, 보급품이 가득한 자원 상자를 드롭하거나, 심지어 지시 사항이나 정보를 기록한 책을 만들 수도 있습니다.

다음 튜토리얼

선택된 아이템을 수정할 수 있는 수많은 다른 함수가 존재합니다. 다음 튜토리얼에서는 이러한 함수를 다룹니다.