From e59aebdafdc122e719e1ac596438505ff4b7a402 Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Thu, 30 Jan 2025 01:24:38 -0700 Subject: [PATCH] reset ingredients --- .../storage/CachedRecipeData.java | 6 ++++++ .../storage/CraftingRecipeLogic.java | 19 ++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/gregtech/common/metatileentities/storage/CachedRecipeData.java b/src/main/java/gregtech/common/metatileentities/storage/CachedRecipeData.java index aec49e23665..6ce6cedab9e 100755 --- a/src/main/java/gregtech/common/metatileentities/storage/CachedRecipeData.java +++ b/src/main/java/gregtech/common/metatileentities/storage/CachedRecipeData.java @@ -10,6 +10,7 @@ public class CachedRecipeData { private IRecipe recipe; + private IRecipe previousRecipe; public CachedRecipeData() { this(null); @@ -27,6 +28,7 @@ public boolean matches(InventoryCrafting inventoryCrafting, World world) { } public void setRecipe(IRecipe newRecipe) { + this.previousRecipe = this.recipe; this.recipe = newRecipe; } @@ -34,6 +36,10 @@ public IRecipe getRecipe() { return recipe; } + public IRecipe getPreviousRecipe() { + return previousRecipe; + } + public ItemStack getRecipeOutput() { return recipe == null ? ItemStack.EMPTY : recipe.getRecipeOutput(); } diff --git a/src/main/java/gregtech/common/metatileentities/storage/CraftingRecipeLogic.java b/src/main/java/gregtech/common/metatileentities/storage/CraftingRecipeLogic.java index c0dc49928a2..75cc78edec1 100644 --- a/src/main/java/gregtech/common/metatileentities/storage/CraftingRecipeLogic.java +++ b/src/main/java/gregtech/common/metatileentities/storage/CraftingRecipeLogic.java @@ -37,6 +37,7 @@ public class CraftingRecipeLogic extends SyncHandler { // client only public static final int UPDATE_INGREDIENTS = 1; + public static final int RESET_INGREDIENTS = 2; public static final int SYNC_STACK = 4; // server only @@ -336,7 +337,16 @@ public IRecipe getCachedRecipe() { @Override public void detectAndSendChanges(boolean init) { var recipe = getCachedRecipe(); - if (recipe == null) return; + if (recipe == null) { + var prevRecipe = cachedRecipeData.getPreviousRecipe(); + if (prevRecipe == null) return; + cachedRecipeData.setRecipe(null); + for (CraftingInputSlot inputSlot : this.inputSlots) { + inputSlot.hasIngredients = true; + } + syncToClient(RESET_INGREDIENTS); + return; + } requiredItems.clear(); final Map map = new Int2BooleanArrayMap(); @@ -424,9 +434,12 @@ public void readOnClient(int id, PacketBuffer buf) { for (int i = 0; i < size; i++) { this.inputSlots[buf.readByte()].hasIngredients = buf.readBoolean(); } - } - if (id == SYNC_STACK) { + } else if (id == SYNC_STACK) { getSyncManager().setCursorItem(NetworkUtils.readItemStack(buf)); + } else if (id == RESET_INGREDIENTS) { + for (CraftingInputSlot inputSlot : this.inputSlots) { + inputSlot.hasIngredients = true; + } } }