VanillaPlugin.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package me.shedaniel.plugin;
  2. import me.shedaniel.api.IREIPlugin;
  3. import me.shedaniel.impl.REIRecipeManager;
  4. import me.shedaniel.listenerdefinitions.PotionCraftingAdder;
  5. import me.shedaniel.plugin.blastfurnace.VanillaBlastFurnaceCategory;
  6. import me.shedaniel.plugin.blastfurnace.VanillaBlastFurnaceRecipe;
  7. import me.shedaniel.plugin.crafting.VanillaCraftingCategory;
  8. import me.shedaniel.plugin.crafting.VanillaCraftingRecipe;
  9. import me.shedaniel.plugin.crafting.VanillaShapedCraftingRecipe;
  10. import me.shedaniel.plugin.crafting.VanillaShapelessCraftingRecipe;
  11. import me.shedaniel.plugin.furnace.VanillaFurnaceCategory;
  12. import me.shedaniel.plugin.furnace.VanillaFurnaceRecipe;
  13. import me.shedaniel.plugin.potion.VanillaPotionCategory;
  14. import me.shedaniel.plugin.potion.VanillaPotionRecipe;
  15. import me.shedaniel.plugin.smoker.VanillaSmokerCategory;
  16. import me.shedaniel.plugin.smoker.VanillaSmokerRecipe;
  17. import net.minecraft.item.Item;
  18. import net.minecraft.item.ItemStack;
  19. import net.minecraft.item.Items;
  20. import net.minecraft.potion.Potion;
  21. import net.minecraft.potion.PotionUtil;
  22. import net.minecraft.potion.Potions;
  23. import net.minecraft.recipe.Ingredient;
  24. import net.minecraft.recipe.Recipe;
  25. import net.minecraft.recipe.crafting.ShapedRecipe;
  26. import net.minecraft.recipe.crafting.ShapelessRecipe;
  27. import net.minecraft.recipe.smelting.BlastingRecipe;
  28. import net.minecraft.recipe.smelting.SmeltingRecipe;
  29. import net.minecraft.recipe.smelting.SmokingRecipe;
  30. import net.minecraft.util.registry.Registry;
  31. import java.util.LinkedList;
  32. import java.util.List;
  33. import java.util.stream.Collectors;
  34. public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder {
  35. private List<VanillaPotionRecipe> potionRecipes = new LinkedList<>();
  36. private List<VanillaCraftingRecipe> recipes = new LinkedList<>();
  37. private List<VanillaFurnaceRecipe> furnaceRecipes = new LinkedList<>();
  38. private List<VanillaSmokerRecipe> smokerRecipes = new LinkedList<>();
  39. private List<VanillaBlastFurnaceRecipe> blastFurnaceRecipes = new LinkedList<>();
  40. @Override
  41. public void registerCategories() {
  42. REIRecipeManager.instance().addDisplayAdapter(new VanillaCraftingCategory());
  43. REIRecipeManager.instance().addDisplayAdapter(new VanillaFurnaceCategory());
  44. REIRecipeManager.instance().addDisplayAdapter(new VanillaSmokerCategory());
  45. REIRecipeManager.instance().addDisplayAdapter(new VanillaBlastFurnaceCategory());
  46. REIRecipeManager.instance().addDisplayAdapter(new VanillaPotionCategory());
  47. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("a", new ItemStack(Items.ITEM_FRAME)));
  48. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("b", new ItemStack(Items.ITEM_FRAME)));
  49. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("c", new ItemStack(Items.ITEM_FRAME)));
  50. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("d", new ItemStack(Items.ITEM_FRAME)));
  51. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("e", new ItemStack(Items.ITEM_FRAME)));
  52. }
  53. @Override
  54. public void registerRecipes() {
  55. for(Recipe recipe : REIRecipeManager.instance().recipeManager.values())
  56. if (recipe instanceof ShapelessRecipe)
  57. recipes.add(new VanillaShapelessCraftingRecipe((ShapelessRecipe) recipe));
  58. else if (recipe instanceof ShapedRecipe)
  59. recipes.add(new VanillaShapedCraftingRecipe((ShapedRecipe) recipe));
  60. else if (recipe instanceof SmeltingRecipe)
  61. furnaceRecipes.add(new VanillaFurnaceRecipe((SmeltingRecipe) recipe));
  62. else if (recipe instanceof SmokingRecipe)
  63. smokerRecipes.add(new VanillaSmokerRecipe((SmokingRecipe) recipe));
  64. else if (recipe instanceof BlastingRecipe)
  65. blastFurnaceRecipes.add(new VanillaBlastFurnaceRecipe((BlastingRecipe) recipe));
  66. Registry.POTION.stream().filter(potion -> !potion.equals(Potions.EMPTY)).forEach(potion -> {
  67. ItemStack basePotion = PotionUtil.setPotion(new ItemStack(Items.POTION), potion),
  68. splashPotion = PotionUtil.setPotion(new ItemStack(Items.SPLASH_POTION), potion),
  69. lingeringPotion = PotionUtil.setPotion(new ItemStack(Items.LINGERING_POTION), potion);
  70. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{basePotion}, Ingredient.ofItems(Items.GUNPOWDER).getStackArray(),
  71. new ItemStack[]{splashPotion}));
  72. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{splashPotion}, Ingredient.ofItems(Items.DRAGON_BREATH).getStackArray(),
  73. new ItemStack[]{lingeringPotion}));
  74. });
  75. REIRecipeManager.instance().addRecipe("vanilla", recipes);
  76. REIRecipeManager.instance().addRecipe("furnace", furnaceRecipes);
  77. REIRecipeManager.instance().addRecipe("smoker", smokerRecipes);
  78. REIRecipeManager.instance().addRecipe("potion", potionRecipes.stream().distinct().collect(Collectors.toList()));
  79. REIRecipeManager.instance().addRecipe("blastingfurnace", blastFurnaceRecipes);
  80. // REIRecipeManager.instance().addRecipe("a", Arrays.asList(new RandomRecipe("a")));
  81. // REIRecipeManager.instance().addRecipe("b", Arrays.asList(new RandomRecipe("b")));
  82. // REIRecipeManager.instance().addRecipe("c", Arrays.asList(new RandomRecipe("c")));
  83. // REIRecipeManager.instance().addRecipe("d", Arrays.asList(new RandomRecipe("d")));
  84. // REIRecipeManager.instance().addRecipe("e", Arrays.asList(new RandomRecipe("e")));
  85. }
  86. @Override
  87. public void registerSpecialGuiExclusion() {
  88. }
  89. @Override
  90. public void addPotionRecipe(Potion inputType, Item reagent, Potion outputType) {
  91. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{PotionUtil.setPotion(new ItemStack(Items.POTION), inputType)},
  92. Ingredient.ofItems(reagent).getStackArray(),
  93. new ItemStack[]{PotionUtil.setPotion(new ItemStack(Items.POTION), outputType)}));
  94. }
  95. }