package net.minecraft.world.item.enchantment.providers; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import java.util.function.Function; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.RandomSource; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.ItemEnchantments; public interface EnchantmentProvider { Codec DIRECT_CODEC = BuiltInRegistries.ENCHANTMENT_PROVIDER_TYPE.byNameCodec().dispatch(EnchantmentProvider::codec, Function.identity()); void enchant(ItemStack stack, ItemEnchantments.Mutable enchantments, RandomSource random, DifficultyInstance difficulty); MapCodec codec(); }