package net.radsteve.islanders.mixin; import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; import net.minecraft.screen.GrindstoneScreenHandler; 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(GrindstoneScreenHandler.class) public abstract class GrindstoneScreenHandlerMixin { @Shadow @Final Inventory input; @Shadow protected abstract ItemStack getOutputStack(ItemStack firstInput, ItemStack secondInput); @Inject(method = "updateResult", at = @At("HEAD"), cancellable = true) private void islanders$updateResult(CallbackInfo ci) { final ItemStack output = getOutputStack(input.getStack(0), input.getStack(1)); if (SpecialItem.Companion.find(output) != null) { Islanders.getLogger().info("Tried grindstoning special item"); ci.cancel(); } } }