Skip to content

Commit

Permalink
Fix ME Chest accepting Cells with items into its internal inventory (#…
Browse files Browse the repository at this point in the history
…681)

Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: Maya <[email protected]>
  • Loading branch information
3 people authored Feb 28, 2025
1 parent 252cedd commit b1b1164
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/main/java/appeng/util/InventoryAdaptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public static InventoryAdaptor getAdaptor(Object te, final ForgeDirection d) {
return new AdaptorP2PItem(p2p);
}
} else if (te instanceof TileChest) {
return new AdaptorMEChest((TileChest) te);
return new AdaptorMEChest(new WrapperMCISidedInventory(si, d), (TileChest) te);
}

final int[] slots = si.getAccessibleSlotsFromSide(d.ordinal());
Expand Down
40 changes: 38 additions & 2 deletions src/main/java/appeng/util/inv/AdaptorMEChest.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,37 @@
package appeng.util.inv;

import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;

import appeng.api.config.Actionable;
import appeng.api.config.InsertionMode;
import appeng.api.storage.data.IAEItemStack;
import appeng.me.storage.CellInventory;
import appeng.tile.storage.TileChest;
import appeng.util.item.AEItemStack;

public class AdaptorMEChest extends AdaptorIInventory {

private final TileChest meChest;
private final IInventory i;

public AdaptorMEChest(TileChest meChest) {
super(meChest.getInternalInventory());
public AdaptorMEChest(WrapperMCISidedInventory i, TileChest meChest) {
super(i);
this.meChest = meChest;
this.i = i;
}

@Override
public ItemStack addItems(final ItemStack toBeAdded) {
return this.addItems(toBeAdded, InsertionMode.DEFAULT);
}

@Override
public ItemStack addItems(ItemStack toBeAdded, InsertionMode insertionMode) {
if (meChest.getItemInventory() == null) {
if (CellInventory.isCell(toBeAdded)) {
return addCell(toBeAdded, true);
}
return toBeAdded;
}
// Ignore insertion mode since injecting into a ME system doesn't have this concept
Expand All @@ -28,14 +40,38 @@ public ItemStack addItems(ItemStack toBeAdded, InsertionMode insertionMode) {
return result == null ? null : result.getItemStack();
}

@Override
public ItemStack simulateAdd(final ItemStack toBeSimulated) {
return this.simulateAdd(toBeSimulated, InsertionMode.DEFAULT);
}

@Override
public ItemStack simulateAdd(ItemStack toBeSimulated, InsertionMode insertionMode) {
if (meChest.getItemInventory() == null) {
if (CellInventory.isCell(toBeSimulated)) {
return addCell(toBeSimulated, false);
}
return toBeSimulated;
}
// Ignore insertion mode since injecting into a ME system doesn't have this concept
IAEItemStack result = (IAEItemStack) meChest.getItemInventory()
.injectItems(AEItemStack.create(toBeSimulated), Actionable.SIMULATE, meChest.getActionSource());
return result == null ? null : result.getItemStack();
}

private ItemStack addCell(final ItemStack cell, final boolean modulate) {
// Snippet of AdaptorIInventory to prevent invalid stacks from transferring
final ItemStack leftoverItems = cell.copy();
final ItemStack nextItem = leftoverItems.copy();
nextItem.stackSize = 1; // Max stack size of cell should be 1
leftoverItems.stackSize -= nextItem.stackSize;
if (modulate) {
this.i.setInventorySlotContents(0, nextItem);
this.i.markDirty();
}
if (leftoverItems.stackSize <= 0) {
return null;
}
return leftoverItems;
}
}
2 changes: 1 addition & 1 deletion src/test/java/appeng/util/IterationCounterGlobalTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void cleanup() {

@Test
public void incrementGlobalDepthIterationTest() {
var prev = IterationCounter.fetchNewId();
int prev = IterationCounter.fetchNewId();
IterationCounter.incrementGlobalDepthWith(prev);
IterationCounter.decrementGlobalDepth();
assertEquals(IterationCounter.incrementGlobalDepth(), prev + 1);
Expand Down

0 comments on commit b1b1164

Please sign in to comment.