From 95cdaff2ded9161472d6d56e19d22b4b76e6f8b3 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 27 Jan 2022 11:49:37 +0800 Subject: Fix 2x2 crafting --- .../displays/crafting/DefaultCraftingDisplay.java | 21 ++++++++++++--------- .../displays/crafting/DefaultShapelessDisplay.java | 12 ++++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) (limited to 'default-plugin/src/main/java/me') diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java index adc046c0e..cf5ce260f 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java @@ -31,6 +31,7 @@ import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay; import me.shedaniel.rei.api.common.display.basic.BasicDisplay; 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.entry.type.VanillaEntryTypes; import me.shedaniel.rei.api.common.transfer.info.MenuInfo; import me.shedaniel.rei.api.common.transfer.info.MenuSerializationContext; @@ -140,31 +141,33 @@ public abstract class DefaultCraftingDisplay> extends BasicD } @Override - public List getInputEntries(MenuSerializationContext context, MenuInfo info, boolean fill) { - int craftingWidth = Math.max(3, getInputWidth()); - int craftingHeight = Math.max(3, getInputHeight()); + public List>> getInputIngredients(MenuSerializationContext context, MenuInfo info, boolean fill) { + int inputWidth = Math.max(3, getInputWidth()); + int inputHeight = Math.max(3, getInputHeight()); + int craftingWidth = 3, craftingHeight = 3; - if (info instanceof SimpleGridMenuInfo) { + if (info instanceof SimpleGridMenuInfo && fill) { craftingWidth = ((SimpleGridMenuInfo) info).getCraftingWidth(context.getMenu()); craftingHeight = ((SimpleGridMenuInfo) info).getCraftingHeight(context.getMenu()); } - EntryIngredient[][] grid = new EntryIngredient[craftingWidth][craftingHeight]; + InputIngredient>[][] grid = new InputIngredient[Math.max(inputWidth, craftingWidth)][Math.max(inputHeight, craftingHeight)]; List inputEntries = getInputEntries(); for (int i = 0; i < inputEntries.size(); i++) { - grid[i % getInputWidth()][i / getInputWidth()] = inputEntries.get(i); + grid[i % getInputWidth()][i / getInputWidth()] = InputIngredient.of(getSlotWithSize(getInputWidth(), i, craftingWidth), inputEntries.get(i)); } - List list = new ArrayList<>(craftingWidth * craftingHeight); + List>> list = new ArrayList<>(craftingWidth * craftingHeight); for (int i = 0, n = craftingWidth * craftingHeight; i < n; i++) { - list.add(EntryIngredient.empty()); + list.add(InputIngredient.empty(i)); } for (int x = 0; x < craftingWidth; x++) { for (int y = 0; y < craftingHeight; y++) { if (grid[x][y] != null) { - list.set(craftingWidth * y + x, grid[x][y]); + int index = craftingWidth * y + x; + list.set(index, grid[x][y]); } } } diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java index 7634edfdf..502c5c61b 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java @@ -49,4 +49,16 @@ public class DefaultShapelessDisplay extends DefaultCraftingDisplay 4 ? 3 : 2; } + + @SuppressWarnings("OptionalGetWithoutIsPresent") + @Override + public int getInputWidth() { + return Math.min(recipe.get().getIngredients().size(), 3); + } + + @SuppressWarnings("OptionalGetWithoutIsPresent") + @Override + public int getInputHeight() { + return (int) Math.ceil(recipe.get().getIngredients().size() / 3.0); + } } -- cgit