File tree Expand file tree Collapse file tree
src/main/java/dev/galacticraft/machinelib Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3535import dev .galacticraft .machinelib .api .storage .slot .ResourceSlot ;
3636import dev .galacticraft .machinelib .api .transfer .ResourceFlow ;
3737import dev .galacticraft .machinelib .api .transfer .ResourceType ;
38+ import dev .galacticraft .machinelib .api .transfer .TransferType ;
3839import dev .galacticraft .machinelib .api .util .BlockFace ;
3940import dev .galacticraft .machinelib .api .util .ItemStackUtil ;
4041import 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
Original file line number Diff line number Diff line change 2525import com .mojang .datafixers .util .Pair ;
2626import dev .galacticraft .machinelib .api .storage .slot .ItemResourceSlot ;
2727import dev .galacticraft .machinelib .api .storage .slot .display .ItemSlotDisplay ;
28+ import dev .galacticraft .machinelib .api .transfer .TransferType ;
2829import dev .galacticraft .machinelib .api .util .ItemStackUtil ;
2930import dev .galacticraft .machinelib .impl .util .Utils ;
3031import 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 ) {
You can’t perform that action at this time.
0 commit comments