aboutsummaryrefslogtreecommitdiff
path: root/default-plugin/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-01-27 11:49:37 +0800
committershedaniel <daniel@shedaniel.me>2022-01-27 11:56:24 +0800
commit95cdaff2ded9161472d6d56e19d22b4b76e6f8b3 (patch)
tree7ad5cc122ffe61254d0d7f47a89522f3057c2201 /default-plugin/src/main/java
parent8405799f9083e5180fd1da134249363b785f0071 (diff)
downloadRoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.tar.gz
RoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.tar.bz2
RoughlyEnoughItems-95cdaff2ded9161472d6d56e19d22b4b76e6f8b3.zip
Fix 2x2 crafting
Diffstat (limited to 'default-plugin/src/main/java')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java21
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java12
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);
+ }
}