aboutsummaryrefslogtreecommitdiff
path: root/default-plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-06-14 20:45:12 +0800
committershedaniel <daniel@shedaniel.me>2021-06-14 20:45:12 +0800
commit3d90cdd1204b6b6a2c57b121cdf82de2448bb951 (patch)
treeef52f2aa6869538c7044c3ebf42a0376b0f32846 /default-plugin
parent2932350cc1315534c4ee9a8c9fe17a9b0815f2e9 (diff)
downloadRoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.tar.gz
RoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.tar.bz2
RoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.zip
Fix auto crafting patterns & refactor internals providers
Diffstat (limited to 'default-plugin')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java16
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java25
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java6
3 files changed, 19 insertions, 28 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
index 6eadc9d81..902e51f76 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
@@ -34,7 +34,6 @@ import me.shedaniel.rei.api.common.entry.comparison.EntryComparator;
import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry;
import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
import me.shedaniel.rei.api.common.plugins.REIServerPlugin;
-import me.shedaniel.rei.api.common.transfer.info.MenuInfoContext;
import me.shedaniel.rei.api.common.transfer.info.MenuInfoRegistry;
import me.shedaniel.rei.api.common.transfer.info.simple.RecipeBookGridMenuInfo;
import me.shedaniel.rei.api.common.util.EntryStacks;
@@ -59,7 +58,6 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.level.material.Fluid;
import org.jetbrains.annotations.ApiStatus;
-import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
@@ -127,18 +125,8 @@ public class DefaultPlugin implements BuiltinPlugin, REIServerPlugin {
@Override
public void registerMenuInfo(MenuInfoRegistry registry) {
- registry.register(BuiltinPlugin.CRAFTING, CraftingMenu.class, new RecipeBookGridMenuInfo<>() {
- @Override
- public List<List<ItemStack>> getInputs(MenuInfoContext<CraftingMenu, ?, DefaultCraftingDisplay<?>> context) {
- return context.getDisplay().getOrganisedInputEntries(this, context.getMenu());
- }
- });
- registry.register(BuiltinPlugin.CRAFTING, InventoryMenu.class, new RecipeBookGridMenuInfo<>() {
- @Override
- public List<List<ItemStack>> getInputs(MenuInfoContext<InventoryMenu, ?, DefaultCraftingDisplay<?>> context) {
- return context.getDisplay().getOrganisedInputEntries(this, context.getMenu());
- }
- });
+ registry.register(BuiltinPlugin.CRAFTING, CraftingMenu.class, new RecipeBookGridMenuInfo<>());
+ registry.register(BuiltinPlugin.CRAFTING, InventoryMenu.class, new RecipeBookGridMenuInfo<>());
registry.register(BuiltinPlugin.SMELTING, FurnaceMenu.class, new RecipeBookGridMenuInfo<>());
registry.register(BuiltinPlugin.SMOKING, SmokerMenu.class, new RecipeBookGridMenuInfo<>());
registry.register(BuiltinPlugin.BLASTING, BlastFurnaceMenu.class, new RecipeBookGridMenuInfo<>());
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 18baa55ab..2fc43dbaf 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
@@ -38,7 +38,6 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -65,21 +64,24 @@ public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicD
}
public <T extends AbstractContainerMenu> List<List<ItemStack>> getOrganisedInputEntries(SimpleGridMenuInfo<T, DefaultCraftingDisplay<?>> menuInfo, T container) {
- List<List<ItemStack>> list = new ArrayList<>(menuInfo.getCraftingWidth(container) * menuInfo.getCraftingHeight(container));
- for (int i = 0; i < menuInfo.getCraftingWidth(container) * menuInfo.getCraftingHeight(container); i++) {
- list.add(Collections.emptyList());
+ return CollectionUtils.map(getOrganisedInputEntries(menuInfo.getCraftingWidth(container), menuInfo.getCraftingHeight(container)), ingredient ->
+ CollectionUtils.<EntryStack<?>, ItemStack>filterAndMap(ingredient, stack -> stack.getType() == VanillaEntryTypes.ITEM,
+ EntryStack::castValue));
+ }
+
+ public <T extends AbstractContainerMenu> List<EntryIngredient> getOrganisedInputEntries(int menuWidth, int menuHeight) {
+ List<EntryIngredient> list = new ArrayList<>(menuWidth * menuHeight);
+ for (int i = 0; i < menuWidth * menuHeight; i++) {
+ list.add(EntryIngredient.empty());
}
for (int i = 0; i < getInputEntries().size(); i++) {
- @SuppressWarnings("RedundantTypeArguments")
- List<ItemStack> stacks = CollectionUtils.<EntryStack<?>, ItemStack>filterAndMap(getInputEntries().get(i), stack -> stack.getType() == VanillaEntryTypes.ITEM,
- EntryStack::castValue);
- list.set(getSlotWithSize(this, i, menuInfo.getCraftingWidth(container)), stacks);
+ list.set(getSlotWithSize(this, i, menuWidth), getInputEntries().get(i));
}
return list;
}
- public static int getSlotWithSize(DefaultCraftingDisplay<?> recipeDisplay, int index, int craftingGridWidth) {
- return getSlotWithSize(recipeDisplay.getWidth(), index, craftingGridWidth);
+ public static int getSlotWithSize(DefaultCraftingDisplay<?> display, int index, int craftingGridWidth) {
+ return getSlotWithSize(display.getWidth(), index, craftingGridWidth);
}
public static int getSlotWithSize(int recipeWidth, int index, int craftingGridWidth) {
@@ -89,6 +91,7 @@ public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicD
}
public static BasicDisplay.Serializer<DefaultCraftingDisplay<?>> serializer() {
- return BasicDisplay.Serializer.ofSimple(DefaultCustomDisplay::simple);
+ return BasicDisplay.Serializer.<DefaultCraftingDisplay<?>>ofSimple(DefaultCustomDisplay::simple)
+ .inputProvider(display -> display.getOrganisedInputEntries(3, 3));
}
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
index 5b1a28d53..45cd6eed4 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
@@ -44,14 +44,14 @@ public class DefaultCustomDisplay extends DefaultCraftingDisplay<Recipe<?>> {
BitSet column = new BitSet(3);
for (int i = 0; i < 9; i++)
if (i < input.size()) {
- List<? extends EntryStack<?>> stacks = input.get(i);
+ EntryIngredient stacks = input.get(i);
if (stacks.stream().anyMatch(stack -> !stack.isEmpty())) {
row.set((i - (i % 3)) / 3);
column.set(i % 3);
}
}
- this.width = row.cardinality();
- this.height = column.cardinality();
+ this.width = column.cardinality();
+ this.height = row.cardinality();
}
public static DefaultCustomDisplay simple(List<EntryIngredient> input, List<EntryIngredient> output, Optional<ResourceLocation> location) {