enchantment.modid.nom_enchantement
) est ce qui apparaît comme le nom du livre.Pour ajouter des enchantements à votre mod, vous devrez :
Enchantment
ou un autre enchantement existant (tel que DamageEnchantment
)
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
.
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 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.
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.
enchantment.modid.nom_enchantement
) est ce qui apparaît comme le nom du livre.