aboutsummaryrefslogtreecommitdiff
path: root/default-plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-01-27 11:49:37 +0800
committershedaniel <daniel@shedaniel.me>2022-01-27 11:49:37 +0800
commit9984685493efbae33b81b29695db71872515e688 (patch)
tree6102fc29d57a01e5dee78c0ba1fe784713a26010 /default-plugin
parent92a82cf12af09b3764d5c75350592fbc02f4350f (diff)
downloadRoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.tar.gz
RoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.tar.bz2
RoughlyEnoughItems-9984685493efbae33b81b29695db71872515e688.zip
Fix 2x2 crafting
Diffstat (limited to 'default-plugin')
-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 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);
+ }
}