Fixed Shears test

This commit is contained in:
Frank 2023-12-18 16:47:22 +01:00
parent 194e78c960
commit 2021063c6f
2 changed files with 18 additions and 14 deletions

View file

@ -3,32 +3,40 @@ 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<Item> items;
private Optional<HolderSet<Item>> 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<Boolean> info) {
if (this.items != null && this.items.size() == 1 && this.items.contains(Items.SHEARS)) {
if (this.items != null && this.items.isPresent()) {
final HolderSet<Item> 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);
}
}
}
}
}

View file

@ -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<BlockState> cir
) {
MethodReplace.addItemReplace(Items.SHEARS, BaseShearsItem::isShear);
}