MC Toolkit

Guías / Solución de problemas

¿El paquete de datos no se carga? La estructura de carpetas y los tres nombres que deben coincidir

Un paquete de datos que no aparece en /datapack list tiene un problema de rutas, no de código. Aquí tienes el árbol exacto, la regla de espacios de nombres y las carpetas que cambiaron de nombre.

/datapack list no muestra nada, o muestra el paquete como deshabilitado. Casi siempre el JSON está bien y las carpetas están mal.

El árbol

world/datapacks/my_pack/
├── pack.mcmeta
└── data/
    ├── my_namespace/
    │   ├── function/         one .mcfunction per file
    │   ├── recipe/
    │   ├── loot_table/
    │   ├── advancement/
    │   └── predicate/
    └── minecraft/
        └── tags/
            └── function/
                └── load.json

Tres nombres deben coincidir y uno de ellos no es obvio:

  1. pack.mcmeta en la raíz del paquete — junto a data/, no dentro de él.
  2. data/<namespace>/ — tu espacio de nombres (namespace), en minúsculas, sin espacios. Se convierte en el prefijo de my_namespace:my_function.
  3. Los nombres de las carpetas de categoría, que cambiaron y suelen ser el culpable habitual.

Las carpetas pasaron a singular

Esto rompió muchos paquetes y muchos tutoriales:

AntesActual
functions/function/
recipes/recipe/
loot_tables/loot_table/
advancements/advancement/
predicates/predicate/
structures/structure/

Un paquete que usa los nombres en plural se carga — aparece en /datapack list — y simplemente no hace nada, que es el modo de fallo más confuso de todos. tags/ se mantuvo en plural, pero las carpetas dentro de él pasaron a singular como todo lo demás — tags/functions/ ahora es tags/function/. Sí, es inconsistente.

Ejecutar algo automáticamente

Dos etiquetas especiales:

data/minecraft/tags/function/load.json   → runs once on load/reload
data/minecraft/tags/function/tick.json   → runs every tick

Fíjate en data/minecraft/, no en tu propio espacio de nombres — la etiqueta pertenece a Minecraft, las funciones a las que apunta son tuyas:

{ "values": ["my_namespace:setup"] }

Diagnóstico en orden

  1. /datapack list — si el paquete no aparece en la lista, falta pack.mcmeta, está mal formado, o está un nivel demasiado profundo.
  2. Aparece pero deshabilitado — /datapack enable "file/my_pack". Fíjate en el prefijo file/ y las comillas.
  3. Aparece y está habilitado pero no hace nada — nombres de carpeta en plural, o una etiqueta de carga en tu propio espacio de nombres en lugar de minecraft.
  4. /reload y lee el registro (logs/latest.log, o la salida del lanzador). Una función con un error de sintaxis se descarta ahí con "Failed to load function …"; el chat solo dice que la recarga terminó.

¿Comprimido o no?

Ambas formas funcionan. Comprimido significa pack.mcmeta en la raíz del zip, exactamente igual que para los paquetes de recursos. La forma de carpeta es más cómoda mientras desarrollas porque /reload recoge los cambios sin volver a comprimir.

Ubicación en el servidor

En un servidor la ruta es <world>/datapacks/, donde <world> es el valor de level-name en server.properties — no la raíz del servidor. Colocar el paquete en la carpeta del servidor es el error más común en el lado del servidor.

Arma un paquete con los nombres de carpeta actuales y un pack.mcmeta válido, y luego descárgalo listo para colocar, con Datapack Studio — y pon tu etiqueta de carga en data/minecraft/tags/function/, como se indicó arriba.

Datapack Studio →

Más guías

Ver todas →