Actualizado:

La estructura terminada

mypack/
├─ pack.mcmeta
└─ data/
   ├─ mypack/
   │  └─ function/
   │     ├─ hello.mcfunction
   │     ├─ load.mcfunction
   │     └─ tick.mcfunction
   └─ minecraft/
      └─ tags/
         └─ function/
            ├─ load.json
            └─ tick.json

mypack es tu espacio de nombres. Usa solo letras minúsculas, números y _.

1. pack.mcmeta

{
  "pack": {
    "pack_format": 48,
    "description": "Mi primer datapack"
  }
}

pack_format le dice al juego para qué versión es el pack: 48 es Java 1.21–1.21.1 y 61 es 1.21.4. Cambia con casi cada versión, y las versiones más nuevas cambiaron aún más el formato del archivo, así que comprueba el número de tu versión. Asegúrate de que Windows no lo guardó como pack.mcmeta.txt.

2. Un archivo de función

say El datapack funciona
give @s minecraft:diamond 1

Guárdalo como data/mypack/function/hello.mcfunction. Un comando por línea, sin barra al principio; las líneas que empiezan por # son comentarios.

3. Añadirlo a un mundo

  1. Copia la carpeta mypack en .minecraft/saves/NombreDelMundo/datapacks/.
  2. Ejecuta /reload en el mundo.
  3. Comprueba /datapack list.
  4. Ejecuta /function mypack:hello.

Después de editar, vuelve a hacer /reload. Si lo compartes como zip, pack.mcmeta tiene que estar en el nivel superior del zip.

4. Ejecutar al cargar y cada tick

{
  "values": ["mypack:load"]
}

Las funciones de data/minecraft/tags/function/load.json se ejecutan al abrir el mundo y con /reload. tick.json (con "mypack:tick") se ejecuta cada tick, 20 veces por segundo, así que mantenlo ligero. Para acciones con tiempo, /schedule es más ligero que tick.

Problemas habituales

Comprueba tu comando

El Command Error Doctor (en inglés) revisa en tu navegador los errores de sintaxis más comunes.