package systems.brn.regexinghoppers.mixin; import net.minecraft.block.entity.HopperBlockEntity; import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; import net.minecraft.registry.Registries; import net.minecraft.util.math.Direction; 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.CallbackInfoReturnable; import systems.brn.regexinghoppers.RegexingHoppers; @Mixin(HopperBlockEntity.class) public class RegexingHopperMixin { @Inject(method = "transfer(Lnet/minecraft/inventory/Inventory;Lnet/minecraft/inventory/Inventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/math/Direction;)Lnet/minecraft/item/ItemStack;", at = @At(value = "HEAD"), cancellable = true ) private static void processContainer(Inventory from, Inventory _to, ItemStack stack, int slot, Direction side, CallbackInfoReturnable cir) { final String itemName = Registries.ITEM.getId(stack.getItem()).toString(); if(from != null) { if (RegexingHoppers.shouldNotMove(from, itemName)) { cir.setReturnValue(stack); if(from instanceof HopperBlockEntity) { ((HopperBlockEntityAccessor) from).setTransferCooldown(8); } return; } } if(_to != null) { if (RegexingHoppers.shouldNotMove(_to, itemName)) { cir.setReturnValue(stack); if(_to instanceof HopperBlockEntity) { ((HopperBlockEntityAccessor) _to).setTransferCooldown(8); } return; } } } }