VanillaFurnaceRecipe.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package me.shedaniel.plugin.furnace;
  2. import me.shedaniel.api.IRecipe;
  3. import net.minecraft.block.entity.FurnaceBlockEntity;
  4. import net.minecraft.item.Item;
  5. import net.minecraft.item.ItemStack;
  6. import net.minecraft.recipe.Ingredient;
  7. import net.minecraft.recipe.Recipe;
  8. import net.minecraft.recipe.smelting.SmeltingRecipe;
  9. import java.util.Arrays;
  10. import java.util.Collections;
  11. import java.util.LinkedList;
  12. import java.util.List;
  13. import java.util.stream.Collectors;
  14. public class VanillaFurnaceRecipe implements IRecipe<ItemStack> {
  15. private final SmeltingRecipe recipe;
  16. @Override
  17. public String getId() {
  18. return "furnace";
  19. }
  20. public VanillaFurnaceRecipe(SmeltingRecipe recipe) {
  21. this.recipe = recipe;
  22. }
  23. @Override
  24. public List<ItemStack> getOutput() {
  25. List<ItemStack> output = new LinkedList<>();
  26. output.add(recipe.getOutput().copy());
  27. return output;
  28. }
  29. @Override
  30. public List<List<ItemStack>> getInput() {
  31. List<List<ItemStack>> input = new LinkedList<>();
  32. for(Ingredient ingredient : recipe.getPreviewInputs()) {
  33. List<ItemStack> ingredients = Arrays.asList(ingredient.getStackArray());
  34. input.add(ingredients);
  35. }
  36. input.add(FurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList()));
  37. return input;
  38. }
  39. @Override
  40. public List<List<ItemStack>> getRecipeRequiredInput() {
  41. List<List<ItemStack>> input = new LinkedList<>();
  42. for(Ingredient ingredient : recipe.getPreviewInputs())
  43. Collections.addAll(input, new LinkedList<>(Arrays.asList(ingredient.getStackArray())));
  44. return input;
  45. }
  46. public Recipe getRecipe() {
  47. return recipe;
  48. }
  49. }