aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java
index adcaacd8b..d4d5e1b6c 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java
@@ -6,9 +6,8 @@
package me.shedaniel.rei.gui.widget;
import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.AutoTransferHandler;
-import me.shedaniel.rei.api.RecipeDisplay;
-import me.shedaniel.rei.api.RecipeHelper;
+import it.unimi.dsi.fastutil.ints.IntList;
+import me.shedaniel.rei.api.*;
import me.shedaniel.rei.impl.ScreenHelper;
import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
import net.minecraft.client.resource.language.I18n;
@@ -28,15 +27,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
private String errorTooltip;
private List<Widget> setupDisplay;
private AbstractContainerScreen<?> containerScreen;
- private boolean visible = false;
+ private boolean visible = false;
+ private RecipeCategory<?> category;
+ private Rectangle displayBounds;
- public AutoCraftingButtonWidget(Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay) {
+ public AutoCraftingButtonWidget(Rectangle displayBounds, Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay, RecipeCategory<?> recipeCategory) {
super(rectangle, text);
+ this.displayBounds = displayBounds;
this.displaySupplier = () -> displaySupplier.get();
Optional<Identifier> recipe = displaySupplier.get().getRecipeLocation();
extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", Formatting.GRAY.toString(), recipe.get().toString()) : "";
this.containerScreen = ScreenHelper.getLastContainerScreen();
this.setupDisplay = setupDisplay;
+ this.category = recipeCategory;
}
@Override
@@ -60,6 +63,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
String error = null;
int color = 0;
visible = false;
+ IntList redSlots = null;
AutoTransferHandler.Context context = AutoTransferHandler.Context.create(false, containerScreen, displaySupplier.get());
for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler()) {
try {
@@ -73,13 +77,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
} else if (error == null) {
error = result.getErrorKey();
color = result.getColor();
+ redSlots = result.getIntegers();
}
} catch (Exception e) {
e.printStackTrace();
}
}
- if (!visible)
+ if (!visible) {
enabled = false;
+ error = "error.rei.no.handlers.applicable";
+ }
+ if (isHovered(mouseX, mouseY) && category instanceof TransferRecipeCategory && redSlots != null) {
+ ((TransferRecipeCategory<RecipeDisplay>) category).renderRedSlots(setupDisplay, displayBounds, displaySupplier.get(), redSlots);
+ }
errorTooltip = error;
int x = getBounds().x, y = getBounds().y, width = getBounds().width, height = getBounds().height;
minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? BUTTON_LOCATION_DARK : BUTTON_LOCATION);
@@ -107,7 +117,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
int colour = 14737632;
if (!this.visible) {
colour = 10526880;
- } else if (enabled && isHovered(mouseX, mouseY)) {
+ } else if (enabled && isHovered(mouseX, mouseY)) {
colour = 16777120;
}
@@ -123,7 +133,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
@Override
protected int getTextureId(boolean boolean_1) {
- return !visible ? 0 :boolean_1 && enabled ? 2 : 1;
+ return !visible ? 0 : boolean_1 && enabled ? 2 : 1;
}
@Override