mod for the islanders smp
at master 31 lines 1.6 kB view raw
1package net.radsteve.islanders.mixin; 2 3import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; 4import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 5import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 6import com.llamalad7.mixinextras.sugar.Local; 7import net.minecraft.block.entity.HopperBlockEntity; 8import net.minecraft.entity.ItemEntity; 9import net.minecraft.inventory.Inventory; 10import net.minecraft.item.ItemStack; 11import net.minecraft.util.math.Direction; 12import net.radsteve.islanders.SpecialItem; 13import org.spongepowered.asm.mixin.Mixin; 14import org.spongepowered.asm.mixin.injection.At; 15import org.spongepowered.asm.mixin.injection.Inject; 16import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 17 18@Mixin(HopperBlockEntity.class) 19public class HopperBlockEntityMixin { 20 @Inject(method = "onEntityCollided", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/HopperBlockEntity;insertAndExtract(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;Lnet/minecraft/block/entity/HopperBlockEntity;Ljava/util/function/BooleanSupplier;)Z"), cancellable = true) 21 private static void islanders$onEntityCollided(CallbackInfo ci, @Local ItemEntity entity) { 22 if (SpecialItem.Companion.find(entity.getStack()) != null) { 23 ci.cancel(); 24 } 25 } 26 27 @WrapMethod(method = "canInsert") 28 private static boolean islanders$canInsert(Inventory inventory, ItemStack stack, int slot, Direction side, Operation<Boolean> original) { 29 return original.call(inventory, stack, slot, side) && SpecialItem.Companion.find(stack) == null; 30 } 31}