diff options
| author | shedaniel <daniel@shedaniel.me> | 2023-09-18 21:55:59 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2023-09-18 21:55:59 +0800 |
| commit | 001fc846c6002bf70a48dca67cee1437cc11c5e5 (patch) | |
| tree | 11affcea2415f2f2847a210bb8e80b5c99b01cb5 /default-plugin/src/main/java/me/shedaniel/rei/plugin | |
| parent | 21d144a7b605169578ba8e1dc1663d1ab042660d (diff) | |
| parent | 3dc4238eb7a61a992d37a98b9035a9101c022f42 (diff) | |
| download | RoughlyEnoughItems-001fc846c6002bf70a48dca67cee1437cc11c5e5.tar.gz RoughlyEnoughItems-001fc846c6002bf70a48dca67cee1437cc11c5e5.tar.bz2 RoughlyEnoughItems-001fc846c6002bf70a48dca67cee1437cc11c5e5.zip | |
Merge remote-tracking branch 'shedaniel/11.x-1.19.4' into 12.x-1.20
Diffstat (limited to 'default-plugin/src/main/java/me/shedaniel/rei/plugin')
| -rw-r--r-- | default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java | 30 |
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; + } + }; } } |
