¿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:
pack.mcmetaen la raíz del paquete — junto adata/, no dentro de él.data/<namespace>/— tu espacio de nombres (namespace), en minúsculas, sin espacios. Se convierte en el prefijo demy_namespace:my_function.- 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:
| Antes | Actual |
|---|---|
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
/datapack list— si el paquete no aparece en la lista, faltapack.mcmeta, está mal formado, o está un nivel demasiado profundo.- Aparece pero deshabilitado —
/datapack enable "file/my_pack". Fíjate en el prefijofile/y las comillas. - 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. /reloady 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.