Skip to content

Commit 79ffdb3

Browse files
committed
fix: add to times crafted statistics correctly when removing items from machines
1 parent 1001bd5 commit 79ffdb3

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

src/main/java/dev/galacticraft/machinelib/api/menu/ConfiguredMenu.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import dev.galacticraft.machinelib.api.storage.slot.ResourceSlot;
3636
import dev.galacticraft.machinelib.api.transfer.ResourceFlow;
3737
import dev.galacticraft.machinelib.api.transfer.ResourceType;
38+
import dev.galacticraft.machinelib.api.transfer.TransferType;
3839
import dev.galacticraft.machinelib.api.util.BlockFace;
3940
import dev.galacticraft.machinelib.api.util.ItemStackUtil;
4041
import dev.galacticraft.machinelib.impl.compat.vanilla.StorageSlot;
@@ -193,10 +194,15 @@ public boolean stillValid(Player player) {
193194
Slot slot = this.slots.get(slotId);
194195

195196
// move from machine -> player
196-
if (slotId < this.internalSlots) {
197-
assert slot instanceof StorageSlot;
198-
this.quickMoveIntoPlayerInventory(((StorageSlot) slot).getWrapped());
199-
return slot.getItem();
197+
if (slotId < this.internalSlots && slot instanceof StorageSlot storageSlot) {
198+
ItemResourceSlot itemSlot = storageSlot.getWrapped();
199+
ItemStack original = storageSlot.getItem().copy();
200+
this.quickMoveIntoPlayerInventory(itemSlot);
201+
ItemStack itemStack = storageSlot.getItem();
202+
if (itemSlot.transferMode() == TransferType.OUTPUT) {
203+
storageSlot.onQuickCraft(itemStack, original);
204+
}
205+
return itemStack;
200206
}
201207

202208
// move from player -> machine

src/main/java/dev/galacticraft/machinelib/impl/compat/vanilla/StorageSlot.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.mojang.datafixers.util.Pair;
2626
import dev.galacticraft.machinelib.api.storage.slot.ItemResourceSlot;
2727
import dev.galacticraft.machinelib.api.storage.slot.display.ItemSlotDisplay;
28+
import dev.galacticraft.machinelib.api.transfer.TransferType;
2829
import dev.galacticraft.machinelib.api.util.ItemStackUtil;
2930
import dev.galacticraft.machinelib.impl.util.Utils;
3031
import net.minecraft.core.component.DataComponentPatch;
@@ -150,9 +151,17 @@ public void onTake(Player player, ItemStack stack) {
150151
if (this.player.getUUID().equals(player.getUUID())) this.checkTakeAchievements(stack);
151152
}
152153

154+
@Override
155+
protected void onQuickCraft(ItemStack stack, int n) {
156+
assert stack.getCount() == n;
157+
this.checkTakeAchievements(stack);
158+
}
159+
153160
@Override
154161
protected void checkTakeAchievements(ItemStack stack) {
155162
super.checkTakeAchievements(stack);
163+
if (this.slot.transferMode() != TransferType.OUTPUT) return;
164+
156165
stack.onCraftedBy(this.player.level(), this.player, stack.getCount());
157166
Set<ResourceLocation> recipes = this.getWrapped().takeRecipes();
158167
if (recipes != null) {

0 commit comments

Comments
 (0)