promotional bannermobile promotional banner
premium banner
Fixes TConstruct Crafting Station bugs: shift-click ItemCraftedEvent receiving empty ItemStacks (#5599), and KubeJS modifyResult() callbacks failing to get the crafting player in non-vanilla crafting containers via ForgeHooks fallback.

Description

CurseForge Description

Crafting Station Fix

A lightweight mixin mod that fixes two bugs in TConstruct's Crafting Station related to how it interacts with Forge events and KubeJS recipes.

Bug 1: Empty ItemStack on Shift-Click (TConstruct#5599)

When shift-clicking the result slot of the Crafting Station, ItemCraftedEvent fires with an empty ItemStack instead of the actual crafted item. This breaks any mod or script listening to that event.

Root cause: quickMoveStack() passes the crafted stack through inventory movement operations that empty it in-place before passing it to takeResult(), which fires the event.

Fix: A @Redirect mixin re-fetches the crafted result directly from the recipe before the event fires.

Bug 2: KubeJS modifyResult() Fails in Crafting Station

KubeJS recipes using modifyResult() that depend on the crafting player (e.g. dimension checks, player-specific NBT) produce incorrect results when crafted in the Crafting Station. The callback receives null for the player.

Root cause: KubeJS extracts the player by checking for vanilla CraftingMenu or InventoryMenu instances only. TConstruct uses its own CraftingStationContainerMenu with a CraftingContainerWrapper that has no menu reference. TConstruct correctly calls ForgeHooks.setCraftingPlayer() before recipe assembly, but KubeJS never checks that fallback.

Fix: An @Inject mixin on ModifyRecipeCraftingGrid.getPlayer() adds a ForgeHooks.getCraftingPlayer() fallback, which works for any modded crafting container that properly sets the ForgeHooks context.

Requirements

  • Minecraft 1.20.1
  • Forge 47+
  • Tinkers' Construct 3.8+
  • KubeJS 2001.6+

Technical Details

This mod contains two mixins and no runtime code beyond them