Thaumic Energistics

Thaumic Energistics

14M Downloads

Essentia transformation bug (OP) Arcane terminal

R60D opened this issue ยท 2 comments

commented

GTNewHorizons/GT-New-Horizons-Modpack#3848
version of Thaumic Energistics (thaumicenergistics-1.1.3.0)

commented

What I suspect is happening, is the check isItemEqual is not a robust enough check

Call chain:
public void onClientRequestExtract
https://github.com/Nividica/ThaumicEnergistics/blob/AE2-RV3/src/main/java/thaumicenergistics/common/container/ContainerPartArcaneCraftingTerminal.java#L1226

switch ( mouseButton )
case ThEGuiHelper.MOUSE_BUTTON_LEFT:
if( isShiftHeld )
targetSlot = this.locateMergeSlot( requestStack );

public final Slot locateMergeSlot
https://github.com/Nividica/ThaumicEnergistics/blob/AE2-RV3/src/main/java/thaumicenergistics/common/container/ContainerWithPlayerInventory.java#L304

for( Slot slot : this.playerSlots )
if( slot.getHasStack() )
ItemStack slotStack = slot.getStack();
if( ( slotStack.stackSize < slotStack.getMaxStackSize() ) && slotStack.isItemEqual( stack ) )
return slot;

commented

An additional check should be something along the lines of

if(
    // Slot has room for more
    ( slotStack.stackSize < slotStack.getMaxStackSize() )
    // Same item
    && slotStack.isItemEqual( stack )
    // Neither has NBT, or NBTs are equal
    && (
        (!stack.hasTagCompound() && !slotStack.hasTagCompound() )
        || ItemStack.areItemStackTagsEqual(stack, slotStack)
    )
){

There may be additional considerations for items with NBT