11 * ($level - 1) + 1, 20 )); self::register("FIRE_PROTECTION", new ProtectionEnchantment( KnownTranslationFactory::enchantment_protect_fire(), Rarity::UNCOMMON, 0, 0, 4, 1.25, [ EntityDamageEvent::CAUSE_FIRE, EntityDamageEvent::CAUSE_FIRE_TICK, EntityDamageEvent::CAUSE_LAVA //TODO: check fireballs ], fn(int $level) : int => 8 * ($level - 1) + 10, 12 )); self::register("FEATHER_FALLING", new ProtectionEnchantment( KnownTranslationFactory::enchantment_protect_fall(), Rarity::UNCOMMON, 0, 0, 4, 2.5, [ EntityDamageEvent::CAUSE_FALL ], fn(int $level) : int => 6 * ($level - 1) + 5, 10 )); self::register("BLAST_PROTECTION", new ProtectionEnchantment( KnownTranslationFactory::enchantment_protect_explosion(), Rarity::RARE, 0, 0, 4, 1.5, [ EntityDamageEvent::CAUSE_BLOCK_EXPLOSION, EntityDamageEvent::CAUSE_ENTITY_EXPLOSION ], fn(int $level) : int => 8 * ($level - 1) + 5, 12 )); self::register("PROJECTILE_PROTECTION", new ProtectionEnchantment( KnownTranslationFactory::enchantment_protect_projectile(), Rarity::UNCOMMON, 0, 0, 4, 1.5, [ EntityDamageEvent::CAUSE_PROJECTILE ], fn(int $level) : int => 6 * ($level - 1) + 3, 15 )); self::register("THORNS", new Enchantment( KnownTranslationFactory::enchantment_thorns(), Rarity::MYTHIC, 0, 0, 3, fn(int $level) : int => 20 * ($level - 1) + 10, 50 )); self::register("RESPIRATION", new Enchantment( KnownTranslationFactory::enchantment_oxygen(), Rarity::RARE, 0, 0, 3, fn(int $level) : int => 10 * $level, 30 )); self::register("AQUA_AFFINITY", new Enchantment( KnownTranslationFactory::enchantment_waterWorker(), Rarity::RARE, 0, 0, 1, null, 40 )); self::register("SHARPNESS", new SharpnessEnchantment( KnownTranslationFactory::enchantment_damage_all(), Rarity::COMMON, 0, 0, 5, fn(int $level) : int => 11 * ($level - 1) + 1, 20 )); self::register("KNOCKBACK", new KnockbackEnchantment( KnownTranslationFactory::enchantment_knockback(), Rarity::UNCOMMON, 0, 0, 2, fn(int $level) : int => 20 * ($level - 1) + 5, 50 )); self::register("FIRE_ASPECT", new FireAspectEnchantment( KnownTranslationFactory::enchantment_fire(), Rarity::RARE, 0, 0, 2, fn(int $level) : int => 20 * ($level - 1) + 10, 50 )); //TODO: smite, bane of arthropods, looting (these don't make sense now because their applicable mobs don't exist yet) self::register("EFFICIENCY", new Enchantment( KnownTranslationFactory::enchantment_digging(), Rarity::COMMON, 0, 0, 5, fn(int $level) : int => 10 * ($level - 1) + 1, 50 )); self::register("FORTUNE", new Enchantment( KnownTranslationFactory::enchantment_lootBonusDigger(), Rarity::RARE, 0, 0, 3, fn(int $level) : int => 9 * ($level - 1) + 15, 50 )); self::register("SILK_TOUCH", new Enchantment( KnownTranslationFactory::enchantment_untouching(), Rarity::MYTHIC, 0, 0, 1, fn(int $level) : int => 15, 50 )); self::register("UNBREAKING", new Enchantment( KnownTranslationFactory::enchantment_durability(), Rarity::UNCOMMON, 0, 0, 3, fn(int $level) : int => 8 * ($level - 1) + 5, 50 )); self::register("POWER", new Enchantment( KnownTranslationFactory::enchantment_arrowDamage(), Rarity::COMMON, 0, 0, 5, fn(int $level) : int => 10 * ($level - 1) + 1, 15 )); self::register("PUNCH", new Enchantment( KnownTranslationFactory::enchantment_arrowKnockback(), Rarity::RARE, 0, 0, 2, fn(int $level) : int => 20 * ($level - 1) + 12, 25 )); self::register("FLAME", new Enchantment( KnownTranslationFactory::enchantment_arrowFire(), Rarity::RARE, 0, 0, 1, fn(int $level) : int => 20, 30 )); self::register("INFINITY", new Enchantment( KnownTranslationFactory::enchantment_arrowInfinite(), Rarity::MYTHIC, 0, 0, 1, fn(int $level) : int => 20, 30 )); self::register("MENDING", new Enchantment( KnownTranslationFactory::enchantment_mending(), Rarity::RARE, 0, 0, 1, fn(int $level) : int => 25, 50 )); self::register("VANISHING", new Enchantment( KnownTranslationFactory::enchantment_curse_vanishing(), Rarity::MYTHIC, 0, 0, 1, fn(int $level) : int => 25, 25 )); self::register("SWIFT_SNEAK", new Enchantment( KnownTranslationFactory::enchantment_swift_sneak(), Rarity::MYTHIC, 0, 0, 3, fn(int $level) : int => 10 * $level, 5 )); } protected static function register(string $name, Enchantment $member) : void{ self::_registryRegister($name, $member); } /** * @return Enchantment[] * @phpstan-return array */ public static function getAll() : array{ /** * @var Enchantment[] $result * @phpstan-var array $result */ $result = self::_registryGetAll(); return $result; } }