From fa94611e28dacae53a05d5fa6f116bd53ac1c9ad Mon Sep 17 00:00:00 2001 From: Badtz Date: Mon, 22 Jun 2026 12:21:40 -0700 Subject: [PATCH] add mixin to handle 2x2 crafting grid --- .../prefixes/mixin/InventoryMenuMixin.java | 25 +++++++++++++++++++ src/main/resources/prefixes.mixins.json | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/dev/badtz/prefixes/mixin/InventoryMenuMixin.java diff --git a/src/main/java/dev/badtz/prefixes/mixin/InventoryMenuMixin.java b/src/main/java/dev/badtz/prefixes/mixin/InventoryMenuMixin.java new file mode 100644 index 0000000..566a6ef --- /dev/null +++ b/src/main/java/dev/badtz/prefixes/mixin/InventoryMenuMixin.java @@ -0,0 +1,25 @@ +package dev.badtz.prefixes.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import dev.badtz.prefixes.PrefixApplier; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemStack; + +@Mixin(InventoryMenu.class) +public class InventoryMenuMixin { + @Redirect(method = "quickMoveStack", at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/inventory/InventoryMenu;moveItemStackTo(Lnet/minecraft/world/item/ItemStack;IIZ)Z", + ordinal = 0)) + private boolean prefixes$applyRandomPrefixOnShiftCraft(InventoryMenu menu, ItemStack stack, + int startIndex, int endIndex, boolean reverseDirection, Player player, int slotIndex) { + if (slotIndex == 0 && !player.level().isClientSide()) { + PrefixApplier.applyRandomIfNeeded(stack, player.getRandom()); + } + + return ((AbstractContainerMenuAccessor) menu).prefixes$moveItemStackTo(stack, startIndex, + endIndex, reverseDirection); + } +} diff --git a/src/main/resources/prefixes.mixins.json b/src/main/resources/prefixes.mixins.json index 7c12e83..0fecbc0 100644 --- a/src/main/resources/prefixes.mixins.json +++ b/src/main/resources/prefixes.mixins.json @@ -8,7 +8,8 @@ "MerchantResultSlotMixin", "CrafterBlockMixin", "PlayerMixin", - "AbstractContainerMenuAccessor" + "AbstractContainerMenuAccessor", + "InventoryMenuMixin" ], "client": [], "injectors": {