Réponse périmée pour les versions antérieures à la version 1.13 :
L'enchantement maximum effectif sera dépendant de chaque enchantement. Ce qui suit s'appuie sur des extraits tirés de la source à l'aide de 1.9 Mod Coder Pack
Pour reprendre la question liée : le minimum et le maximum techniques sont de -32 768 à 32 767, car le niveau est lu comme un court-circuit. L'entrée de toute valeur en dehors de cette plage entraînera un débordement pour se trouver dans cette plage.
Protection ordinaire/feu/lance/projectile, chute de plumes
Tous ces enchantements sont regroupés et réduisent les dégâts reçus. Le site base Le modificateur de réduction des dégâts sera modifié en fonction du type d'enchantement ainsi que du niveau :
Protection = enchantmentLevel
Fire Protection = enchantmentLevel * 2
Blast Protection = enchantmentLevel * 2
Projectile Protection = enchantmentLevel * 2
Feather Falling = enchantmentLevel * 3
Cette opération se fait par article et est totalisée. Si j'avais deux enchantements Protection contre le feu II, la valeur finale serait de 8 ( (2 * 2) + (2 * 2)
). Si j'avais une protection incendie III et une protection II, la valeur finale est de 8 ( 2 + (3 * 2)
). Cela prend en compte le fait d'avoir plusieurs enchantements de "protection" sur la même pièce d'armure (par exemple, un plastron en fer de protection V et de protection contre les explosions III réduira davantage les dégâts que si l'on n'avait que l'un ou l'autre).
Une fois que cette valeur modificatrice initiale est obtenue, elle est poussée par la formule suivante :
newDamageTaken = oldDamageTaken * (1.0 - clamp_float(modifier, 0.0F, 20.0F) / 25)
En raison de la pince entre 0,0 et 20,0, la valeur totale de modification la plus élevée n'est que de 20,0, et le minimum est également de 0,0. Les niveaux d'enchantement négatifs ne feront essentiellement rien pour ces enchantements.
En tant que tels, les niveaux d'enchantement les plus élevés et les plus viables sont les suivants réduction des dommages à condition que ce soit le seul enchantement utilisé (car le fait de les mélanger modifiera la valeur la plus élevée, puisqu'ils sont tous regroupés dans la même valeur de modification) :
Protection = 20
Fire Protection = 10
Blast Protection = 10
Projectile Protection = 10
Feather Falling = 7
Fourchette maximale de niveaux pour l'efficacité individuelle des avantages secondaires :
Fire Protection (reducing "set on fire" duration) = minimum 1, maximum 32767
Blast Protection (knockback resistance) = minimum 1, maximum 32767
Notez que les avantages secondaires ne sont pas un total de niveaux, mais le plus haut niveau d'enchantement disponible parmi les pièces d'armure. S'il y a plusieurs du même enchantement sur l'objet, seul le premier de la liste sera vérifié.
Respiration
Le code suivant détermine si le joueur perdra ou non de l'air sous l'eau.
level > 0 && this.rand.nextInt(level + 1) > 0 ? currentAir : currentAir - 1;
Si le niveau d'enchantement est de 1+, une valeur entière aléatoire comprise entre 0 et 0,5. level + 1
est choisi. Si la valeur choisie est supérieure à 0, le joueur ne perdra pas d'air. Par conséquent, le niveau minimum est 1 et le maximum est 32 767 (ce qui réduit considérablement les chances que 0 soit choisi).
Aqua Affinity
Le code suivant détermine si la vitesse de franchissement des blocs du joueur sera divisée par 5.0 ou non :
if (this.isInsideOfMaterial(Material.water) && !EnchantmentHelper.hasAquaAffinity(this))
{
efficiency /= 5.0F;
}
Par conséquent, les niveaux minimum et maximum pour Aqua Affinity sont tous deux de 1.
Strider de profondeur
Le code suivant obtient le niveau d'enchantement du joueur de Depth Strider, et s'il est supérieur à 3.0, il sera ramené à 3.0.
float depthStrider = (float)EnchantmentHelper.func_185294_d(this);
if (depthStrider > 3.0F)
{
depthStrider = 3.0F;
}
...
if (depthStrider > 0.0F)
{
// Modify current speed
}
Comme la vitesse du joueur ne sera modifiée que si le niveau d'enchantement est supérieur à 0, le minimum est 1 et le maximum est 3.
Marcheur de givre
Si le niveau de Frost Walker du joueur est supérieur à 0, la modification suivante est apportée au niveau avant d'être utilisé :
float range = (float)Math.min(16, 2 + level);
La plus petite des deux valeurs sera choisie, ce qui signifie que le minimum est 1 et le maximum est 14.
Épines
Le code suivant détermine si l'enchantement fonctionnera ou non en premier lieu.
level <= 0 ? false : random.nextFloat() < 0.15F * (float)level;
Tant que le niveau d'enchantement est égal ou supérieur à 1, il y a une 0.15 * level
chance que l'enchantement fonctionne. Rien que pour cela, un niveau d'enchantement maximum de 7 garantira que les dégâts seront traités.
Mais le code suivant détermine les dommages à infliger :
level > 10 ? level - 10 : 1 + random.nextInt(4);
Si le niveau d'enchantement est supérieur à 10, les dégâts infligés sont égaux à level - 10
. Cependant, il ne serre pas cette valeur finale.
Par conséquent, le minimum est 1 et le maximum est 32 767 (qui infligera 32 757 dommages).
Efficacité
A condition que le niveau d'enchantement soit supérieur à 0, ce qui suit modifie l'efficacité du joueur en fonction de l'enchantement d'efficacité :
efficiency += (float)(level * level + 1);
Par conséquent, le minimum est 1 et le maximum est 32 767. Le maximum est pertinent pour chaque bloc, donc plus le bloc est "difficile", plus le niveau nécessaire pour l'extraire instantanément est élevé.
Silk Touch
Comme pour Aqua Affinity, tout ce qui est vérifié est que le niveau d'enchantement est supérieur à 0, donc le minimum et le maximum est de 1.
Fortune
Celui-ci est beaucoup plus difficile à parcourir car il diffère par bloc. Dans des circonstances non répertoriées, supposez que le minimum est -32 768 et le maximum est 32 767.
Quelques exemples notables :
- Les cultures laissent tomber leurs graines à
3 + level
ce qui signifie qu'un niveau d'enchantement négatif empêchera en fait les graines de tomber (tout en assurant la récolte).
- La poussière de glowstone est bridée entre 1 et 4, avec +1 par niveau, ce qui signifierait que le niveau minimum d'efficacité est de 1 et le maximum de 3.
- Gravel réglera le niveau de fortune d'entrée à 3 s'il est supérieur. Les niveaux négatifs fonctionnent bien, le minimum est donc de -32 768 (ce qui réduit considérablement les risques de chute de silex).
- Les melons choisiront la valeur la plus basse entre
1 + level
et 9. Comme il n'y a pas de serrage, le minimum est de -32,768 (pas de chute de melons) et le maximum est de 8.
- La verrue naine requiert un minimum de 1, mais peut avoir un maximum de 32 767.
- Tous les minerais nécessitent un minimum de 1, mais peuvent avoir un maximum de 32 767, sauf minerai de redstone (où le minimum est de -32,768 pour ne rien laisser tomber).
- Les lanternes de mer sont bloquées entre 1 et 5, avec +1 par niveau, ce qui signifierait que le niveau minimum d'efficacité est de 1 et le maximum de 4.
Unbreaking
Rien de particulier ici, juste le minimum habituel de 1, le maximum de 32 767.
La chance de la mer
Rien de spécial non plus, minimum de -32,768, maximum de 32,767.
Leurre
Minimum de -32,768, maximum de 8. En raison de la façon dont la réduction du temps fonctionne, toute valeur supérieure à 8 empêche tout "mordant". Un niveau négatif augmentera en effet considérablement le temps nécessaire pour attraper quoi que ce soit.
Réparer
Comme pour Aqua Affinity, tout ce qui est vérifié est que le niveau d'enchantement est supérieur à 0, donc le minimum et le maximum est de 1.
La puissance, le punch
Tous deux ont un minimum de 1 et un maximum de 32 767.
Flamme
Comme pour Aqua Affinity, tout ce qui est vérifié est que le niveau d'enchantement est supérieur à 0, donc le minimum et le maximum est de 1. Il fixera toujours la durée du feu à 100 ticks.
Infinity
Comme pour Aqua Affinity, tout ce qui est vérifié est que le niveau d'enchantement est supérieur à 0, donc le minimum et le maximum est de 1.
Tranchant, Frappe, Fléau des Arthropodes
Tout comme les enchantements de protection, ils sont regroupés en un seul modificateur.
Les formules suivantes indiquent le modificateur de dégâts à appliquer à la mob touchée :
Sharpness = 1.0F + Math.max(0, level - 1) * 0.5F
Smite = level * 2.5F
Bane of Arthropods = level * 2.5F
Par conséquent, pour la netteté, le niveau d'efficacité minimum est 1 et le maximum est 32 767. Les valeurs négatives n'ont aucun effet sur la netteté.
Pour Smite et Bane of Arthropods, le niveau peut être négatif mais les dégâts finaux ne peuvent pas être inférieurs à 0. Mais comme le joueur peut recevoir un objet qui lui permet d'infliger pratiquement n'importe quel montant de dégâts, la valeur minimale est bien de -32,768 pour Smite et Bane of Arthropods.
Knockback
Un niveau minimum de 1 est requis, avec un maximum de 32 767.
Aspect du feu
Le niveau minimum est de 1. Le maximum est techniquement toujours de 32 767, mais ce qui suit modifie la durée :
entityIn.setFire(level * 4);
Depuis le Fire
est également enregistré en tant que raccourci, 32767 * 4
dépasserait le maximum et déborderait. Par conséquent, le niveau maximal sans provoquer de débordement est de 8 191.
Pillage
Le minimum est de 1 et le maximum est de 32 767.
Deux nouveaux enchantements, bien qu'appelés "malédictions", ont été ajoutés à la 1.11.
Malédiction de la liaison
Tout ce qui est vérifié est que le niveau est supérieur à 0, donc le minimum et le maximum effectifs sont de 1. Cela s'applique aussi bien à un joueur qui essaie de déplacer une armure qu'à un mobs qui essaie d'échanger son équipement contre un meilleur. ArmorItems
tandis que leur CanPickUpLoot
est vrai.
Malédiction de la disparition
Comme pour la malédiction de liaison, seul un niveau supérieur à 0 est vérifié (donc un niveau effectif minimum et maximum de 1). Cela vaut aussi bien pour l'inventaire du joueur que pour le HandItems/ArmorItems
listes pour mobs.