package net.radsteve.islanders.mixin; import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.screen.CrafterScreenHandler; import net.radsteve.islanders.Islanders; import net.radsteve.islanders.SpecialItem; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(CrafterScreenHandler.class) public class CrafterScreenHandlerMixin { @Shadow @Final private PlayerEntity player; @Inject(method = "updateResult", at = @At(value = "INVOKE", target = "Lnet/minecraft/inventory/CraftingResultInventory;setStack(ILnet/minecraft/item/ItemStack;)V"), cancellable = true) private void islanders$updateResult(CallbackInfo ci, @Local ItemStack stack) { if (SpecialItem.Companion.find(stack) != null) { Islanders.getLogger().info("{} tried crafting special item via crafter", player.getNameForScoreboard()); ci.cancel(); } } }