enchantment.modid.nom_enchantement
) est ce qui apparaît comme le nom du livre.Table of Contents
Ajouter des enchantements
Pour ajouter des enchantements à votre mod, vous devrez :
- créer une classe qui étend
Enchantment
ou un autre enchantement existant (tel queDamageEnchantment
) - enregistrer votre enchantement
- ajouter des fonctionnalités ou des mécaniques personnalisées si besoin
- ajouter des traductions pour votre enchantement 1)
Des enchantements peuvent soit avoir des fonctionnalités personnalisées implémentées séparément (telles que la cuisson de minerais minés), soit utiliser des mécaniques existantes (telles que DamageEnchantment
), qui sont appliquées lorsque cela est approprié. La classe Enchantment
de base a également plusieurs méthodes pour créer des fonctionnalités, telles que la méthode onTargetDamaged
.
Créer une classe d'enchantement
Nous allons créer un enchantement appelé Frost, qui ralentit les créatures. La durabilité et la puissance de l'effet de lenteur augmenteront en fonction du niveau de l'enchantement.
public class FrostEnchantment extends Enchantment { public WrathEnchantment(Weight weight, EnchantmentTarget target, EquipmentSlot[] slots) { super(weight, target, slots) } }
Vous devrez remplacer quelques méthodes pour définir des fonctionnalités de base.
getMinimumPower
est le niveau minimum requis pour obtenir l'enchantement dans une table d'enchantement. Nous allons le définir à 1, pour que vous puissiez l'obtenir à n'importe quel niveau :
@Override public int getMinimumPower(int int_1) { return 1; }
getMaximumLevel
est le nombre de niveaux que l'enchantement possède. 2)
@Override public int getMaximumLevel() { return 3; }
Enfin, nous allons implémenter notre effet de lenteur dans la méthode onTargetDamage
, qui est appelée lorsque vous frappez un ennemi avec un outil qui possède votre enchantement.
@Override public void onTargetDamaged(LivingEntity user, Entity target, int level) { if(target instanceof LivingEntity) { ((LivingEntity) target).addPotionEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 20 * 2 * level, level - 1)); } super.onTargetDamaged(user, target, level); }
La logique est assez simple : si l'entité que nous frappons peut avoir des effets de potion, un effet de lenteur lui ait donné. La durée est de 2 secondes par niveau et la puissance est équivalente au niveau.
Enregistrer un enchantement
Enregistrer des enchantements suit le même processus que d'habitude :
private static Enchantment FROST; @Override public void onInitialize() { FROST = Registry.register( Registry.ENCHANTMENT, new Identifier("tutorial", "frost"), new FrostEnchantment( Enchantment.Weight.VERY_RARE, EnchantmentTarget.WEAPON, new EquipmentSlot[] { EquipmentSlot.MAINHAND } ) ); }
Cela enregistre notre enchantement sous l'espace de noms tutorial:frost
, le définit comme un enchantement très rare et l'autorise seulement sur les outils de la main principale.
Ajouter des traductions et tester
Vous aurez également besoin d'ajouter une traduction pour votre enchantement. Ouvrez le fichier .lang de votre mod (en) et ajoutez une nouvelle entrée :
{ "enchantment.tutorial.frost": "Frost" }
Si vous allez en jeu, vous devriez pouvoir enchanter des armes de la main principale avec votre nouvel enchantement.