diff --git a/src/main/java/org/betterx/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java b/src/main/java/org/betterx/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java index c9eff80e..c91f9185 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/shears/ItemPredicateBuilderMixin.java @@ -3,31 +3,39 @@ package org.betterx.bclib.mixin.common.shears; import org.betterx.worlds.together.tag.v3.CommonItemTags; import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.core.HolderSet; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Set; -import org.jetbrains.annotations.Nullable; +import java.util.Optional; @Mixin(ItemPredicate.class) public abstract class ItemPredicateBuilderMixin { + @Shadow @Final - private @Nullable Set items; + private Optional> items; + + @Unique + private static final ResourceLocation BCL_SHEARS = new ResourceLocation("shears"); @Inject(method = "matches", at = @At("HEAD"), cancellable = true) void bclib_isShears(ItemStack itemStack, CallbackInfoReturnable info) { - if (this.items != null && this.items.size() == 1 && this.items.contains(Items.SHEARS)) { - if (itemStack.is(CommonItemTags.SHEARS)) { - info.setReturnValue(true); + if (this.items != null && this.items.isPresent()) { + final HolderSet items = this.items.get(); + if (items.size() == 1 && items.get(0) != null && items.get(0).is(BCL_SHEARS)) { + if (itemStack.is(CommonItemTags.SHEARS)) { + info.setReturnValue(true); + } } } } diff --git a/src/main/java/org/betterx/bclib/mixin/common/shears/TripWireBlockMixin.java b/src/main/java/org/betterx/bclib/mixin/common/shears/TripWireBlockMixin.java index 1ada450b..cd02783a 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/shears/TripWireBlockMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/shears/TripWireBlockMixin.java @@ -13,17 +13,13 @@ import net.minecraft.world.level.block.state.BlockState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(TripWireBlock.class) public class TripWireBlockMixin { - @Inject(method = "playerWillDestroy(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;)V", at = @At("HEAD")) + @Inject(method = "playerWillDestroy", at = @At("HEAD")) private void bclib_isShears( - Level level, - BlockPos blockPos, - BlockState blockState, - Player player, - CallbackInfo info + Level level, BlockPos blockPos, BlockState blockState, Player player, CallbackInfoReturnable cir ) { MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear); }