Encantamientos personalizados sin mods: el formato de encantamiento basado en datos
Los encantamientos ahora son JSON de datapack, así que uno personalizado no necesita mod. Aquí tienes la forma del archivo, los componentes de efecto que realmente hacen algo y cómo hacerlo obtenible.
Los encantamientos solían estar codificados de forma fija. Ahora son datos de datapack, lo que significa que un encantamiento genuinamente personalizado —nombre nuevo, efecto nuevo, curva de coste nueva— es un archivo JSON.
Dónde se ubica
data/<namespace>/enchantment/lightning_strike.json
En singular enchantment/, como cualquier otra categoría de datapack desde el cambio de nombre.
El archivo mínimo
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/melee_weapon",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
Con eso ya tienes un encantamiento real que se carga y se muestra en el objeto. Todavía no hace nada —el comportamiento es aparte— y la mesa no lo ofrecerá hasta que esté etiquetado (ver más abajo).
weightes la rareza en la mesa de encantamientos. El vanilla usa 10 para común, 1 para muy raro. Es relativo, no un porcentaje.slotsdecide dónde está activo el encantamiento:mainhand,offhand,armor,head, etcétera. Es obligatorio: si lo omites, el archivo no se carga.supported_itemsacepta una etiqueta de objeto o una lista. Ya existen etiquetas#minecraft:enchantable/*para los grupos lógicos —melee_weapon,sharp_weapon,mining,armor, etcétera. No hayenchantable/sword; una etiqueta que no existe hace fallar el archivo.
Hacer que haga algo
effects le añade comportamiento:
"effects": {
"minecraft:post_attack": [{
"enchanted": "attacker",
"affected": "victim",
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
post_attack necesita saber de quién es el encantamiento (enchanted) y sobre quién recae el efecto (affected) —ambos son obligatorios. run_function es la salida de emergencia: cualquier cosa que pueda hacer una función, la puede hacer el encantamiento. Los tipos de efecto integrados cubren daño, empuje (knockback), durabilidad, botín de objetos y atributos sin necesidad de una función, y son más baratos.
requirements acepta cualquier predicado, así que condicionar según el tipo del objetivo, el clima o una probabilidad aleatoria es un solo bloque de JSON.
Ponerle nombre
description es un componente de texto, así que un nombre codificado de forma fija funciona:
"description": { "text": "Lightning Strike", "color": "gold" }
pero una clave translate más un archivo de idioma en un paquete de recursos es lo que hace que se lea correctamente para jugadores de otros idiomas —la misma razón por la que este sitio toma los términos del juego de las propias traducciones de Mojang.
Hacerlo obtenible
Tres rutas, y normalmente querrás más de una:
- Mesa de encantamientos —una vez que
weighty la curva de coste están configurados y el encantamiento está en#minecraft:in_enchanting_table. - Tablas de botín —
enchant_randomlycon tu encantamiento listado, oenchant_with_levelssi debería competir por coste. - Aldeano comercia —un libro encantado con tu encantamiento en el objeto del intercambio.
Añadirlo a #minecraft:in_enchanting_table es lo que hace que la mesa lo ofrezca; la etiqueta es fácil de olvidar y produce un encantamiento que existe pero nunca aparece.
Construye el JSON del encantamiento y su contraparte de molduras de armadura, con las etiquetas y ranuras configuradas, en el Custom Enchantment & Trim Builder.