DefaultStoneCuttingDisplay.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.plugin.stonecutting;
  6. import me.shedaniel.rei.api.EntryStack;
  7. import me.shedaniel.rei.api.RecipeDisplay;
  8. import me.shedaniel.rei.plugin.DefaultPlugin;
  9. import net.minecraft.item.ItemStack;
  10. import net.minecraft.recipe.CuttingRecipe;
  11. import net.minecraft.recipe.Ingredient;
  12. import net.minecraft.recipe.StonecuttingRecipe;
  13. import net.minecraft.util.DefaultedList;
  14. import net.minecraft.util.Identifier;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. import java.util.Optional;
  19. import java.util.stream.Collectors;
  20. public class DefaultStoneCuttingDisplay implements RecipeDisplay {
  21. private List<List<EntryStack>> inputs;
  22. private List<EntryStack> output;
  23. private StonecuttingRecipe display;
  24. public DefaultStoneCuttingDisplay(StonecuttingRecipe recipe) {
  25. this(recipe.getPreviewInputs(), recipe.getOutput());
  26. this.display = recipe;
  27. }
  28. public DefaultStoneCuttingDisplay(DefaultedList<Ingredient> ingredients, ItemStack output) {
  29. this.inputs = ingredients.stream().map(i -> {
  30. List<EntryStack> entries = new ArrayList<>();
  31. for (ItemStack stack : i.getMatchingStacksClient()) {
  32. entries.add(EntryStack.create(stack));
  33. }
  34. return entries;
  35. }).collect(Collectors.toList());
  36. this.output = Collections.singletonList(EntryStack.create(output));
  37. }
  38. @Override
  39. public Optional<Identifier> getRecipeLocation() {
  40. return Optional.ofNullable(display).map(CuttingRecipe::getId);
  41. }
  42. @Override
  43. public List<List<EntryStack>> getInputEntries() {
  44. return inputs;
  45. }
  46. @Override
  47. public List<EntryStack> getOutputEntries() {
  48. return output;
  49. }
  50. @Override
  51. public Identifier getRecipeCategory() {
  52. return DefaultPlugin.STONE_CUTTING;
  53. }
  54. @Override
  55. public List<List<EntryStack>> getRequiredEntries() {
  56. return getInputEntries();
  57. }
  58. }