mirror of
https://github.com/GTNewHorizons/NotEnoughItems.git
synced 2026-11-12 00:17:51 +00:00
Fix vanilla issue with workbench deleting excess on shift click when only some of the result can fit in the player's inventory
This commit is contained in:
1 parent
0c4b9ef204
commit
2bc7eb361b
2 files changed
+41
No files matched your search
@@ -23,6 +23,34 @@ ARETURN
|
||||
list commaFix
|
||||
INVOKESTATIC codechicken/nei/NEIServerUtils.fixTrailingCommaList(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
|
||||
|
||||
list n_workbenchFix
|
||||
ALOAD 0
|
||||
ALOAD 5
|
||||
BIPUSH 10
|
||||
BIPUSH 46
|
||||
ICONST_1
|
||||
INVOKEVIRTUAL net/minecraft/inventory/ContainerWorkbench.mergeItemStack (Lnet/minecraft/item/ItemStack;IIZ)Z
|
||||
|
||||
list workbenchFix
|
||||
NEW codechicken/lib/inventory/InventoryRange
|
||||
DUP
|
||||
ALOAD 0
|
||||
GETFIELD net/minecraft/inventory/ContainerWorkbench.inventorySlots : Ljava/util/List;
|
||||
BIPUSH 10
|
||||
INVOKEINTERFACE java/util/List.get (I)Ljava/lang/Object;
|
||||
CHECKCAST net/minecraft/inventory/Slot
|
||||
GETFIELD net/minecraft/inventory/Slot.inventory : Lnet/minecraft/inventory/IInventory;
|
||||
ICONST_0
|
||||
BIPUSH 36
|
||||
INVOKESPECIAL codechicken/lib/inventory/InventoryRange.<init>(Lnet/minecraft/inventory/IInventory;II)V
|
||||
ALOAD 5
|
||||
ICONST_1
|
||||
INVOKESTATIC codechicken/lib/inventory/InventoryUtils.insertItem(Lcodechicken/lib/inventory/InventoryRange;Lnet/minecraft/item/ItemStack;Z)I
|
||||
IFEQ LCONT
|
||||
ACONST_NULL
|
||||
ARETURN
|
||||
LCONT
|
||||
|
||||
#begin GuiContainer patches
|
||||
|
||||
list m_getManager
|
||||
|
||||
@@ -41,6 +41,18 @@ public class NEITransformer implements IClassTransformer
|
||||
transformer.add(new MethodInjector(new ObfMapping("net/minecraft/nbt/NBTTagList", "toString", "()Ljava/lang/String;"),
|
||||
asmblocks.get("n_commaFix"), asmblocks.get("commaFix"), true));
|
||||
|
||||
//fix workbench container losing items on shift click output without room for the full stack
|
||||
transformer.add(new MethodTransformer(new ObfMapping("net/minecraft/inventory/ContainerWorkbench", "func_82846_b", "(Lnet/minecraft/entity/player/EntityPlayer;I)Lnet/minecraft/item/ItemStack;"))
|
||||
{
|
||||
@Override
|
||||
public void transform(MethodNode mv) {
|
||||
ASMHelper.logger.debug("NEI: Applying workbench fix");
|
||||
InsnListSection key = findN(mv.instructions, asmblocks.get("n_workbenchFix").list).get(0);
|
||||
key.insertBefore(asmblocks.get("workbenchFix").rawListCopy());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
String GuiContainer = "net/minecraft/client/gui/inventory/GuiContainer";
|
||||
//add manager field
|
||||
transformer.add(new FieldWriter(ACC_PUBLIC, new ObfMapping(GuiContainer, "manager", "Lcodechicken/nei/guihook/GuiContainerManager;")));
|
||||
@@ -117,6 +129,7 @@ public class NEITransformer implements IClassTransformer
|
||||
{
|
||||
@Override
|
||||
public void transform(MethodNode mv) {
|
||||
ASMHelper.logger.debug("NEI: Injecting mouseUp call");
|
||||
ASMBlock gotoBlock = asmblocks.get("n_mouseUpGoto");
|
||||
ASMBlock needleBlock = asmblocks.get("n_mouseUp");
|
||||
ASMBlock injectionBlock = asmblocks.get("mouseUp");
|
||||
|
||||
Reference in new issue
Block a user