마인크래프트/팩/데이터 팩

덤프버전 :

파일:나무위키+상위문서.png   상위 문서: 마인크래프트/팩




파일:마인크래프트 로고.svg


[ 펼치기 · 접기 ]
기본 플레이
시스템
세계 · 게임 모드 · 난이도 · 게임 규칙 · 엔딩 · 죽음 메시지 · 스플래시 · 명령어 · NBT
인게임
아이템 · · 개체 · 날씨 · 차원 · 생물군계 · 구조물 · 마법 부여 · 상태 효과 · 조작법 · 피해 · 업적(발전 과제)
도움말
튜토리얼 · (탐험 · 파밍 · 회로) · 브릿징 · PVP · 파쿠르 · 스피드런 · 건축
시리즈 및 매체
출시 에디션
자바 에디션 (업데이트) · 베드락 에디션 (업데이트) · 포켓 에디션* · 콘솔 에디션* · 파이 에디션*
파생 게임
Minecraft Dungeons · Minecraft Legends · Minecraft Education · Minecraft: Story Mode* · Minecraft Earth*
미디어
OST · 관련 서적 · 레고 · 더 무비 · Minecraft Live · Minecraft Now · Minecraft Monthly
유저 콘텐츠
창작 요소
2차 창작 · 망토 · · 모드 (개발 · · 모드팩) · 애드온 · (리소스 팩 · 데이터 팩) · 외부 프로그램 ·
멀티 콘텐츠
멀티플레이 · 서버 · 플러그인 · Realms · EULA
개발
개발 기초 · 모드 개발 · 플러그인 개발
기타
이야깃거리
여담 · 커뮤니티 · 사건사고 · 문제점 · 용어 · 지원 언어 · 머나먼 땅 · 이미테이션 게임
관련 문서
나무위키 마인크래프트 프로젝트 · 마인크래프트로 분류된 문서 · 마인크래프트의 하위 문서
* 표시는 서비스가 종료되었거나 개발이 중단되었다는 표시이다.
공식 MINECRAFT 서비스가 아닙니다. 나무위키는 MOJANG 또는 MICROSOFT에 의해 승인되지 않았거나 관련되지 않았습니다.


1. 개요
2. 제작
2.1. 폴더 구조
2.2. pack.mcmeta
2.3. functions 작성법
3. 기능
3.1. structures / 구조물
3.2. loot_tables / 드롭 아이템
3.3. advancements / 발전 과제
3.4. recipes / 조합법
3.5. functions / 함수
3.5.1. 매크로 기능
3.6. predicates / 술어
3.7. dimension / 차원
3.7.1. dimension_type
3.8. biome / 생물 군계
3.9. 아이템 수정자
4. 유저 표준


1. 개요[편집]


데이터 팩은 마인크래프트의 데이터들을 바꿀 수 있는 시스템이다. 스냅샷 17w43a부터 추가되었다. 별도의 모드로더 필요 없이 발전 과제, 함수, 드롭 아이템, 구조물, 조합법, 태그를 바꾸거나 추가할 수 있다. 맵 폴더 안에다가 data라는 이름의 폴더를 또 추가하여 폴더 형식의 데이터 팩을 넣은 다음 /datapack 명령어로 활성화하면 된다.

2. 제작[편집]


데이터 팩 파일은
.minecraft/saves/(월드)/datapacks
에다 파일을 만들어야 한다. 폴더 이름은 라틴 문자로 지어야 한다. 그리고
data
폴더 안에 또
namespace
에 해당하는 폴더를 만들어야 한다. 만약에
main
이라는 폴더를 만들었을 경우
functions
로 예를 들자면
function main/함수 이름
이다.

예를 들어,
world 라는 이름의 월드에 나만의 조합법을 만들어서 플레이하고 싶다면
.minecraft > saves > world > datapacks > (파일이름) > data > crafting > recipes > 원하는 조합법.json
이렇게 넣어야만 데이터 팩을 사용할 수 있다.


2.1. 폴더 구조[편집]


* (데이터 팩 이름)
* pack.mcmeta
* pack.png
* data
* (namespace)
* advancements
* (advancement).json
* chat_type
* (advancement).json
* damage_type
* (damage_type).json
* datapacks
* (데이터 팩 이름)
* dimension
* (dimension).json
* dimension_type
* (dimension type).json
* functions
* (function).mcfunction
* loot_tables
* (loot_table).json
* recipes
* (recipe).json
* predicates
* (predicate).json
* structures
* (structure).nbt
* tags
* banner_pattern
* (tag).json
* blocks
* (tag).json
* cat_variant
* (tag).json
* entity_types
* (tag).json
* damage_type
* (tag).json
* fluids
* (tag).json
* functions
* (tag).json
* items
* (tag).json
* worldgen
* biome
* (biome).json
* configured_carver
* (configured_carver).json
* configured_feature
* (configured_feature).json
* configured_structure_feature
* (configured_structure_feature).json
* configured_surface_builde
* (configured_surface_builder).json
* processor_list
* (processor_list).json
* template_pool
* (template_pool).json
* item_modifiers(1.17 JE)
* (item_modifiers).json(1.17 JE)

2.2. pack.mcmeta[편집]


데이터 팩 파일 안에는
pack.mcmeta
라는 파일을 만들어 주면 된다. 이 파일은 JSON 형식으로 되어있는데, 리소스팩 제작 때 필수로 넣어야 하는 것이다. 이 과정에서 오류가 발생하면 데이터 팩을 불러오지 못한다. 파일 확장자명이 안 보인다면 윈도우 기준으로 파일 탐색기에서 위에 있는 보기를 눌러준 다음에 파일 확장명을 체크 표시해주면 된다. 이 과정을 정상적으로 끝마치면 다음 코드를 작성하면 된다.
{    "pack": {        "pack_format": 10,        "description": "TEST Data pack"    }}
만약에 파일이 열리지 않는다면 연결 프로그램을 메모장 등으로 바꿔주어야 한다.

"description"
은 이 데이터 팩의 설명을 쓰는 곳이다.

pack_format
은 이 데이터 팩을 사용할 때 권장되는 마인크래프트 버전이다. 값에 따라 권장 버전이 다르며, 그 값은 다음과 같다. 생략된 값은 버전이 없거나, 스냅샷 버전에만 해당되는 값이며 주석 처리되어있다.

26
1.20.3 Pre-1
18
1.20.2
15
1.20 ~ 1.20.1
12
1.19.4(23w06a)
10
1.19 ~ 1.19.3
9
1.18.2
8
1.18 ~ 1.18.1
7
1.17 ~ 1.17.1
6
1.16.2 ~ 1.16.5
5
1.15 ~ 1.16.1
4
1.13 ~ 1.14.4

2.3. functions 작성법[편집]


말 그대로 함수로 플레이어가 커맨드 리스트를 적은 텍스트 파일을 저장하고 게임내에서 사용할 수 있게 해준다. 저장 확장자는 .mcfunction. UTF-8로 인코딩하여 사용하는 것이 여러 문제를 예방할 수 있다.[1]

기능을 사용하려면 먼저 텍스트 파일을 .minecraft/saves/(월드이름)/datapacks/(데이터팩 이름)/data/(네임 스페이스)/functions 내의 최상위 폴더에 배치해야 한다. 새로운 최상위 폴더의 이름은 내부 함수를 실행할 때 사용되는 네임 스페이스가 된다. 최상위 폴더 내의 하위 폴더에 기능을 배치 할 수도 있다. (데이터팩 이름) 폴더에 pack.mcmeta 파일이 있어야 한다.

예를 들어 custom:example/test라는 함수를 실행하면 data/custom/functions/example/test.mcfunction에서 데이터를 불러오게 된다. 만약 네임스페이스를 쓰지 않았다면 minecraft:라는 기본 설정된 네임 스페이스를 지정받게 된다. 하지만 나중에 기본 네임 스페이스를 추가하였을 때 의도하지 않은 동작을 방지하기 위해선 사용자 지정 네임 스페이스를 사용하는 것을 추천한다.

텍스트 파일로 이루어져 있는 함수는 수정하기 쉽고, 커맨드 블록에서 긴 명령어를 작성하는 것 보다 렉을 더 적게 유발한다.
/reload 명령어를 사용해서 함수 파일을 로딩하면 마인크래프트에 재접속 하지 않고 바뀐 함수를 적용할 수 있다.

/function 명령어를 성공적으로 입력했다면 함수 '<경로>'에 있는 명령어 <개수>개를 실행했습니다라고 출력된다. 내장된 함수는 위 메세지를 출력하지 않는다. 함수 내에서 명령의 성공적인 출력은 비교기로 측정 할 수 없다 (/ execute store 명령을 사용하여 동일한 효과를 얻을 수는 있다.)

싱글 플레이나 LAN서버에서 커맨드 블록이 실행하는 모든 함수는 permission 레벨2를 넘을 수 없다. 하지만 위와 다르게 보통의 멀티플레이 서버 구현 프로그렘에서는 server.properties의 function-permission-level에서 자유롭게 설정할 수 있다.

함수 구문을 작성하려면 아래의 functions 부분 참고.


3. 기능[편집]



3.1. structures / 구조물[편집]


이 구조물이 아니고 구조물 블록에 쓰이는 구조물이다.


3.2. loot_tables / 드롭 아이템[편집]


몹과 블록의 드롭 아이템과 구조물의 상자에 있는 아이템을 바꿀 수 있다. 또한 이것과 loot 명령어를 활용한다면 give 명령어 보다 더 많은 것을 구현 할 수 있다. 단, 일부 블록(기반암, 엔드 차원문 틀 등)의 경우 아이템을 얻을 수 없도록 하드코딩 되어 있으므로 드롭 아이템을 추가하더라도 아이템이 드롭되지 않는다.



3.3. advancements / 발전 과제[편집]


발전과제를 추가하고 이름과 달성 목표, 경험치를 바꿀 수 있다.

이 사이트에서 쉽게 생성할 수 있다.

데이터 팩에는 반복 명령 블록 같은 것이 없어서 사실상 데이터 팩에서 플레이어의 직접적인 명령 없이 특정 플레이어를 감지해 명령을 실행할 수 있는 유일한 수단이다. 업적을 달성하면 보상으로 function을 작동시키는 식으로 가능하다.

3.4. recipes / 조합법[편집]


조합법을 바꿀 수 있다. 키에 아이템을 설정해 놓고 패턴에서 그 키로 조합하는 것이다. 다만 아쉽게도 NBT는 지원 안한다.
NBT를 적용시킬 때에는 얻을 수 없는 아이템을 주고 그 아이템을 삭제한 뒤에 NBT가 적용된 아이템을 주는 방식으로 제작하면 된다.[2][3]

예시를 들면 다이아몬드 곡괭이의 경우 ' '은 빈 공간, X는 다이아몬드, #은 막대기라고 했을 시 패턴에서
{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    "XXX",
    " # ",
    " # "
  ],
  "key": {
    "#": {
      "item": "minecraft:stick"
    },
    "X": {
      "item": "minecraft:diamond"
    }
  },
  "result": {
    "item": "minecraft:diamond_pickaxe"
  }
}

라고 쓰면 다이아몬드 곡괭이의 조합법이 완성되는 것이다.

만약 나무 판자로 만드는 아이템같이[4] 다른 아이템으로도 조합이 가능하게 하고 싶다면 tag 파일을 따로 만들어 tag 파일을 tag 폴에 넣고 조합법에 집어넣을 수 있다.

원하는 조합법을 쉽게 만들 수 있는 외국 사이트가 있다. 사이트

3.5. functions / 함수[편집]


.mcfunction 파일 내부에 유효한 마인크래프트 명령어를 슬래쉬(/)를 제외하고 작성하여야 한다. 또 플레이어는 함수 텍스트 파일 내부에서 줄 맨앞에 #을 붙여서 명령어에 대한 설명을 작성 할 수 있다. 함수를 사용하면 커맨드 블록의 입력 한계값인 32,500보다 길게 쓸 수 있지만 내부에서 실행가능한 커맨드의 총합은 /gamerule maxCommandChainLength의 값으로 결정되고 기본값은 65,536자이다. /gamerule maxCommandChainLength의 설정값을 초과하는 명령어는 무시된다.

함수는 모든 명령을 단일 틱으로 실행하고 다른 함수 내에서 호출 된 함수는 부모함수와 동일한 틱으로 명령을 실행한다. 함수는 다른 함수를 사용하거나 커맨드 블록 환경에서 사용된다.[5] 여기에는 명령 발신자, 위치, 회전 등이 포함된다.

함수 내에서 발생하는 명령어의 문맥을 변경해도 명령 순서에 관계없이 다음 반복까지 동일한 함수 내 (또는 하위 함수 내)의 다른 명령에서 사용하는 명령 환경에 영향을 미치지 않는다. 단 / execute 명령은 예외이며 하위 함수의 명령 환경을 업데이트 한다.

  • 사용 예시

execute as @a at @s run function foo:bar


foo:bar
{{{#!wiki style="margin:1em calc(2em + 25px) 1em 1em"
\#\#는 주석을 의미합니다.
teleport @s ~ ~5 ~
setblock ~ ~-1 ~ emerald_block
execute at @s run setblock ~ ~-1 ~ diamond_block

위와 같은 명령어를 플레이어가 사용하면 플레이어는 y좌표가 5칸 위인 위치로 텔레포트 한다. 그리고 플레이어가 원래 밟고 있던 블록은 에매랄드 블록으로 바뀌며 텔레포트한 위치 바로 아래에 다이아몬드 블록이 생성된다. 이러한 특성은 대상 선택인자 매개변수의 영향을 받지 않는다.

@s라는 대상 지정 인자를 이용해서 엔티티가 함수를 사용하도록 할 수 있고, /execute as 로 연출자 엔티티를 수정하는 함수를 전 보다 잘 쓸 수 있는 가능성을 제시해 준다.[6] 이것은 더 간단한 과정으로 대상 선택 인자로 선택한 특정 엔티티를 사용하는 연출을 보다 높은 퀄리티로 구현할 수 있게 해주며 일반적으로 월드의 엔티티 숫자를 줄일 수 있다.

또한, /schedule function 명령어로 일정 시간 후에 Function파일을 작동시킬 수 있어 시간차를 두고 명령어를 사용하고 싶을 때도 유용하다. 명령 블록으로는 레드스톤 중계기나 떨어지는 블록 등을 이용해야 하나, schedule 명령어 덕분에 function을 쓴다면 굳이 명령 블록을 쓸 이유가 없어진다.

이외에 다양항 방법으로 함수를 활용할 수 있으며, 스크립트, 플러그인에서만 지원하던 함수 기능을 마인크래프트로 가져옴으로써 플러그인을 덜 쓰고도 동일한 효과를 낼 수 있게 되었다. 이는 마인크래프트 서버를 더 쾌적한 환경으로 운영할 수 있는 가능성을 제시해 주며, 전에는 시도해 보지 못했던 다양한 연출을 사용함으로써 새로운 미니게임의 탄생을 촉구할 수 있다.

give @s spawner{display:{Name:'{"text":"Speed Husk Spawner","color":"#0B9914","bold":true}'},BlockEntityTag:{SpawnCount:5,SpawnRange:7,Delay:60,MinSpawnDelay:300,MaxSpawnDelay:900,MaxNearbyEntities:10000,RequiredPlayerRange:14,SpawnData:{id:"minecraft:husk",Glowing:1b,CustomNameVisible:1b,Health:30f,CanBreakDoors:0b,Tags:["SpeedHusk"],CustomName:'{"text":"Speed  Husk","color":"#0B9C06","bold":true}',ArmorItems:[{},{},{id:"minecraft:golden_chestplate",Count:1b,tag:{Enchantments:[{id:"minecraft:protection",lvl:1s}]}},{}],ActiveEffects:[{Id:1b,Amplifier:3b,Duration:19999980,ShowParticles:1b}],Attributes:[{Name:generic.max_health,Base:30}]},SpawnPotentials:[{Weight:1,Entity:{id:"minecraft:husk",Glowing:1b,CustomNameVisible:1b,Health:30f,CanBreakDoors:0b,Tags:["SpeedHusk"],CustomName:'{"text":"Speed  Husk","color":"#0B9C06","bold":true}',ArmorItems:[{},{},{id:"minecraft:golden_chestplate",Count:1b,tag:{Enchantments:[{id:"minecraft:protection",lvl:1s}]}},{}],ActiveEffects:[{Id:1b,Amplifier:3b,Duration:19999980,ShowParticles:1b}],Attributes:[{Name:generic.max_health,Base:30}]}}]}} 1

이런 엄청난 길이의 코드를 파일에 저장하는 역할도 같이 할 수 있다. 따라서 서버 내 메모리 최척화와, 긴 명령어의 저장 등 다방면의 기능을 할 수 있기에, 코딩을 해야 한다면 커맨드블록을 최소화하고, 함수를 사용하는 것이 좋다.


3.5.1. 매크로 기능[편집]


1.20.2(23w31a)부터 추가된 기능. 일명 매개변수를 넣는 기능이다.

function <실행 파일> <compound>
또는
function <실행 파일> with <data source> [경로]


  • 사용 예시

execute as @a at @s run function foo:bar {baz:"World!"}

foo:bar
{{{#!wiki style="margin:1em calc(2em + 25px) 1em 1em"
\#\#는 주석을 의미합니다.
$say Hello $(baz)
위와 같은 명령어를 사용하면
$(baz)
의 변수값은 World!가 되니 실행되는 명령어는
/say Hello World!
가 된다.

3.6. predicates / 술어 [편집]


1.15부터 생겼으며 data 폴더에 있는 predicate 폴더에 만들면 된다.
주의사항! 여기있는 예시와 정보는 predicate의 극히 일부만 다루었다. 더욱 정확한 정보를 위해서는 영문위키를 찾아보는 것이 좋다.

시작 - < >
condition < > - condition의 ID 이다.
condition의 다른 부분 (아래에)

alternative
  • terms < >
    • terms - < >

block_state_property
  • block < > - 블록의 ID이다.
  • properties - < >

damage_source_properties - 데미지의 속성을 확인한다.
  • is_explosion < > - 폭발
  • is_projectile < > - 발사체
  • is_fire < > - 화염
  • is_lightning < > - 번개
  • is_magic < > - 마법
  • bypasses_magic < > - 배고픔에만 해당.
  • bypasses_invulnerability < > - 공허 피해에만 해당.
  • bypasses_armor < >
  • source_entity - < >
    • (모든 엔티티와 같다.)
  • direct_entity - < >
    • (모든 엔티티와 같다.)

entity_properties
  • entity < > - 조건을 확인할 엔티티를 지정한다.
    • predicate - < >
      • flags - < >
        • is_on_fire < > - 화염 여부 테스트.
        • is_sneaking < > - 웅크리기 여부 테스트.
        • is_sprinting < > - 달리기 여부 테스트.
        • is_swimming < > - 수영 여부 테스트.
        • is_baby < > - 아기 변형 여부 테스트.
    • (모든 엔티티와 같다.)

random_chance
  • chance < > - 성공확률를 정한다. 1이 100%이다. 0.5면 50%확률로 성공한다.

weather_check
  • raining < > - true이면 비가 올 때 성공한다.
  • thundering < > - true이면 천둥이 올 때 성공한다.

예시:
플레이어 웅크리기 감지
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터 팩 이름>\data\<namespace>\predicates\<파일 이름>.json
  {
    "condition": "minecraft:entity_properties",
    "predicate": {
 "flags": {
  "is_sneaking": true
 }
    },
    "entity":"this"
}
50% 확률로 명령어 실행
{
    "condition": "minecraft:random_chance",
    "chance": 0.5
}



3.7. dimension / 차원 [편집]


1.16부터 생겼으며 data 폴더 안에 minecraft 폴더 안에 dimension , dimension_type 폴더 만들면 된다. 그 폴더 안에 영어 소문자 _ 로만 차원 이름을 적고 .json을 만들면 된다.

추가된 차원을 가고 싶다면
/execute in (폴더 이름):(차원 이름) run tp ~ ~ ~
로 가면 된다. 추가된 차원에 엔티티를 소환하거나 블록을 설치하는 것 또한 execute in을 이용하면 된다.[7]

완전한 평지 엔드 버전
{
      "generator": {
        "settings": {
          "structures": {
            "stronghold": {
              "distance": 32,
              "spread": 3,
              "count": 128
            },
            "structures": {}
          },
          "layers": [
            {
              "height": 1,
              "block": "minecraft:bedrock"
            },
            {
              "height": 3,
              "block": "minecraft:end_stone"
            }
          ],
          "biome": "minecraft:the_end"
        },
        "type": "minecraft:flat"
      },
      "type": {
    "ultrawarm": false,
    "natural": true,
    "coordinate_scale": 1.0,
    "piglin_safe": false,
    "respawn_anchor_works": false,
    "bed_works": false,
    "has_raids": true,
    "has_skylight": false,
    "has_ceiling": false,
    "ambient_light": 0.0,
    "fixed_time": 6000,
    "logical_height": 256,
    "infiniburn": "minecraft:infiniburn_end"
  }
}


3.7.1. dimension_type[편집]


차원 타입을 설정하는 곳 기본값은 차원마다 다르다.

설명
minecraft:overworld
minecraft:the_nether
minecraft:the_end
ambient_light
빛의 양
0.0
0.1
0.0
bed_works
플레이어가 침대에 누울 수 있는지 여부, false일 시 폭발
true
false
false
coordinate_scale
각 월드 당 좌표 스케일. 네더에서 1블록 움직임은 오버월드에서 8블록 움직인 것과 같다.
1.0
8.0
1.0
effects
overworld로 설정하면 구름, 태양, 별, 달이 생기며, the_nether로 설정하면 네더처럼 짙은 안개가 된다. the_end로 설정할 경우 엔드와 같이 어두운 하늘이 된다. 이외의 값을 설정한 경우 자동으로 "minecraft:overworld"로 설정된다.
overworld
the_nether
the_end
fixed_time
선택 사항 0에서 24000사이 정수이다. 오버월드 처럼 하루를 만들고 싶다면 이것을 제거하면 된다.
(비어있음)
18000
6000
has_ceiling
기반암 천장이 있는지 여부
false
true
false
has_raids
습격을 일으킬 수 있는지 여부
true
false
true
has_skylight
오버월드처럼 낮에 하늘에 광원이 있는지 여부
true
false
false
infiniburn
무한히 불을 태울 수 있는 블록 태그
minecraft:infiniburn_overworld
minecraft:infiniburn_nether
minecraft:infiniburn_end
logical_height
블록 높이 제한, has_celling이 true면 해당 값의 y좌표에 기반암 천장이 생긴다.
256
128
256
natural
false이면 나침반이 무작위로 회전, true이면 네더 차원문이 좀비화 피글린 생성한다.
true
false
false
piglin_safe
피글린이 좀비화 피글린으로 변하지 않는 여부 true이면 생존.
false
true
false
respawn_anchor_works
플레이어가 리스폰 정박기를 사용할 수 있을지 여부, false인 상태로 사용시 폭발
false
true
false
ultrawarm
차원이 네더처럼 작동[8]하는지 여부
false
true
false



3.8. biome / 생물 군계[편집]


1.16.2부터 추가된 기능.


3.9. 아이템 수정자[편집]


1.17부터 추가된 기능. /Item modifier ... 명령어를 사용할 때 쓰인다.

더 많은 내용은 마인크래프트 영어 위키로 가면 된다.

시작 - < >
function < > - function의 ID 이다.
function의 다른 부분 (아래에)

limit_count
  • limit: 사용할 정확한 제한을 지정한다.

looting_enchant
  • count: 약탈 레벨당 추가 아이템 수를 지정한다. 숫자는 소수점 일 수 있으며 약탈 레벨을 곱한 후 반올림된다.
  • limit: 약탈 계산 후 스택에 있는 최대 아이템 수를 정한다. 값이 0이면 제한이 적용되지 않는다.

set_damage - 도구의 내구도를 수정한다.
  • damage: Number provider. 설정할 내구도 비율을 지정한다 (1.0은 손상되지 않음, 0.0은 내구도 없음).
  • add(JE 1.17) :선택 사항. 만약 true이면 현재 내구도에 비례하여 변경된다.

set_lore - 아이템에 설명을 추가한다.
  • lore

set_name - 아이템의 이름을 설정한다.
  • name
예시:
아이템 10개로 쌓기
파일 경로: .minecraft\saves\<맵 이름>\datapacks\<데이터 팩 이름>\data\<namespace>\item_modifiers\<파일 이름>.json
[
  {
    "function": "limit_count",
    "limit": 10
  }
]
도구의 내구도가 절반으로 깎이며 이름이 NamuWiki인 아이템으로 변경
[
  {
    "function": "set_damage",
    "damage": 0.5
  },
  {
    "function": "set_name",
    "name": "NamuWiki"
  }
]
아이템의 이름과 설명, 무기 피해량은 무한으로 설정한다.
[
  {
    "function": "set_name",
    "name": "Sword of the Universe"
  },
  {
    "function": "set_lore",
    "lore": [
 {"text":"Oi you! Yes you."},
 {"text":"What are you looking at?"},
 {"text":"Yes this sword has ∞ damage."},
 {"text":"Kinda overkill? I'm lazy ok. (╯°□°)╯︵ ┻━┻"}
 ]
  },
  {
    "function": "set_attributes",
    "modifiers": [{
 "attribute": "minecraft:generic.attack_damage",
 "name": "",
 "amount": 9e99,
 "operation": "addition",
 "slot": "mainhand"
 }]
  }
]



4. 유저 표준[편집]


데이터 팩에 포함된 태그나 명령어 등에 정해진 표준은 없지만, 유저들이 자체적으로 적당한 표준을 만들어 사용하고 있다.
사실 지키지 않아도 큰 문제는 없으나, 다른 데이터팩과의 충돌 방지나 호환을 위해 지키는 것이 좋다.

리소스팩 충돌 방지, 엔티티 및 태그 표준, 네임스페이스 표준 등 꽤 많은 양의 표준이 정해져 있다.

잘 읽어보면, Forge 모드 로더와의 연동도 고려하고 있는 것 같다

자세한 내용은 이 사이트를 참고하도록 하자.


5. 목록[편집]




[1] 메모장이나 notepad++ 등으로 여는 것이 가능하다.[2] 위의 발전과제를 응용해 특정 조합법을 해금하면 function을 작동하게 하고, function 파일에 /recipe와 /advancements 명령어를 이용해 조합법과 발전과제를 철회하고 /clear 명령어로 조합으로 나온 얻을 수 없는 아이템 삭제 후, /give 명령어로 NBT가 붙은 아이템을 주면 된다. 만약 이렇게만 하면 조합으로 나온 얻을 수 없는 아이템을 클릭하지 않고 q를 눌러 버리면 아이템도 지급되고 얻을 수 없는 아이템도 남긴 하나, function 파일을 하나 더 만들어 /kill 명령어로 얻을 수 없는 아이템을 제거하는 명령어를 넣고, 기존 function 파일에 /schedule function 명령어를 넣어 아이템을 삭제하면 된다.[3] 서바이벌, 모험 모드에서 제작할 경우 두 모드에서 볼 일이 없는 스폰 알, 명령 블럭 등을 사용하고 리소스팩을 이용해 모습을 자연스럽게 바꾸면 괴리감이 적어진다.크리에이티브 모드는 혼란스러워진다.[4] 참나무 판자 뿐만 아닌 다른 나무의 판자로도 조합이 가능한 경우[5] 즉 함수가 사용하는 명령어는 커맨드 블록이 사용한 것과 같이 취급된다.[6] 예를 들어서 좀비에 옷을 입히고 대사를 넣어서 마치 NPC가 플레이어를 안내하는 연출을 한다고 가정하자 전에는 스코어보드 명령어와 매개변수를 복잡하게 활용하고 밑에 특정 블록을 넣어서 좀비가 이를 따라가게 하는 식으로 연출했어야 했다. 하지만 함수를 사용하면 이 과정을 간단히 할 수 있고 훨씬더 적은 명령어로 이 연출을 가능하게 해준다.[7] /execute in (폴더 이름):(차원 이름) run summon...
/execute in (폴더 이름):(차원 이름) run setblock(혹은 fill) ...
[8] 물이 증발하거나 스펀지가 증발