DefaultCampfireDisplay.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.plugin.campfire;
  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.AbstractCookingRecipe;
  11. import net.minecraft.recipe.CampfireCookingRecipe;
  12. import net.minecraft.recipe.Ingredient;
  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 DefaultCampfireDisplay implements RecipeDisplay {
  21. private List<List<EntryStack>> inputs;
  22. private List<EntryStack> output;
  23. private int cookTime;
  24. private CampfireCookingRecipe display;
  25. public DefaultCampfireDisplay(CampfireCookingRecipe recipe) {
  26. this(recipe.getPreviewInputs(), recipe.getOutput(), recipe.getCookTime());
  27. this.display = recipe;
  28. }
  29. public DefaultCampfireDisplay(DefaultedList<Ingredient> ingredients, ItemStack output, int cookTime) {
  30. this.inputs = ingredients.stream().map(i -> {
  31. List<EntryStack> entries = new ArrayList<>();
  32. for (ItemStack stack : i.getMatchingStacksClient()) {
  33. entries.add(EntryStack.create(stack));
  34. }
  35. return entries;
  36. }).collect(Collectors.toList());
  37. this.output = Collections.singletonList(EntryStack.create(output));
  38. this.cookTime = cookTime;
  39. }
  40. public int getCookTime() {
  41. return cookTime;
  42. }
  43. @Override
  44. public Optional<Identifier> getRecipeLocation() {
  45. return Optional.ofNullable(display).map(AbstractCookingRecipe::getId);
  46. }
  47. @Override
  48. public List<List<EntryStack>> getInputEntries() {
  49. return inputs;
  50. }
  51. @Override
  52. public List<EntryStack> getOutputEntries() {
  53. return output;
  54. }
  55. @Override
  56. public List<List<EntryStack>> getRequiredEntries() {
  57. return inputs;
  58. }
  59. @Override
  60. public Identifier getRecipeCategory() {
  61. return DefaultPlugin.CAMPFIRE;
  62. }
  63. }