diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-01-27 11:49:37 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-01-27 11:49:37 +0800 |
| commit | 9984685493efbae33b81b29695db71872515e688 (patch) | |
| tree | 6102fc29d57a01e5dee78c0ba1fe784713a26010 /default-plugin | |
| parent | 92a82cf12af09b3764d5c75350592fbc02f4350f (diff) | |
| download | RoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.tar.gz RoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.tar.bz2 RoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.zip | |
Fix 2x2 crafting
Diffstat (limited to 'default-plugin')
2 files changed, 24 insertions, 9 deletions
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 938f68a97..53601861d 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<C extends Recipe<?>> extends BasicD } @Override - public List<EntryIngredient> getInputEntries(MenuSerializationContext<?, ?, ?> context, MenuInfo<?, ?> info, boolean fill) { - int craftingWidth = Math.max(3, getInputWidth()); - int craftingHeight = Math.max(3, getInputHeight()); + public List<InputIngredient<EntryStack<?>>> 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<AbstractContainerMenu, ?>) info).getCraftingWidth(context.getMenu()); craftingHeight = ((SimpleGridMenuInfo<AbstractContainerMenu, ?>) info).getCraftingHeight(context.getMenu()); } - EntryIngredient[][] grid = new EntryIngredient[craftingWidth][craftingHeight]; + InputIngredient<EntryStack<?>>[][] grid = new InputIngredient[Math.max(inputWidth, craftingWidth)][Math.max(inputHeight, craftingHeight)]; List<EntryIngredient> 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<EntryIngredient> list = new ArrayList<>(craftingWidth * craftingHeight); + List<InputIngredient<EntryStack<?>>> 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<ShapelessRec public int getHeight() { return recipe.get().getIngredients().size() > 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); + } } |
