Skip to content

Commit 4ef5f7d

Browse files
committed
move methods from InventoryUtil to ItemUtil
1 parent acc53b3 commit 4ef5f7d

6 files changed

Lines changed: 142 additions & 145 deletions

File tree

src/main/java/de/srendi/advancedperipherals/common/addons/appliedenergistics/AEApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import de.srendi.advancedperipherals.common.util.inventory.FluidFilter;
4040
import de.srendi.advancedperipherals.common.util.inventory.FluidUtil;
4141
import de.srendi.advancedperipherals.common.util.inventory.GenericFilter;
42-
import de.srendi.advancedperipherals.common.util.inventory.InventoryUtil;
42+
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
4343
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
4444
import io.github.projectet.ae2things.item.DISKDrive;
4545
import io.github.projectet.ae2things.storage.DISKCellHandler;
@@ -583,7 +583,7 @@ public static long getTotalExternalItemStorage(IGridNode node) {
583583
StorageBusPart bus = (StorageBusPart) iGridNode.getService(IStorageProvider.class);
584584
BlockPos connectedInventoryPos = bus.getHost().getBlockEntity().getBlockPos().relative(bus.getSide());
585585

586-
IItemHandler itemHandler = InventoryUtil.extractHandler(null, bus.getLevel(), connectedInventoryPos, bus.getSide());
586+
IItemHandler itemHandler = ItemUtil.extractHandler(null, bus.getLevel(), connectedInventoryPos, bus.getSide());
587587
if (itemHandler != null) {
588588
for (int i = 0; i < itemHandler.getSlots(); i++) {
589589
ItemStack stack = itemHandler.getStackInSlot(i);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import de.srendi.advancedperipherals.common.util.EmptyLuaTable;
1313
import de.srendi.advancedperipherals.common.util.LuaConverter;
1414
import de.srendi.advancedperipherals.common.util.Pair;
15-
import de.srendi.advancedperipherals.common.util.inventory.InventoryUtil;
15+
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
1616
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
1717
import de.srendi.advancedperipherals.lib.peripherals.BasePeripheral;
1818
import net.minecraft.core.Direction;
@@ -105,7 +105,7 @@ public final MethodResult pushItems(IComputerAccess computer, String toName, Opt
105105
}
106106

107107
IItemHandler inventoryFrom = new PlayerInvWrapper(getOwnerPlayerOrError().getInventory());
108-
return MethodResult.of(InventoryUtil.moveItem(inventoryFrom, inventoryTo, filter.left()));
108+
return MethodResult.of(ItemUtil.moveItem(inventoryFrom, inventoryTo, filter.left()));
109109
}
110110

111111
@LuaFunction(mainThread = true)
@@ -127,7 +127,7 @@ public final MethodResult pullItems(IComputerAccess computer, String fromName, O
127127
}
128128

129129
IItemHandler inventoryTo = new PlayerInvWrapper(getOwnerPlayerOrError().getInventory());
130-
return MethodResult.of(InventoryUtil.moveItem(inventoryFrom, inventoryTo, filter.left()));
130+
return MethodResult.of(ItemUtil.moveItem(inventoryFrom, inventoryTo, filter.left()));
131131
}
132132

133133
@LuaFunction(mainThread = true)

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import de.srendi.advancedperipherals.common.util.inventory.FluidUtil;
3434
import de.srendi.advancedperipherals.common.util.inventory.GenericFilter;
3535
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemPeripheral;
36-
import de.srendi.advancedperipherals.common.util.inventory.InventoryUtil;
36+
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
3737
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
3838
import de.srendi.advancedperipherals.lib.peripherals.BasePeripheral;
3939
import me.ramidzkh.mekae2.ae2.MekanismKey;
@@ -90,7 +90,7 @@ protected MethodResult exportToChest(@NotNull IArguments arguments, IItemHandler
9090
if (filter.rightPresent())
9191
return MethodResult.of(0, filter.right());
9292

93-
return MethodResult.of(InventoryUtil.moveItem(itemHandler, targetInventory, filter.left()), null);
93+
return MethodResult.of(ItemUtil.moveItem(itemHandler, targetInventory, filter.left()), null);
9494
}
9595

9696
/**
@@ -127,7 +127,7 @@ protected MethodResult importToME(@NotNull IArguments arguments, IItemHandler ta
127127
if (filter.rightPresent())
128128
return MethodResult.of(0, filter.right());
129129

130-
return MethodResult.of(InventoryUtil.moveItem(targetInventory, itemHandler, filter.left()), null);
130+
return MethodResult.of(ItemUtil.moveItem(targetInventory, itemHandler, filter.left()), null);
131131
}
132132

133133
/**
@@ -340,10 +340,10 @@ public final MethodResult importItem(IComputerAccess computer, IArguments argume
340340
return notConnected(0);
341341

342342
String side = arguments.getString(1);
343-
IItemHandler inventory = InventoryUtil.getHandlerFromDirection(side, owner);
343+
IItemHandler inventory = ItemUtil.getHandlerFromDirection(side, owner);
344344

345345
if (inventory == null) {
346-
inventory = InventoryUtil.getHandlerFromName(computer, side);
346+
inventory = ItemUtil.getHandlerFromName(computer, side);
347347
}
348348

349349
if (inventory == null)
@@ -359,10 +359,10 @@ public final MethodResult exportItem(IComputerAccess computer, @NotNull IArgumen
359359
return notConnected(0);
360360

361361
String side = arguments.getString(1);
362-
IItemHandler inventory = InventoryUtil.getHandlerFromDirection(side, owner);
362+
IItemHandler inventory = ItemUtil.getHandlerFromDirection(side, owner);
363363

364364
if (inventory == null) {
365-
inventory = InventoryUtil.getHandlerFromName(computer, side);
365+
inventory = ItemUtil.getHandlerFromName(computer, side);
366366
}
367367

368368
if (inventory == null)

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import de.srendi.advancedperipherals.common.util.inventory.FluidUtil;
3737
import de.srendi.advancedperipherals.common.util.inventory.GenericFilter;
3838
import de.srendi.advancedperipherals.common.util.inventory.IStorageSystemPeripheral;
39-
import de.srendi.advancedperipherals.common.util.inventory.InventoryUtil;
39+
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
4040
import de.srendi.advancedperipherals.common.util.inventory.ItemFilter;
4141
import de.srendi.advancedperipherals.lib.peripherals.BasePeripheral;
4242
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
@@ -100,7 +100,7 @@ protected MethodResult exportToChest(@NotNull IArguments arguments, @Nullable II
100100
if (targetInventory == null)
101101
return MethodResult.of(0, "Target Inventory does not exist");
102102

103-
return MethodResult.of(InventoryUtil.moveItem(itemHandler, targetInventory, filter.left()));
103+
return MethodResult.of(ItemUtil.moveItem(itemHandler, targetInventory, filter.left()));
104104
}
105105

106106
/**
@@ -140,7 +140,7 @@ protected MethodResult importToRS(@NotNull IArguments arguments, @Nullable IItem
140140
if (targetInventory == null)
141141
return MethodResult.of(0, "Target Inventory does not exist");
142142

143-
return MethodResult.of(InventoryUtil.moveItem(targetInventory, itemHandler, filter.left()));
143+
return MethodResult.of(ItemUtil.moveItem(targetInventory, itemHandler, filter.left()));
144144
}
145145

146146
/**
@@ -376,10 +376,10 @@ public final MethodResult importItem(IComputerAccess computer, IArguments argume
376376
if (!isAvailable())
377377
return notConnected(0);
378378

379-
IItemHandler inventory = InventoryUtil.getHandlerFromDirection(arguments.getString(1), owner);
379+
IItemHandler inventory = ItemUtil.getHandlerFromDirection(arguments.getString(1), owner);
380380

381381
if (inventory == null) {
382-
inventory = InventoryUtil.getHandlerFromName(computer, arguments.getString(1));
382+
inventory = ItemUtil.getHandlerFromName(computer, arguments.getString(1));
383383
if (inventory == null) {
384384
return MethodResult.of(0, StatusConstants.INVENTORY_NOT_FOUND.name());
385385
}
@@ -394,10 +394,10 @@ public final MethodResult exportItem(IComputerAccess computer, IArguments argume
394394
if (!isAvailable())
395395
return notConnected(0);
396396

397-
IItemHandler inventory = InventoryUtil.getHandlerFromDirection(arguments.getString(1), owner);
397+
IItemHandler inventory = ItemUtil.getHandlerFromDirection(arguments.getString(1), owner);
398398

399399
if (inventory == null) {
400-
inventory = InventoryUtil.getHandlerFromName(computer, arguments.getString(1));
400+
inventory = ItemUtil.getHandlerFromName(computer, arguments.getString(1));
401401
if (inventory == null) {
402402
return MethodResult.of(0, StatusConstants.INVENTORY_NOT_FOUND.name());
403403
}
Lines changed: 0 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,134 +1,8 @@
11
package de.srendi.advancedperipherals.common.util.inventory;
22

3-
import dan200.computercraft.api.lua.LuaException;
4-
import dan200.computercraft.api.peripheral.IComputerAccess;
5-
import dan200.computercraft.api.peripheral.IPeripheral;
6-
import de.srendi.advancedperipherals.common.addons.computercraft.owner.IPeripheralOwner;
7-
import de.srendi.advancedperipherals.common.util.CoordUtil;
8-
import net.minecraft.core.BlockPos;
9-
import net.minecraft.core.Direction;
10-
import net.minecraft.world.Container;
11-
import net.minecraft.world.item.ItemStack;
12-
import net.minecraft.world.level.Level;
13-
import net.minecraft.world.level.block.entity.BlockEntity;
14-
import net.neoforged.neoforge.capabilities.Capabilities;
15-
import net.neoforged.neoforge.items.IItemHandler;
16-
import net.neoforged.neoforge.items.ItemHandlerHelper;
17-
import net.neoforged.neoforge.items.wrapper.InvWrapper;
18-
import org.jetbrains.annotations.NotNull;
19-
import org.jetbrains.annotations.Nullable;
20-
21-
import java.util.Objects;
22-
import java.util.stream.IntStream;
23-
243
public class InventoryUtil {
254

265
private InventoryUtil() {
276
}
287

29-
public static IItemHandler extractHandler(@Nullable Object object, @Nullable Level level, @Nullable BlockPos pos, @Nullable Direction direction) {
30-
if (object instanceof IItemHandler itemHandler) {
31-
return itemHandler;
32-
}
33-
if (object instanceof Container container) {
34-
return new InvWrapper(container);
35-
}
36-
if (object instanceof BlockEntity blockEntity && level == null && pos == null) {
37-
pos = blockEntity.getBlockPos();
38-
level = blockEntity.getLevel();
39-
}
40-
if (level != null && pos != null) {
41-
return level.getCapability(Capabilities.ItemHandler.BLOCK, pos, direction != null ? direction : Direction.NORTH);
42-
}
43-
return null;
44-
}
45-
46-
public static int moveItem(IItemHandler inventoryFrom, IItemHandler inventoryTo, ItemFilter filter) {
47-
if (inventoryFrom == null) {
48-
return 0;
49-
}
50-
51-
int fromSlot = filter.getFromSlot();
52-
int toSlot = filter.getToSlot();
53-
54-
if (!(inventoryFrom instanceof IStorageSystemItemHandler) && fromSlot >= inventoryFrom.getSlots()) {
55-
return 0;
56-
}
57-
if (!(inventoryTo instanceof IStorageSystemItemHandler) && toSlot >= inventoryTo.getSlots()) {
58-
return 0;
59-
}
60-
61-
int needs = filter.getCount();
62-
if (needs <= 0) {
63-
return 0;
64-
}
65-
66-
ItemInserter inserter = inventoryTo instanceof IStorageSystemItemHandler storageTo
67-
? (stack) -> storageTo.insertItem(stack, false)
68-
: toSlot < 0
69-
? (stack) -> ItemHandlerHelper.insertItem(inventoryTo, stack, false)
70-
: (stack) -> inventoryTo.insertItem(toSlot, stack, false);
71-
72-
// The logic changes with storage systems since these systems do not have slots
73-
if (inventoryFrom instanceof IStorageSystemItemHandler storageFrom) {
74-
return storageFrom.extractItems(filter, (extracted) -> extracted.getCount() - inserter.insertItem(extracted).getCount(), false);
75-
}
76-
77-
int[] fromSlots = (
78-
fromSlot >= 0
79-
? IntStream.of(fromSlot)
80-
: IntStream.range(0, inventoryFrom.getSlots())
81-
)
82-
.filter((i) -> filter.test(inventoryFrom.getStackInSlot(i)))
83-
.toArray();
84-
if (fromSlots.length == 0) {
85-
return 0;
86-
}
87-
88-
for (int i : fromSlots) {
89-
ItemStack extracted = inventoryFrom.extractItem(i, needs, true);
90-
if (extracted.isEmpty()) {
91-
continue;
92-
}
93-
ItemStack remaining = inserter.insertItem(extracted);
94-
int inserted = extracted.getCount() - remaining.getCount();
95-
if (inserted == 0) {
96-
continue;
97-
}
98-
needs -= inserted;
99-
inventoryFrom.extractItem(i, inserted, false);
100-
if (needs <= 0) {
101-
break;
102-
}
103-
}
104-
return filter.getCount() - needs;
105-
}
106-
107-
@Nullable
108-
public static IItemHandler getHandlerFromName(@NotNull IComputerAccess access, String name) throws LuaException {
109-
IPeripheral location = access.getAvailablePeripheral(name);
110-
if (location == null) {
111-
return null;
112-
}
113-
return extractHandler(location.getTarget(), null, null, null);
114-
}
115-
116-
@Nullable
117-
public static IItemHandler getHandlerFromDirection(@NotNull String direction, @NotNull IPeripheralOwner owner) throws LuaException {
118-
Level level = Objects.requireNonNull(owner.getLevel());
119-
Direction relativeDirection = CoordUtil.getDirection(owner.getFrontAndTop(), direction);
120-
if (relativeDirection == null) {
121-
return null;
122-
}
123-
BlockEntity target = level.getBlockEntity(owner.getPos().relative(relativeDirection));
124-
if (target == null) {
125-
return null;
126-
}
127-
return extractHandler(target, level, target.getBlockPos(), relativeDirection.getOpposite());
128-
}
129-
130-
@FunctionalInterface
131-
private interface ItemInserter {
132-
ItemStack insertItem(ItemStack stack);
133-
}
1348
}

0 commit comments

Comments
 (0)