Skip to content

Commit a2cb6af

Browse files
authored
Merge pull request #721 from zyxkad/bridges-feature
rename some variable names in InventoryUtil to make them have more sense
2 parents d447486 + 40950d1 commit a2cb6af

File tree

1 file changed

+71
-58
lines changed

1 file changed

+71
-58
lines changed

src/main/java/de/srendi/advancedperipherals/common/util/inventory/InventoryUtil.java

Lines changed: 71 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -31,120 +31,133 @@ private InventoryUtil() {
3131
public static IItemHandler extractHandler(@Nullable Object object) {
3232
if (object instanceof ICapabilityProvider capabilityProvider) {
3333
LazyOptional<IItemHandler> cap = capabilityProvider.getCapability(ForgeCapabilities.ITEM_HANDLER);
34-
if (cap.isPresent())
34+
if (cap.isPresent()) {
3535
return cap.orElseThrow(NullPointerException::new);
36+
}
3637
}
37-
if (object instanceof IItemHandler itemHandler)
38+
if (object instanceof IItemHandler itemHandler) {
3839
return itemHandler;
39-
if (object instanceof Container container)
40+
}
41+
if (object instanceof Container container) {
4042
return new InvWrapper(container);
43+
}
4144
return null;
4245
}
4346

4447
public static int moveItem(IItemHandler inventoryFrom, IItemHandler inventoryTo, ItemFilter filter) {
45-
if (inventoryFrom == null) return 0;
48+
if (inventoryFrom == null) {
49+
return 0;
50+
}
4651

47-
int fromSlot = filter.getFromSlot();
48-
int toSlot = filter.getToSlot();
52+
final int fromSlot = filter.getFromSlot();
53+
final int toSlot = filter.getToSlot();
4954

50-
int amount = filter.getCount();
51-
int transferableAmount = 0;
55+
final int required = filter.getCount();
56+
int transferred = 0;
5257

5358
// The logic changes with storage systems since these systems do not have slots
5459
if (inventoryFrom instanceof IStorageSystemItemHandler storageSystemHandler) {
5560
if (inventoryTo instanceof IStorageSystemItemHandler targetSSH) {
56-
ItemStack extracted = storageSystemHandler.extractItem(filter, filter.getCount(), true);
57-
ItemStack remain = targetSSH.insertItem(toSlot, extracted, false);
58-
return storageSystemHandler.extractItem(filter, extracted.getCount() - remain.getCount(), false).getCount();
61+
ItemStack extracted = storageSystemHandler.extractItem(filter, required, true);
62+
ItemStack remains = targetSSH.insertItem(toSlot, extracted, false);
63+
return storageSystemHandler.extractItem(filter, extracted.getCount() - remains.getCount(), false).getCount();
5964
}
6065
for (int i = toSlot == -1 ? 0 : toSlot; i < (toSlot == -1 ? inventoryTo.getSlots() : toSlot + 1); i++) {
61-
ItemStack extracted = storageSystemHandler.extractItem(filter, filter.getCount(), true);
62-
if (extracted.isEmpty())
63-
continue;
64-
ItemStack inserted;
66+
ItemStack extracted = storageSystemHandler.extractItem(filter, required - transferred, true);
67+
if (extracted.isEmpty()) {
68+
break;
69+
}
70+
ItemStack remains;
6571
if (toSlot == -1) {
66-
inserted = ItemHandlerHelper.insertItem(inventoryTo, extracted, false);
72+
remains = ItemHandlerHelper.insertItem(inventoryTo, extracted, false);
6773
} else {
68-
inserted = inventoryTo.insertItem(toSlot, extracted, false);
74+
remains = inventoryTo.insertItem(toSlot, extracted, false);
6975
}
70-
amount -= extracted.getCount() - inserted.getCount();
71-
transferableAmount += storageSystemHandler.extractItem(filter, extracted.getCount() - inserted.getCount(), false).getCount();
72-
if (transferableAmount >= filter.getCount())
76+
transferred += storageSystemHandler.extractItem(filter, extracted.getCount() - remains.getCount(), false).getCount();
77+
if (transferred >= filter.getCount()) {
7378
break;
79+
}
7480
}
75-
return transferableAmount;
81+
return transferred;
7682
}
7783

7884
if (inventoryTo instanceof IStorageSystemItemHandler storageSystemHandler) {
7985
for (int i = fromSlot == -1 ? 0 : fromSlot; i < (fromSlot == -1 ? inventoryFrom.getSlots() : fromSlot + 1); i++) {
8086
if (filter.test(inventoryFrom.getStackInSlot(i))) {
81-
ItemStack extracted = inventoryFrom.extractItem(i, amount - transferableAmount, true);
82-
if (extracted.isEmpty())
87+
ItemStack extracted = inventoryFrom.extractItem(i, required - transferred, true);
88+
if (extracted.isEmpty()) {
8389
continue;
84-
ItemStack inserted = storageSystemHandler.insertItem(toSlot, extracted, false);
85-
86-
amount -= inserted.getCount();
87-
transferableAmount += inventoryFrom.extractItem(i, extracted.getCount() - inserted.getCount(), false).getCount();
88-
if (transferableAmount >= filter.getCount())
90+
}
91+
ItemStack remains = storageSystemHandler.insertItem(toSlot, extracted, false);
92+
int inserted = extracted.getCount() - remains.getCount();
93+
if (inserted == 0) {
8994
break;
95+
}
96+
transferred += inventoryFrom.extractItem(i, inserted, false).getCount();
97+
if (transferred >= filter.getCount()) {
98+
break;
99+
}
90100
}
91101
}
92-
return transferableAmount;
102+
return transferred;
93103
}
94104

95105
for (int i = fromSlot == -1 ? 0 : fromSlot; i < (fromSlot == -1 ? inventoryFrom.getSlots() : fromSlot + 1); i++) {
96106
if (filter.test(inventoryFrom.getStackInSlot(i))) {
97-
ItemStack extracted = inventoryFrom.extractItem(i, amount - transferableAmount, true);
98-
if (extracted.isEmpty())
107+
ItemStack extracted = inventoryFrom.extractItem(i, required - transferred, true);
108+
if (extracted.isEmpty()) {
99109
continue;
100-
ItemStack inserted;
110+
}
111+
ItemStack remains;
101112
if (toSlot == -1) {
102-
inserted = ItemHandlerHelper.insertItem(inventoryTo, extracted, false);
113+
remains = ItemHandlerHelper.insertItem(inventoryTo, extracted, false);
103114
} else {
104-
inserted = inventoryTo.insertItem(toSlot, extracted, false);
115+
remains = inventoryTo.insertItem(toSlot, extracted, false);
105116
}
106-
amount -= inserted.getCount();
107-
transferableAmount += inventoryFrom.extractItem(i, extracted.getCount() - inserted.getCount(), false).getCount();
108-
if (transferableAmount >= filter.getCount())
117+
int inserted = extracted.getCount() - remains.getCount();
118+
if (inserted == 0) {
109119
break;
120+
}
121+
transferred += inventoryFrom.extractItem(i, inserted, false).getCount();
122+
if (transferred >= filter.getCount()) {
123+
break;
124+
}
110125
}
111126
}
112-
return transferableAmount;
127+
return transferred;
113128
}
114129

115130
public static int moveFluid(IFluidHandler inventoryFrom, IFluidHandler inventoryTo, FluidFilter filter) {
116-
if (inventoryFrom == null) return 0;
131+
if (inventoryFrom == null) {
132+
return 0;
133+
}
117134

118-
int amount = filter.getCount();
119-
int transferableAmount = 0;
135+
final int required = filter.getCount();
136+
int transferred = 0;
120137

121138
// The logic changes with storage systems since these systems do not have slots
122139
if (inventoryFrom instanceof IStorageSystemFluidHandler storageSystemHandler) {
123140
FluidStack extracted = storageSystemHandler.drain(filter, IFluidHandler.FluidAction.SIMULATE);
124141
int inserted = inventoryTo.fill(extracted, IFluidHandler.FluidAction.EXECUTE);
125-
126-
transferableAmount += storageSystemHandler.drain(filter.setCount(inserted), IFluidHandler.FluidAction.EXECUTE).getAmount();
127-
128-
return transferableAmount;
142+
transferred += storageSystemHandler.drain(filter.setCount(inserted), IFluidHandler.FluidAction.EXECUTE).getAmount();
143+
return transferred;
129144
}
130145

131-
if (inventoryTo instanceof IStorageSystemFluidHandler storageSystemHandler) {
132-
if (filter.test(inventoryFrom.getFluidInTank(0))) {
133-
FluidStack toExtract = inventoryFrom.getFluidInTank(0).copy();
134-
toExtract.setAmount(amount);
146+
for (int i = 0; i < inventoryFrom.getTanks(); i++) {
147+
FluidStack fluid = inventoryFrom.getFluidInTank(i);
148+
if (filter.test(fluid)) {
149+
FluidStack toExtract = fluid.copy();
150+
toExtract.setAmount(required - transferred);
135151
FluidStack extracted = inventoryFrom.drain(toExtract, IFluidHandler.FluidAction.SIMULATE);
136-
if (extracted.isEmpty())
137-
return 0;
138-
int inserted = storageSystemHandler.fill(extracted, IFluidHandler.FluidAction.EXECUTE);
139-
152+
if (extracted.isEmpty()) {
153+
continue;
154+
}
155+
int inserted = inventoryTo.fill(extracted, IFluidHandler.FluidAction.EXECUTE);
140156
extracted.setAmount(inserted);
141-
transferableAmount += inventoryFrom.drain(extracted, IFluidHandler.FluidAction.EXECUTE).getAmount();
157+
transferred += inventoryFrom.drain(extracted, IFluidHandler.FluidAction.EXECUTE).getAmount();
142158
}
143-
144-
return transferableAmount;
145159
}
146-
147-
return transferableAmount;
160+
return transferred;
148161
}
149162

150163

0 commit comments

Comments
 (0)