DefaultSmeltingDisplay.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.plugin.smelting;
  6. import me.shedaniel.rei.api.TransferRecipeDisplay;
  7. import me.shedaniel.rei.plugin.DefaultPlugin;
  8. import me.shedaniel.rei.server.ContainerInfo;
  9. import net.minecraft.block.entity.FurnaceBlockEntity;
  10. import net.minecraft.container.Container;
  11. import net.minecraft.item.Item;
  12. import net.minecraft.item.ItemStack;
  13. import net.minecraft.recipe.AbstractCookingRecipe;
  14. import net.minecraft.recipe.SmeltingRecipe;
  15. import net.minecraft.util.Identifier;
  16. import java.util.Arrays;
  17. import java.util.Collections;
  18. import java.util.List;
  19. import java.util.Optional;
  20. import java.util.stream.Collectors;
  21. public class DefaultSmeltingDisplay implements TransferRecipeDisplay {
  22. private SmeltingRecipe display;
  23. private List<List<ItemStack>> input;
  24. private List<ItemStack> output;
  25. public DefaultSmeltingDisplay(SmeltingRecipe recipe) {
  26. this.display = recipe;
  27. this.input = recipe.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList());
  28. this.input.add(FurnaceBlockEntity.createFuelTimeMap().keySet().stream().map(Item::getStackForRender).collect(Collectors.toList()));
  29. this.output = Collections.singletonList(recipe.getOutput());
  30. }
  31. @Override
  32. public Optional<Identifier> getRecipeLocation() {
  33. return Optional.ofNullable(display).map(AbstractCookingRecipe::getId);
  34. }
  35. @Override
  36. public List<List<ItemStack>> getInput() {
  37. return input;
  38. }
  39. public List<ItemStack> getFuel() {
  40. return input.get(1);
  41. }
  42. @Override
  43. public List<ItemStack> getOutput() {
  44. return output;
  45. }
  46. @Override
  47. public Identifier getRecipeCategory() {
  48. return DefaultPlugin.SMELTING;
  49. }
  50. @Override
  51. public List<List<ItemStack>> getRequiredItems() {
  52. return input;
  53. }
  54. public Optional<SmeltingRecipe> getOptionalRecipe() {
  55. return Optional.ofNullable(display);
  56. }
  57. @Override
  58. public int getWidth() {
  59. return 1;
  60. }
  61. @Override
  62. public int getHeight() {
  63. return 1;
  64. }
  65. @Override
  66. public List<List<ItemStack>> getOrganisedInput(ContainerInfo<Container> containerInfo, Container container) {
  67. return display.getPreviewInputs().stream().map(i -> Arrays.asList(i.getMatchingStacksClient())).collect(Collectors.toList());
  68. }
  69. }