aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java
index cba9a4bb1..67296e755 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.impl.client.gui.widget;
+import com.google.common.base.Suppliers;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix4f;
import me.shedaniel.math.Point;
@@ -54,6 +55,7 @@ import org.jetbrains.annotations.ApiStatus;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
@ApiStatus.Internal
@@ -68,9 +70,14 @@ public final class InternalWidgets {
AutoCraftingEvaluator.evaluateAutoCrafting(true, Screen.hasShiftDown(), displaySupplier.get(), idsSupplier);
});
return new DelegateWidget(autoCraftingButton) {
+ final Supplier<AutoCraftingEvaluator.AutoCraftingResult> result = Suppliers.memoizeWithExpiration(
+ () -> AutoCraftingEvaluator.evaluateAutoCrafting(false, false, displaySupplier.get(), idsSupplier),
+ 1000, TimeUnit.MILLISECONDS
+ );
+
@Override
public void render(PoseStack poses, int mouseX, int mouseY, float delta) {
- AutoCraftingEvaluator.AutoCraftingResult result = AutoCraftingEvaluator.evaluateAutoCrafting(false, false, displaySupplier.get(), idsSupplier);
+ AutoCraftingEvaluator.AutoCraftingResult result = this.result.get();
autoCraftingButton.setEnabled(result.successful);
autoCraftingButton.setTint(result.tint);