43 lines
1.7 KiB
Java
43 lines
1.7 KiB
Java
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<ItemStack> 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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|