Record Class Enchantment
java.lang.Object
java.lang.Record
net.minecraft.world.item.enchantment.Enchantment
public record Enchantment(Component description, Enchantment.EnchantmentDefinition definition, HolderSet<Enchantment> exclusiveSet, DataComponentMap effects)
extends Record
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic final recordstatic final record -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final com.mojang.serialization.Codec<Holder<Enchantment>> private final Enchantment.EnchantmentDefinitionThe field for thedefinitionrecord component.private final ComponentThe field for thedescriptionrecord component.static final com.mojang.serialization.Codec<Enchantment> private final DataComponentMapThe field for theeffectsrecord component.private final HolderSet<Enchantment> The field for theexclusiveSetrecord component.static final intstatic final StreamCodec<RegistryFriendlyByteBuf, Holder<Enchantment>> -
Constructor Summary
ConstructorsConstructorDescriptionEnchantment(Component description, Enchantment.EnchantmentDefinition definition, HolderSet<Enchantment> exclusiveSet, DataComponentMap effects) Creates an instance of aEnchantmentrecord class. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> voidapplyEffects(List<ConditionalEffect<T>> effects, LootContext context, Consumer<T> applier) static booleanareCompatible(Holder<Enchantment> first, Holder<Enchantment> second) static LootContextblockHitContext(ServerLevel level, int enchantmentLevel, Entity entity, Vec3 origin, BlockState state) booleancanEnchant(ItemStack stack) Deprecated.static Enchantment.CostconstantCost(int cost) static LootContextdamageContext(ServerLevel level, int enchantmentLevel, Entity entity, DamageSource damageSource) Returns the value of thedefinitionrecord component.definition(HolderSet<Item> supportedItems, int weight, int maxLevel, Enchantment.Cost minCost, Enchantment.Cost maxCost, int anvilCost, EquipmentSlotGroup... slots) definition(HolderSet<Item> supportedItems, HolderSet<Item> primaryItems, int weight, int maxLevel, Enchantment.Cost minCost, Enchantment.Cost maxCost, int anvilCost, EquipmentSlotGroup... slots) Returns the value of thedescriptionrecord component.voiddoPostAttack(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, EnchantmentTarget target, Entity entity, DamageSource damageSource) static voiddoPostAttack(TargetedConditionalEffect<EnchantmentEntityEffect> effect, ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity p_entity, DamageSource damageSource) static Enchantment.CostdynamicCost(int base, int perLevel) effects()Returns the value of theeffectsrecord component.static Enchantment.Builderenchantment(Enchantment.EnchantmentDefinition definition) static LootContextentityContext(ServerLevel level, int enchantmentLevel, Entity entity, Vec3 origin) final booleanIndicates whether some other object is "equal to" this one.Returns the value of theexclusiveSetrecord component.int<T> List<T> getEffects(DataComponentType<List<T>> component) static ComponentgetFullname(Holder<Enchantment> enchantment, int level) intgetMaxCost(int level) intintgetMinCost(int level) Returns the minimal value of enchantability needed on the enchantment level passed.intgetSlotItems(LivingEntity entity) Creates a new map containing all items equipped by an entity in.invalid reference
slots that the enchantment cares about
Deprecated.intfinal inthashCode()Returns a hash code value for this object.booleanisImmuneToDamage(ServerLevel level, int enchantmentLevel, Entity entity, DamageSource damageSource) booleanisPrimaryItem(ItemStack stack) Deprecated.Neo: UseIItemStackExtension.isPrimaryItemFor(Holder)This method does not respectIItemStackExtension.supportsEnchantment(Holder)since theHolderis not available, which makes the result of calling it invalid.booleanisSupportedItem(ItemStack item) Deprecated.static LootContextitemContext(ServerLevel level, int enchantmentLevel, ItemStack tool) static LootContextlocationContext(ServerLevel level, int enchantmentLevel, Entity entity, boolean enchantmentActive) booleanmatchingSlot(EquipmentSlot slot) voidmodifyAmmoCount(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat ammoCount) voidmodifyArmorEffectivness(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat armorEffectiveness) voidmodifyBlockExperience(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat blockExperience) voidmodifyCrossbowChargeTime(RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) voidmodifyDamage(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat damage) voidmodifyDamageFilteredValue(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat value) voidmodifyDamageProtection(ServerLevel level, int enchantmentLevel, ItemStack stack, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat damageProtection) voidmodifyDurabilityChange(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat durabilityChange) voidmodifyDurabilityToRepairFromXp(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat durabilityToRepairFromXp) voidmodifyEntityFilteredValue(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat value) voidmodifyFallBasedDamage(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat fallBasedDamage) voidmodifyFishingLuckBonus(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat fishingLuckBonus) voidmodifyFishingTimeReduction(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat fishingTimeReduction) voidmodifyItemFilteredCount(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat value) voidmodifyKnockback(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat knockback) voidmodifyMobExperience(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat mobExperience) voidmodifyPiercingCount(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat piercingCount) voidmodifyProjectileCount(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat projectileCount) voidmodifyProjectileSpread(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat projectileSpread) voidmodifyTridentReturnToOwnerAcceleration(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat tridentReturnToOwnerAcceleration) voidmodifyTridentSpinAttackStrength(RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) voidmodifyUnfilteredValue(DataComponentType<EnchantmentValueEffect> componentType, RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) voidonHitBlock(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity entity, Vec3 pos, BlockState state) voidonProjectileSpawned(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity entity) voidrunLocationChangedEffects(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, LivingEntity entity) voidstopLocationBasedEffects(int enchantmentLevel, EnchantedItemInUse item, LivingEntity entity) voidtick(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity entity) toString()Returns a string representation of this record class.
-
Field Details
-
description
The field for thedescriptionrecord component. -
definition
The field for thedefinitionrecord component. -
exclusiveSet
The field for theexclusiveSetrecord component. -
effects
The field for theeffectsrecord component. -
MAX_LEVEL
public static final int MAX_LEVEL- See Also:
-
DIRECT_CODEC
-
CODEC
-
STREAM_CODEC
-
-
Constructor Details
-
Enchantment
public Enchantment(Component description, Enchantment.EnchantmentDefinition definition, HolderSet<Enchantment> exclusiveSet, DataComponentMap effects) Creates an instance of aEnchantmentrecord class.- Parameters:
description- the value for thedescriptionrecord componentdefinition- the value for thedefinitionrecord componentexclusiveSet- the value for theexclusiveSetrecord componenteffects- the value for theeffectsrecord component
-
-
Method Details
-
constantCost
-
dynamicCost
-
definition
public static Enchantment.EnchantmentDefinition definition(HolderSet<Item> supportedItems, HolderSet<Item> primaryItems, int weight, int maxLevel, Enchantment.Cost minCost, Enchantment.Cost maxCost, int anvilCost, EquipmentSlotGroup... slots) -
definition
public static Enchantment.EnchantmentDefinition definition(HolderSet<Item> supportedItems, int weight, int maxLevel, Enchantment.Cost minCost, Enchantment.Cost maxCost, int anvilCost, EquipmentSlotGroup... slots) -
getSlotItems
Creates a new map containing all items equipped by an entity in. These items are not tested for having the enchantment.invalid reference
slots that the enchantment cares about
- Parameters:
entity- The entity to collect equipment for.
-
getSupportedItems
Deprecated. -
matchingSlot
-
isPrimaryItem
Deprecated.Neo: UseIItemStackExtension.isPrimaryItemFor(Holder)This method does not respectIItemStackExtension.supportsEnchantment(Holder)since theHolderis not available, which makes the result of calling it invalid. -
isSupportedItem
Deprecated. -
getWeight
public int getWeight() -
getAnvilCost
public int getAnvilCost() -
getMinLevel
public int getMinLevel() -
getMaxLevel
public int getMaxLevel() -
getMinCost
public int getMinCost(int level) Returns the minimal value of enchantability needed on the enchantment level passed. -
getMaxCost
public int getMaxCost(int level) -
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
areCompatible
-
getFullname
-
canEnchant
Deprecated.Checks if the enchantment can be applied to a given ItemStack.- Parameters:
stack- The ItemStack to test.
-
getEffects
-
isImmuneToDamage
public boolean isImmuneToDamage(ServerLevel level, int enchantmentLevel, Entity entity, DamageSource damageSource) -
modifyDamageProtection
public void modifyDamageProtection(ServerLevel level, int enchantmentLevel, ItemStack stack, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat damageProtection) -
modifyDurabilityChange
public void modifyDurabilityChange(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat durabilityChange) -
modifyAmmoCount
public void modifyAmmoCount(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat ammoCount) -
modifyPiercingCount
public void modifyPiercingCount(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat piercingCount) -
modifyBlockExperience
public void modifyBlockExperience(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat blockExperience) -
modifyMobExperience
public void modifyMobExperience(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat mobExperience) -
modifyDurabilityToRepairFromXp
public void modifyDurabilityToRepairFromXp(ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat durabilityToRepairFromXp) -
modifyTridentReturnToOwnerAcceleration
public void modifyTridentReturnToOwnerAcceleration(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat tridentReturnToOwnerAcceleration) -
modifyTridentSpinAttackStrength
public void modifyTridentSpinAttackStrength(RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) -
modifyFishingTimeReduction
public void modifyFishingTimeReduction(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat fishingTimeReduction) -
modifyFishingLuckBonus
public void modifyFishingLuckBonus(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat fishingLuckBonus) -
modifyDamage
public void modifyDamage(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat damage) -
modifyFallBasedDamage
public void modifyFallBasedDamage(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat fallBasedDamage) -
modifyKnockback
public void modifyKnockback(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat knockback) -
modifyArmorEffectivness
public void modifyArmorEffectivness(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat armorEffectiveness) -
doPostAttack
public static void doPostAttack(TargetedConditionalEffect<EnchantmentEntityEffect> effect, ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity p_entity, DamageSource damageSource) -
doPostAttack
public void doPostAttack(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, EnchantmentTarget target, Entity entity, DamageSource damageSource) -
modifyProjectileCount
public void modifyProjectileCount(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat projectileCount) -
modifyProjectileSpread
public void modifyProjectileSpread(ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat projectileSpread) -
modifyCrossbowChargeTime
public void modifyCrossbowChargeTime(RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) -
modifyUnfilteredValue
public void modifyUnfilteredValue(DataComponentType<EnchantmentValueEffect> componentType, RandomSource random, int enchantmentLevel, org.apache.commons.lang3.mutable.MutableFloat value) -
tick
-
onProjectileSpawned
public void onProjectileSpawned(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity entity) -
onHitBlock
public void onHitBlock(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, Entity entity, Vec3 pos, BlockState state) -
modifyItemFilteredCount
public void modifyItemFilteredCount(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, org.apache.commons.lang3.mutable.MutableFloat value) -
modifyEntityFilteredValue
public void modifyEntityFilteredValue(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, org.apache.commons.lang3.mutable.MutableFloat value) -
modifyDamageFilteredValue
public void modifyDamageFilteredValue(DataComponentType<List<ConditionalEffect<EnchantmentValueEffect>>> componentType, ServerLevel level, int enchantmentLevel, ItemStack tool, Entity entity, DamageSource damageSource, org.apache.commons.lang3.mutable.MutableFloat value) -
damageContext
public static LootContext damageContext(ServerLevel level, int enchantmentLevel, Entity entity, DamageSource damageSource) -
itemContext
-
locationContext
public static LootContext locationContext(ServerLevel level, int enchantmentLevel, Entity entity, boolean enchantmentActive) -
entityContext
public static LootContext entityContext(ServerLevel level, int enchantmentLevel, Entity entity, Vec3 origin) -
blockHitContext
public static LootContext blockHitContext(ServerLevel level, int enchantmentLevel, Entity entity, Vec3 origin, BlockState state) -
applyEffects
public static <T> void applyEffects(List<ConditionalEffect<T>> effects, LootContext context, Consumer<T> applier) -
runLocationChangedEffects
public void runLocationChangedEffects(ServerLevel level, int enchantmentLevel, EnchantedItemInUse item, LivingEntity entity) -
stopLocationBasedEffects
public void stopLocationBasedEffects(int enchantmentLevel, EnchantedItemInUse item, LivingEntity entity) -
enchantment
-
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object). -
description
Returns the value of thedescriptionrecord component.- Returns:
- the value of the
descriptionrecord component
-
definition
Returns the value of thedefinitionrecord component.- Returns:
- the value of the
definitionrecord component
-
exclusiveSet
Returns the value of theexclusiveSetrecord component.- Returns:
- the value of the
exclusiveSetrecord component
-
effects
Returns the value of theeffectsrecord component.- Returns:
- the value of the
effectsrecord component
-
IItemStackExtension.supportsEnchantment(Holder)