Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -259,25 +259,6 @@ private static void transformNotice(int marker, List<? extends GuiEventListener>
}
}

@SuppressWarnings("RedundantCast")
protected void transformFiltering(List<? extends GuiEventListener> setupDisplay) {
for (EntryWidget widget : Widgets.<EntryWidget>walk(setupDisplay, EntryWidget.class::isInstance)) {
if (widget.getEntries().size() > 1) {
Collection<EntryStack<?>> refiltered = EntryRegistry.getInstance().refilterNew(false, widget.getEntries());
EntryIngredient asEntryIngredient = widget.getEntries() instanceof EntryIngredient ingredient ? ingredient : null;
if (!refiltered.isEmpty() && !widget.getEntries().equals(refiltered)) {
widget.clearStacks();
EntryIngredient newIngredient = EntryIngredient.of(refiltered);
if (asEntryIngredient != null && (Object) asEntryIngredient.getSetting(EntryIngredientSetting.FOCUS_UUID) instanceof UUID uuid) {
newIngredient.setting(EntryIngredientSetting.FOCUS_UUID,
new UUID(uuid.getMostSignificantBits() ^ refiltered.size(), uuid.getLeastSignificantBits() ^ refiltered.size()));
}
widget.entries(newIngredient);
}
}
}
}

protected static long hashFocusIngredient(EntryIngredient ingredient) {
UUID uuid = ingredient.getSetting(EntryIngredientSetting.FOCUS_UUID);
if (uuid == null) return System.identityHashCode(ingredient);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import me.shedaniel.rei.impl.client.gui.widget.InternalWidgets;
import me.shedaniel.rei.impl.client.util.SetupDisplayUtils;
import me.shedaniel.rei.impl.display.DisplaySpec;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
Expand Down Expand Up @@ -147,7 +148,7 @@ public void init() {
setupDisplay.add(Widgets.createLabel(new Point(recipeBounds.getCenterX(), recipeBounds.getCenterY() + 1), Component.literal("Check console for error")));
}
setupTags(setupDisplay);
transformFiltering(setupDisplay);
SetupDisplayUtils.TransformFiltering(setupDisplay);
transformIngredientNotice(setupDisplay, ingredientStackToNotice);
transformResultNotice(setupDisplay, resultStackToNotice);
unifyIngredients(setupDisplay);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
import me.shedaniel.rei.impl.client.gui.toast.ExportRecipeIdentifierToast;
import me.shedaniel.rei.impl.client.gui.widget.*;
import me.shedaniel.rei.impl.client.gui.widget.basewidgets.PanelWidget;
import me.shedaniel.rei.impl.client.util.SetupDisplayUtils;
import me.shedaniel.rei.impl.display.DisplaySpec;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
Expand Down Expand Up @@ -253,7 +254,7 @@ private void initDisplays() {
setupDisplay.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() + 1), Component.literal("Check console for error")));
}
setupTags(setupDisplay);
transformFiltering(setupDisplay);
SetupDisplayUtils.TransformFiltering(setupDisplay);
transformIngredientNotice(setupDisplay, ingredientStackToNotice);
transformResultNotice(setupDisplay, resultStackToNotice);
unifyIngredients(setupDisplay);
Expand Down Expand Up @@ -445,7 +446,7 @@ private boolean checkExportDisplays() {
setupDisplay.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() + 1), Component.literal("Check console for error")));
}
setupTags(setupDisplay);
transformFiltering(setupDisplay);
SetupDisplayUtils.TransformFiltering(setupDisplay);
transformIngredientNotice(setupDisplay, ingredientStackToNotice);
transformResultNotice(setupDisplay, resultStackToNotice);
unifyIngredients(setupDisplay);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import me.shedaniel.rei.api.client.util.MatrixUtils;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.impl.client.util.SetupDisplayUtils;
import me.shedaniel.rei.impl.display.DisplaySpec;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
Expand All @@ -60,6 +61,7 @@ public DisplayTooltipComponent(DisplaySpec display) {
DisplayCategory<Display> category = configuration.getCategory();
this.bounds = new Rectangle(0, 0, category.getDisplayWidth(internalDisplay), category.getDisplayHeight());
List<Widget> widgets = configuration.getView(internalDisplay).setupDisplay(internalDisplay, bounds);
SetupDisplayUtils.TransformFiltering(widgets);

this.display = display;
this.widgets = widgets;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.gui.widget.AutoCraftingEvaluator;
import me.shedaniel.rei.impl.client.util.SetupDisplayUtils;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
Expand Down Expand Up @@ -124,16 +125,18 @@ private List<Widget> setupWidgets() {
}

private List<Widget> setupDisplay(CategoryRegistry.CategoryConfiguration<Display> configuration, Rectangle displayBounds) {
List<Widget> result = null;
try {
return configuration.getView(display).setupDisplay(display, displayBounds);
result = configuration.getView(display).setupDisplay(display, displayBounds);
Comment thread
DmitryProskurin marked this conversation as resolved.
Outdated
} catch (Throwable throwable) {
throwable.printStackTrace();
List<Widget> w = new ArrayList<>();
w.add(Widgets.createRecipeBase(displayBounds).color(0xFFBB0000));
w.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() - 8), Component.literal("Failed to initiate setupDisplay")));
w.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() + 1), Component.literal("Check console for error")));
return w;
result = new ArrayList<>();
result.add(Widgets.createRecipeBase(displayBounds).color(0xFFBB0000));
result.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() - 8), Component.literal("Failed to initiate setupDisplay")));
result.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() + 1), Component.literal("Check console for error")));
}
SetupDisplayUtils.TransformFiltering(result);
return result;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package me.shedaniel.rei.impl.client.util;

import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.settings.EntryIngredientSetting;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import net.minecraft.client.gui.components.events.GuiEventListener;

import java.util.Collection;
import java.util.List;
import java.util.UUID;

public class SetupDisplayUtils {
@SuppressWarnings("RedundantCast")
public static void TransformFiltering(List<? extends GuiEventListener> setupDisplay) {
for (EntryWidget widget : Widgets.<EntryWidget>walk(setupDisplay, EntryWidget.class::isInstance)) {
if (widget.getEntries().size() > 1) {
Collection<EntryStack<?>> refiltered = EntryRegistry.getInstance().refilterNew(false, widget.getEntries());
EntryIngredient asEntryIngredient = widget.getEntries() instanceof EntryIngredient ingredient ? ingredient : null;
if (!refiltered.isEmpty() && !widget.getEntries().equals(refiltered)) {
widget.clearStacks();
EntryIngredient newIngredient = EntryIngredient.of(refiltered);
if (asEntryIngredient != null && (Object) asEntryIngredient.getSetting(EntryIngredientSetting.FOCUS_UUID) instanceof UUID uuid) {
newIngredient.setting(EntryIngredientSetting.FOCUS_UUID,
new UUID(uuid.getMostSignificantBits() ^ refiltered.size(), uuid.getLeastSignificantBits() ^ refiltered.size()));
}
widget.entries(newIngredient);
}
}
}
}
}