diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-06-14 20:45:12 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-06-14 20:45:12 +0800 |
| commit | 3d90cdd1204b6b6a2c57b121cdf82de2448bb951 (patch) | |
| tree | ef52f2aa6869538c7044c3ebf42a0376b0f32846 /default-plugin | |
| parent | 2932350cc1315534c4ee9a8c9fe17a9b0815f2e9 (diff) | |
| download | RoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.tar.gz RoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.tar.bz2 RoughlyEnoughItems-3d90cdd1204b6b6a2c57b121cdf82de2448bb951.zip | |
Fix auto crafting patterns & refactor internals providers
Diffstat (limited to 'default-plugin')
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) { |
