Remove FabricItem.getAttributeModifiers.

This commit is contained in:
modmuss50 2024-05-30 13:01:07 +01:00
parent c585e0a241
commit afdfc921b8
4 changed files with 9 additions and 51 deletions

View file

@ -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()}.
*
* <p>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".)

View file

@ -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<AttributeModifiersComponent> 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);
}
}

View file

@ -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);

View file

@ -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