diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java index 40eebfaa0..ce6284890 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/api/item/v1/FabricItem.java @@ -16,7 +16,6 @@ package net.fabricmc.fabric.api.item.v1; -import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -64,19 +63,6 @@ public interface FabricItem { return false; } - /** - * Return the attribute modifiers to apply when this stack is worn in a living entity equipment slot. - * Stack-aware version of {@link Item#getAttributeModifiers()}. - * - *

Note that attribute modifiers are only updated when the stack changes, i.e. when {@code ItemStack.areEqual(old, new)} is false. - * - * @param stack the current stack - * @return the attribute modifiers - */ - default AttributeModifiersComponent getAttributeModifiers(ItemStack stack) { - return ((Item) this).getAttributeModifiers(); - } - /** * Returns a leftover item stack after {@code stack} is consumed in a recipe. * (This is also known as "recipe remainder".) diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java index 0ae367957..94c7385aa 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java @@ -25,10 +25,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -import net.minecraft.component.ComponentType; -import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.item.Item; @@ -75,27 +72,4 @@ public abstract class ItemStackMixin implements FabricItemStack { original.call(instance, amount, serverWorld, serverPlayerEntity, consumer); } - - @Redirect( - method = "appendAttributeModifiersTooltip", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/ItemStack;getOrDefault(Lnet/minecraft/component/ComponentType;Ljava/lang/Object;)Ljava/lang/Object;" - ) - ) - public Object appendAttributeModifiersTooltip(ItemStack stack, ComponentType type, Object fallback) { - return getItem().getAttributeModifiers(stack); - } - - @Redirect( - method = {"applyAttributeModifier", "applyAttributeModifiers"}, - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/item/Item;getAttributeModifiers()Lnet/minecraft/component/type/AttributeModifiersComponent;" - ) - ) - public AttributeModifiersComponent applyAttributeModifiers(Item item) { - ItemStack stack = (ItemStack) (Object) this; - return item.getAttributeModifiers(stack); - } } diff --git a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java index 85fe06a55..cd970f6d9 100644 --- a/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java +++ b/fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item/UpdatingItem.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.test.item; import net.minecraft.block.BlockState; +import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.AttributeModifierSlot; import net.minecraft.component.type.AttributeModifiersComponent; import net.minecraft.entity.Entity; @@ -37,7 +38,12 @@ public class UpdatingItem extends Item { private final boolean allowUpdateAnimation; public UpdatingItem(boolean allowUpdateAnimation) { - super(new Settings()); + super(new Settings() + .component(DataComponentTypes.ATTRIBUTE_MODIFIERS, AttributeModifiersComponent.builder() + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, PLUS_FIVE, AttributeModifierSlot.MAINHAND) + .build() + ) + ); this.allowUpdateAnimation = allowUpdateAnimation; } @@ -63,14 +69,6 @@ public class UpdatingItem extends Item { return !stack.contains(ItemUpdateAnimationTest.TICKS) || stack.getOrDefault(ItemUpdateAnimationTest.TICKS, 0) % 600 < 300; } - @Override - public AttributeModifiersComponent getAttributeModifiers(ItemStack stack) { - // Give + 5 attack damage for 15 seconds every 30 seconds. - return AttributeModifiersComponent.builder() - .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, PLUS_FIVE, AttributeModifierSlot.MAINHAND) - .build(); - } - @Override public float getMiningSpeed(ItemStack stack, BlockState state) { return isEnabled(stack) ? 20 : super.getMiningSpeed(stack, state); diff --git a/gradle.properties b/gradle.properties index 7ef75247d..13324e4e9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx2560M org.gradle.parallel=true fabric.loom.multiProjectOptimisation=true -version=0.99.3 +version=0.99.4 minecraft_version=1.21-pre1 yarn_version=+build.2 loader_version=0.15.11 @@ -30,7 +30,7 @@ fabric-entity-events-v1-version=1.6.12 fabric-events-interaction-v0-version=0.7.10 fabric-game-rule-api-v1-version=1.0.52 fabric-gametest-api-v1-version=2.0.0 -fabric-item-api-v1-version=10.0.1 +fabric-item-api-v1-version=11.0.0 fabric-item-group-api-v1-version=4.0.43 fabric-key-binding-api-v1-version=1.0.47 fabric-keybindings-v0-version=0.2.45