aboutsummaryrefslogtreecommitdiff
path: root/default-plugin/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-09-18 21:49:26 +0800
committershedaniel <daniel@shedaniel.me>2023-09-18 21:53:48 +0800
commit6cc29c0b2cce285f34e5b48852560fbfe2c66424 (patch)
tree4072a186209e57d31f96f40dad8ec6f6af7dccb4 /default-plugin/src/main/java/me/shedaniel
parent0a154e6f91a1e233d9bbbe570d5781d58c43066c (diff)
downloadRoughlyEnoughItems-6cc29c0b2cce285f34e5b48852560fbfe2c66424.tar.gz
RoughlyEnoughItems-6cc29c0b2cce285f34e5b48852560fbfe2c66424.tar.bz2
RoughlyEnoughItems-6cc29c0b2cce285f34e5b48852560fbfe2c66424.zip
Fix #1465
Diffstat (limited to 'default-plugin/src/main/java/me/shedaniel')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java30
1 files changed, 29 insertions, 1 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java
index 83e435a5a..963717e45 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java
@@ -33,6 +33,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.client.registry.display.DisplayCategory;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.DisplayMerger;
+import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.InputIngredient;
import me.shedaniel.rei.api.common.util.EntryStacks;
@@ -44,6 +45,7 @@ import net.minecraft.network.chat.Component;
import net.minecraft.world.level.block.Blocks;
import org.jetbrains.annotations.Nullable;
+import java.util.Iterator;
import java.util.List;
@Environment(EnvType.CLIENT)
@@ -89,6 +91,32 @@ public class DefaultCraftingCategory implements DisplayCategory<DefaultCraftingD
@Override
@Nullable
public DisplayMerger<DefaultCraftingDisplay<?>> getDisplayMerger() {
- return DisplayCategory.getContentMerger();
+ return new DisplayMerger<>() {
+ @Override
+ public boolean canMerge(DefaultCraftingDisplay<?> first, DefaultCraftingDisplay<?> second) {
+ if (!first.getCategoryIdentifier().equals(second.getCategoryIdentifier())) return false;
+ if (!equals(first.getOrganisedInputEntries(3, 3), second.getInputEntries())) return false;
+ if (!equals(first.getOutputEntries(), second.getOutputEntries())) return false;
+ if (first.isShapeless() != second.isShapeless()) return false;
+ if (first.getWidth() != second.getWidth()) return false;
+ if (first.getHeight() != second.getHeight()) return false;
+ return true;
+ }
+
+ @Override
+ public int hashOf(DefaultCraftingDisplay<?> display) {
+ return display.getCategoryIdentifier().hashCode() * 31 * 31 * 31 + display.getOrganisedInputEntries(3, 3).hashCode() * 31 * 31 + display.getOutputEntries().hashCode();
+ }
+
+ private boolean equals(List<EntryIngredient> l1, List<EntryIngredient> l2) {
+ if (l1.size() != l2.size()) return false;
+ Iterator<EntryIngredient> it1 = l1.iterator();
+ Iterator<EntryIngredient> it2 = l2.iterator();
+ while (it1.hasNext() && it2.hasNext()) {
+ if (!it1.next().equals(it2.next())) return false;
+ }
+ return true;
+ }
+ };
}
}