Fixes #4330: Avoid mutating the input stack (#4481)

This commit is contained in:
yueh
2020-07-19 13:13:20 +02:00
committed by GitHub
parent bdd22093c3
commit 223163aa0a
+7 -5
View File
@@ -839,17 +839,19 @@ public class Platform {
energy.extractAEPower(stored / energyFactor, Actionable.MODULATE, PowerMultiplier.CONFIG); energy.extractAEPower(stored / energyFactor, Actionable.MODULATE, PowerMultiplier.CONFIG);
if (itemToAdd < input.getStackSize()) { if (itemToAdd < input.getStackSize()) {
final long original = input.getStackSize(); final long original = input.getStackSize();
final T leftover = input.copy();
final T split = input.copy(); final T split = input.copy();
split.decStackSize(itemToAdd);
input.setStackSize(itemToAdd); leftover.decStackSize(itemToAdd);
split.add(cell.injectItems(input, Actionable.MODULATE, src)); split.setStackSize(itemToAdd);
leftover.add(cell.injectItems(split, Actionable.MODULATE, src));
src.player().ifPresent(player -> { src.player().ifPresent(player -> {
final long diff = original - split.getStackSize(); final long diff = original - leftover.getStackSize();
AeStats.ItemsInserted.addToPlayer(player, (int) diff); AeStats.ItemsInserted.addToPlayer(player, (int) diff);
}); });
return split; return leftover;
} }
final T ret = cell.injectItems(input, Actionable.MODULATE, src); final T ret = cell.injectItems(input, Actionable.MODULATE, src);