우선 조합법 시스템적 구조에 대해서는 https://potangaming.tistory.com/282?category=749620 참고하고


우린 https://crafting.thedestruc7i0n.ca/ 이걸로 조합법 만들면 됨




그리고 본문에서 데이터팩 경로에 대해서 얘기할거라 미리 알아봐야하는게 있음


설명이 개떡같아도 설명 전공자 아니니까 이해해주고 ㅇ ㅅ ㅇ


순정 데이터팩 추출하고 싶으면 https://potangaming.tistory.com/268?category=749620 참고해서 본인거 직접 뜯으면 됨


그리고 여기서 추출한 버전\데이터팩 이런식으로 경로를 말할거라


앞으로 말하는 경로는 예를들어 1.17.1꺼 뜯었으면 블라블라\1.17.1\data\minecraft\블라블라 이런식임


그리고 이건 어디까지나 본인이 뜯어서 추출한 장소일 뿐이고


실제 적용하려면 게임 생성시 직접 적용하거나 월드생성과는 관계없는 팩이라면 게임 생성 후 세이브 폴더에서 직접 추가하면 됨




데이터팩 적용법은 https://potangaming.tistory.com/268 참고


주의할건 저런식으로 안 하고 걍 리소스팩에 데이터팩 넣어도 되는거 같이 보이지만 


실제로는 적용 안 되니까 무조건 데이터팩 적용법으로 따라해





커스텀 레시피 데이터팩 제조해주는 사이트인데 이런식으로 생겨먹었고


1. 제작대로 만드는 것인지 아님 다른 종류의 제작방식인지 아이콘으로 고르고


2. 우측에서 결과물과 재료 원하는대로 배치하면 됨


3. 그리고 게임 버전 고르고 


4-1. 아래 다운로드를 json파일만 받을건지 

(기존 데이터팩에 알맞는 경로로 직접 넣음)


4-2. 아님 데이터팩으로 받을건지 골라서 받으면 됨 

(데이터팩이 아예 없을 경우 이걸로 받아서 압축 풀고 

나머지 추가할건 위에걸로 받아다가 알맞게 쑤셔넣음)


이 레시피 파일의 경로는 데이터팩 내부 기준 data\minecraft\recipes 이 위치임


5. 데이터팩으로 받은 경우 압축 풀고 pack.mcmeta파일 메모장으로 열어서 

   "pack_format":1 되어있는 부분을 본인꺼 버전에 맞게 수정하고 다시 압축해

   https://minecraft.fandom.com/ko/wiki/튜토리얼/리소스_팩_만들기#pack.mcmeta 참고




그런데 이런식으로 조합법 추가하거나 개조해도


조합법 해금 조건은 바뀌질 않음


그래서 없던 것을 넣으면 직접 레시피 때려맞춰서 결과물을 만들기 전엔 절대 해금 안 될 거고


재료를 개조한 경우 재료와 전혀 관계없이 해당 레시피 순정 조건대로만 해금 됨




그래서 레시피 해금 조건도 만들거나 바꿀 방법을 찾아냈는데


기본적으로 data\minecraft\advancements\recipes\종류 경로에 있음


이거는 제조해주는 사이트도 없는 것 같고 정보조차 없더라 ㅡ ㅅ ㅡ..?


그래서 내가 그냥 순정 파일들 뒤져가며 찾아보고 뜯어봐서 방법을 찾아냄 ㅇ ㅅ ㅇ




예를들어 끈(lead)의 레시피 습득 해금 조건은 다음과 같음


{

  "parent": "minecraft:recipes/root",

  "rewards": {

    "recipes": [

      "minecraft:lead"

    ]

  },

  "criteria": {

    "has_slime_ball": {

      "trigger": "minecraft:inventory_changed",

      "conditions": {

        "items": [

          {

            "items": [

              "minecraft:slime_ball"

            ]

          }

        ]

      }

    },

    "has_the_recipe": {

      "trigger": "minecraft:recipe_unlocked",

      "conditions": {

        "recipe": "minecraft:lead"

      }

    }

  },

  "requirements": [

    [

      "has_slime_ball",

      "has_the_recipe"

    ]

  ]

}


그리고 다른 애들도 내가 열어본 몇개의 샘플들 전부 저런식이었음


대충 요약하자면 빨간색 굵게 표시한 부분을 습득시 레시피를 해금해준다는 내용임


즉, slime_ball 대신에 다른 원하는걸 넣어두면 그걸 습득시 레시피가 해금된다는 거야


여기서 minecraft: 이거는 뒤에 붙는 slime_ball이 data\minecraft 경로에 있는 아이템이다 이말일듯? (※ 불확실함 ※)


실제로 저런식으로 경로명이 다른 모드가 있어서 시험해봤는데 얼추 맞는거 같긴 함..




다만 좀 다른거는 정확히 특정 아이템을 요구하는게 아니라


특정 종류의 아이템들을 아무거나 요구하는 경우도 있음


예를들면 돌도구들로 돌도끼(stone_axe)를 보자면


{

  "parent": "minecraft:recipes/root",

  "rewards": {

    "recipes": [

      "minecraft:stone_axe"

    ]

  },

  "criteria": {

    "has_cobblestone": {

      "trigger": "minecraft:inventory_changed",

      "conditions": {

        "items": [

          {

            "tag": "minecraft:stone_tool_materials"

          }

        ]

      }

    },

    "has_the_recipe": {

      "trigger": "minecraft:recipe_unlocked",

      "conditions": {

        "recipe": "minecraft:stone_axe"

      }

    }

  },

  "requirements": [

    [

      "has_cobblestone",

      "has_the_recipe"

    ]

  ]

}


이런식으로 굵게 표시한 부분이 위의 끈과는 다르게 item이 아니라 


tag로 되어있고 stone_tool_materials 이라는 특이한 이름으로 되어있는걸 볼 수 있는데


저걸 확인하고 싶다면 data\minecraft\tags\items 경로로 들어가서 해당 이름의 파일을 열어보면


{

  "replace": false,

  "values": [

    "minecraft:cobblestone",

    "minecraft:blackstone",

    "minecraft:cobbled_deepslate"

  ]

}


요런식으로 되어있는걸 볼 수 있음


해석하면 cobblestone / blackstone / cobbled_deepslate 이 셋에 포함되면 stone_tool_materials로 간주한다 이말임


근데 저 보라색의 존재 이유는 몰겠음 ㅡ ㅅ ㅡ...


일단 "has_cobblestone" 보면 cobblestone 습득시 발생한다는 조건인건 알겠는데..


stone_tool_materials이 cobblestone을 대신한다 이말인가?


궁굼해서 직접 새로운 세계 생성해가며 3가지 돌을 크리에이티브 모드로 얻어봤더니 그런 의미로 작동하긴 했음..




아무튼 대충 이런식으로 구성된 레시피의 습득 조건에서


주황색 빨간색 보라색을 잘 조절하면 원하는대로 변경할 수 있고 (※ 각 색깔별로는 내용이 같아야함)




안장(saddle)처럼 조합법이 없는 녀석을 조합법 만들고


이놈의 레시피 해금조건을 만들겠다면


두가지 방식 중 적합한 원하는 방식을 고른 뒤 


"recipe" 뒤에 붙는 이름을 해금조건을 만들 아이템 이름과 경로를 조합해 "minecraft:saddle"로 바꿔주면 됨


{

  "parent": "minecraft:recipes/root",

  "rewards": {

    "recipes": [

      "minecraft:saddle"

    ]

  },

  "criteria": {

    "has_leather": {

      "trigger": "minecraft:inventory_changed",

      "conditions": {

        "items": [

          {

            "items": [

              "minecraft:leather"

            ]

          }

        ]

      }

    },

    "has_the_recipe": {

      "trigger": "minecraft:recipe_unlocked",

      "conditions": {

        "recipe": "minecraft:saddle"

      }

    }

  },

  "requirements": [

    [

      "has_leather",

      "has_the_recipe"

    ]

  ]

}


예를들어 이런식으로 넣어주고 경로는 data\minecraft\advancements\recipes\transportation 인데


레시피 종류를 어떻게 알아내냐면 죤내 간단함


크리에이티브 모드로 E 누르고 해당 아이템이 어디있는지 찾아보면 됨



이런식으로 안장(saddle)이 있는 종류가 수송(transportation)임을 알 수 있음


경로는 고유 영어명으로 입력해야하는데 


이건 번역기 쓰지 말고 마크 언어를 영어로 설정해서 봐야 정확하게 나옴




만약 모드에서 추가된 거라서 기본 마크엔 없는 아이템이다?


그래도 위와 같이 똑같이 하면 됨


다만 마우스 댔을 때 나타나는 이름을 data\모드경로\advancements\recipes\이름 이렇게 넣음 됨





보다시피 가죽을 소유하게 되니까 안장(saddle)의 레시피가 해금되지??


난 안장의 레시피를 예전에 13w16a에서 공식적으로 있었다던 재료와 배치 그대로 사용해서


{

  "type": "minecraft:crafting_shaped",

  "pattern": [

    "XXX",

    "XIX",

    "I I"

  ],

  "key": {

    "X": {

      "item": "minecraft:leather"

    },

    "I": {

      "item": "minecraft:iron_ingot"

    }

  },

  "result": {

    "item": "minecraft:saddle"

  }

}


이렇게 짜놨음






이런식으로 응용해서 직접 데이터팩 레시피 만들어다가 써바


겉날개 삼지창 안장 사슬갑옷 등등 


절대 제작할 수 없는 아이템도 제작할 수 있음ㅋㅋㅋㅋㅋㅋㅋㅋㅋ



체인으로 만드는 사슬갑옷!


철갑과의 밸런스상 체인은 2개씩 만들어지게 수정하던지 하고..