Enchantements personnalisés sans mods : le format d'enchantement basé sur les données
Les enchantements sont devenus des fichiers JSON de datapack, donc un enchantement personnalisé ne nécessite aucun mod. Voici la structure du fichier, les composants d'effet qui font réellement quelque chose, et comment le rendre obtenable.
Les enchantements étaient autrefois codés en dur. Ils sont maintenant des données de datapack, ce qui signifie qu'un enchantement véritablement personnalisé — nouveau nom, nouvel effet, nouvelle courbe de coût — est un fichier JSON.
Où il se trouve
data/<namespace>/enchantment/lightning_strike.json
Singulier enchantment/, comme toutes les autres catégories de datapack depuis le renommage.
Le fichier minimum
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/sword",
"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"]
}
Cela donne un véritable enchantement qui apparaît à la table et s'affiche sur l'objet. Il ne fait encore rien — le comportement est séparé.
weightest la rareté à la Table d'enchantement. Le jeu utilise 10 pour commun, 1 pour très rare. C'est relatif, pas un pourcentage.slotsdécide où l'enchantement est actif :mainhand,offhand,armor,head, et ainsi de suite. Omettez-le et l'enchantement ne s'appliquera jamais.supported_itemsprend un tag d'objet ou une liste. Les tags#minecraft:enchantable/*existent déjà pour les groupes pertinents.
Le faire agir
effects attache le comportement :
"effects": {
"minecraft:post_attack": [{
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
run_function est la porte de sortie — tout ce qu'une fonction peut faire, l'enchantement peut le faire. Les types d'effets intégrés couvrent les dégâts, le Recul (Knockback), la durabilité, les butins d'objets et les attributs sans avoir besoin d'une fonction du tout, et ils sont moins coûteux.
requirements prend n'importe quel prédicat, donc filtrer sur le type de la Cible (Target), la météo, ou une chance aléatoire est un seul bloc de JSON.
Le nommer
description est un composant de texte, donc un nom codé en dur fonctionne :
"description": { "text": "Lightning Strike", "color": "gold" }
mais une clé translate plus un fichier de langue dans un pack de ressources est ce qui le rend lisible correctement pour les joueurs dans d'autres langues — la même raison pour laquelle ce site utilise les termes du jeu des propres traductions de Mojang.
Le rendre obtenable
Trois voies, et vous en voulez généralement plus d'une :
- Table d'enchantement — automatique une fois que
weightet la courbe de coût sont définis. - Tables de butin —
enchant_randomlyavec votre enchantement listé, ouenchant_with_levelss'il doit être en concurrence sur le coût. - Villageois qui échange — un Livre enchanté (Enchanted Book) avec votre enchantement dans l'objet de l'échange.
L'ajouter à #minecraft:in_enchanting_table est ce qui fait que la table le propose ; le tag est facile à oublier et produit un enchantement qui existe mais n'apparaît jamais.
Construisez le JSON d'enchantement et son équivalent de garniture d'Armure (Armor), avec les tags et les emplacements définis, dans le Générateur d'enchantements et de garnitures personnalisés.