From abf0633ae69bcfb9284849e13ab09e92b7019b44 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Fri, 10 Jan 2025 12:16:24 -0500 Subject: [PATCH] Optimize spout recipe generation by avoiding filling non-empty items (#7274) --- .../create/compat/jei/category/SpoutCategory.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 3fa7d3160..cd810c034 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -63,7 +63,16 @@ public class SpoutCategory extends CreateRecipeCategory { if (!capability.isPresent()) continue; + var existingFluidHandler = capability.orElse(null); + int numTanks = existingFluidHandler.getTanks(); + FluidStack existingFluid = numTanks == 1 ? existingFluidHandler.getFluidInTank(0) : FluidStack.EMPTY; + for (FluidStack fluidStack : fluidStacks) { + // Hoist the fluid equality check to avoid the work of copying the stack + populating capabilities + // when most fluids will not match + if (numTanks == 1 && (!existingFluid.isEmpty() && !existingFluid.isFluidEqual(fluidStack))) { + continue; + } ItemStack copy = stack.copy(); copy.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM) .ifPresent(fhi -> {