Skip to content

Commit 7d23232

Browse files
committed
We got a working inventory manager
1 parent ec10b10 commit 7d23232

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/InventoryManagerPeripheral.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import net.minecraft.world.item.ArmorItem;
1919
import net.minecraft.world.item.ItemStack;
2020
import net.minecraft.world.level.block.entity.BlockEntity;
21+
import net.neoforged.neoforge.capabilities.Capabilities;
2122
import net.neoforged.neoforge.items.IItemHandler;
2223
import net.neoforged.neoforge.items.wrapper.PlayerArmorInvWrapper;
2324
import net.neoforged.neoforge.items.wrapper.PlayerInvWrapper;
@@ -57,22 +58,23 @@ public final MethodResult addItemToPlayer(String invDirection, Map<?, ?> item) t
5758
if (filter.rightPresent())
5859
return MethodResult.of(0, filter.getRight());
5960

60-
return MethodResult.of(addItemCommon(invDirection, filter.getLeft()), null);
61+
return addItemCommon(invDirection, filter.getLeft());
6162
}
6263

63-
private int addItemCommon(String invDirection, ItemFilter filter) throws LuaException {
64+
private MethodResult addItemCommon(String invDirection, ItemFilter filter) throws LuaException {
6465
Direction direction = validateSide(invDirection);
6566

66-
BlockEntity targetEntity = owner.getLevel().getBlockEntity(owner.getPos().relative(direction));
67-
IItemHandler inventoryFrom = null; // targetEntity != null ? targetEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, direction).resolve().orElse(null) : null;
6867
Pair<IItemHandler, Integer> inventoryTo = getHandlerFromSlot(filter.getToSlot());
68+
IItemHandler inventoryFrom = getLevel().getCapability(Capabilities.ItemHandler.BLOCK, owner.getPos().relative(direction), direction.getOpposite());
69+
if (inventoryFrom == null)
70+
return MethodResult.of(0, "INVENTORY_FROM_INVALID");
6971

7072
inventoryTo.ifRightPresent(slot -> filter.toSlot = slot);
7173

7274
//if (invSlot >= inventoryTo.getSlots() || invSlot < 0)
7375
// throw new LuaException("Inventory out of bounds " + invSlot + " (max: " + (inventoryTo.getSlots() - 1) + ")");
7476

75-
return InventoryUtil.moveItem(inventoryFrom, inventoryTo.getLeft(), filter);
77+
return MethodResult.of(InventoryUtil.moveItem(inventoryFrom, inventoryTo.getLeft(), filter));
7678
}
7779

7880
@LuaFunction(mainThread = true)
@@ -87,9 +89,8 @@ public final MethodResult removeItemFromPlayer(String invDirection, Map<?, ?> it
8789
private MethodResult removeItemCommon(String invDirection, ItemFilter filter) throws LuaException {
8890
Direction direction = validateSide(invDirection);
8991

90-
BlockEntity targetEntity = owner.getLevel().getBlockEntity(owner.getPos().relative(direction));
9192
Pair<IItemHandler, Integer> inventoryFrom = getHandlerFromSlot(filter.getFromSlot());
92-
IItemHandler inventoryTo = null; //targetEntity != null ? targetEntity.getCapability(ForgeCapabilities.ITEM_HANDLER, direction).resolve().orElse(null) : null;
93+
IItemHandler inventoryTo = getLevel().getCapability(Capabilities.ItemHandler.BLOCK, owner.getPos().relative(direction), direction.getOpposite());
9394

9495
if (inventoryTo == null)
9596
return MethodResult.of(0, "INVENTORY_TO_INVALID");

src/main/java/de/srendi/advancedperipherals/common/container/InventoryManagerContainer.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.srendi.advancedperipherals.common.container;
22

33
import de.srendi.advancedperipherals.common.container.base.BaseContainer;
4+
import de.srendi.advancedperipherals.common.container.base.SlotCondition;
5+
import de.srendi.advancedperipherals.common.container.base.SlotInputHandler;
46
import de.srendi.advancedperipherals.common.setup.ContainerTypes;
57
import de.srendi.advancedperipherals.common.setup.Items;
68
import net.minecraft.core.BlockPos;
@@ -16,12 +18,9 @@ public class InventoryManagerContainer extends BaseContainer {
1618
public InventoryManagerContainer(int id, Inventory inventory, BlockPos pos, Level level) {
1719
super(ContainerTypes.INVENTORY_MANAGER_CONTAINER.get(), id, inventory, pos, level);
1820
layoutPlayerInventorySlots(7, 84);
19-
/*if (tileEntity != null) {
20-
//TODO
21-
tileEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(handler -> {
22-
addSlot(new SlotInputHandler(handler, 0, 79, 29, new SlotCondition().setNeededItem(Items.MEMORY_CARD.get()))); //Input
23-
});
24-
}*/
21+
if (tileEntity != null) {
22+
addSlot(new SlotInputHandler(tileEntity.createItemHandlerCap(null), 0, 79, 29, new SlotCondition().setNeededItem(Items.MEMORY_CARD.get()))); //Input
23+
}
2524
}
2625

2726
@Override

0 commit comments

Comments
 (0)