diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-01-27 11:49:37 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-01-27 11:56:24 +0800 |
| commit | 95cdaff2ded9161472d6d56e19d22b4b76e6f8b3 (patch) | |
| tree | 7ad5cc122ffe61254d0d7f47a89522f3057c2201 /default-plugin/src/main/java/me | |
| parent | 8405799f9083e5180fd1da134249363b785f0071 (diff) | |
| download | RoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.tar.gz RoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.tar.bz2 RoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.zip | |
Fix 2x2 crafting
Diffstat (limited to 'default-plugin/src/main/java/me')
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 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<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); + } } |
