From c8ffd73e8321f1381b282e9395f89b109d3545d1 Mon Sep 17 00:00:00 2001 From: sjcl Date: Mon, 10 Jul 2023 02:14:37 +0900 Subject: [PATCH] Improve canDragIntoSlot --- .../mixin/MixinContainerStorageCore.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/teamfruit/ezstorage2patch/mixin/MixinContainerStorageCore.java b/src/main/java/net/teamfruit/ezstorage2patch/mixin/MixinContainerStorageCore.java index 7353182..7ce1b8e 100644 --- a/src/main/java/net/teamfruit/ezstorage2patch/mixin/MixinContainerStorageCore.java +++ b/src/main/java/net/teamfruit/ezstorage2patch/mixin/MixinContainerStorageCore.java @@ -5,6 +5,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; import net.teamfruit.ezstorage2patch.IEZInventory; import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Mixin; @@ -12,6 +13,7 @@ import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @@ -24,6 +26,13 @@ public abstract class MixinContainerStorageCore extends Container { @Invoker(value = "rowCount", remap = false) protected abstract int invokeRowCount(); + private IInventory inventory; + + @Inject(method = "", at = @At(value = "TAIL"), locals = LocalCapture.CAPTURE_FAILHARD) + private void injectConstructor(EntityPlayer player, World world, int x, int y, int z, CallbackInfo ci, int startingY, int startingX, IInventory inventory) { + this.inventory = inventory; + } + @Inject(method = "slotClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/inventory/Container;slotClick(IILnet/minecraft/inventory/ClickType;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) private void injectSlotClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayer player, CallbackInfoReturnable cir, ItemStack val) { if (slotId != -999) { @@ -88,6 +97,6 @@ private void injectCustomSlotClick(int slotId, int clickedButton, int mode, Enti @Override public boolean canDragIntoSlot(@NotNull Slot slotIn) { - return !(slotIn.inventory instanceof InventoryBasic); + return !slotIn.inventory.equals(this.inventory); } }