Files
RegexingHoppers/src/main/java/systems/brn/regexinghoppers/mixin/RegexingHopperMixin.java
2024-05-05 12:08:45 +02:00

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;
}
}
}
}