VanillaPlugin.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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.lang.reflect.Array;
  32. import java.util.Arrays;
  33. import java.util.LinkedList;
  34. import java.util.List;
  35. import java.util.stream.Collectors;
  36. public class VanillaPlugin implements IREIPlugin, PotionCraftingAdder {
  37. private List<VanillaPotionRecipe> potionRecipes = new LinkedList<>();
  38. @Override
  39. public void register() {
  40. List<VanillaCraftingRecipe> recipes = new LinkedList<>();
  41. List<VanillaFurnaceRecipe> furnaceRecipes = new LinkedList<>();
  42. List<VanillaSmokerRecipe> smokerRecipes = new LinkedList<>();
  43. List<VanillaBlastFurnaceRecipe> blastFurnaceRecipes = new LinkedList<>();
  44. REIRecipeManager.instance().addDisplayAdapter(new VanillaCraftingCategory());
  45. REIRecipeManager.instance().addDisplayAdapter(new VanillaFurnaceCategory());
  46. REIRecipeManager.instance().addDisplayAdapter(new VanillaSmokerCategory());
  47. REIRecipeManager.instance().addDisplayAdapter(new VanillaBlastFurnaceCategory());
  48. REIRecipeManager.instance().addDisplayAdapter(new VanillaPotionCategory());
  49. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("a", new ItemStack(Items.ITEM_FRAME)));
  50. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("b", new ItemStack(Items.ITEM_FRAME)));
  51. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("c", new ItemStack(Items.ITEM_FRAME)));
  52. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("d", new ItemStack(Items.ITEM_FRAME)));
  53. // REIRecipeManager.instance().addDisplayAdapter(new TestRandomCategory("e", new ItemStack(Items.ITEM_FRAME)));
  54. for(Recipe recipe : REIRecipeManager.instance().recipeManager.values()) {
  55. if (recipe instanceof ShapelessRecipe) {
  56. recipes.add(new VanillaShapelessCraftingRecipe((ShapelessRecipe) recipe));
  57. }
  58. if (recipe instanceof ShapedRecipe) {
  59. recipes.add(new VanillaShapedCraftingRecipe((ShapedRecipe) recipe));
  60. }
  61. if (recipe instanceof SmeltingRecipe) {
  62. furnaceRecipes.add(new VanillaFurnaceRecipe((SmeltingRecipe) recipe));
  63. }
  64. if (recipe instanceof SmokingRecipe) {
  65. smokerRecipes.add(new VanillaSmokerRecipe((SmokingRecipe) recipe));
  66. }
  67. if (recipe instanceof BlastingRecipe) {
  68. blastFurnaceRecipes.add(new VanillaBlastFurnaceRecipe((BlastingRecipe) recipe));
  69. }
  70. }
  71. Registry.POTION.stream().filter(potion -> !potion.equals(Potions.EMPTY)).forEach(potion -> {
  72. ItemStack basePotion = PotionUtil.setPotion(new ItemStack(Items.POTION), potion),
  73. splashPotion = PotionUtil.setPotion(new ItemStack(Items.SPLASH_POTION), potion),
  74. lingeringPotion = PotionUtil.setPotion(new ItemStack(Items.LINGERING_POTION), potion);
  75. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{basePotion}, Ingredient.ofItems(Items.GUNPOWDER).getStackArray(),
  76. new ItemStack[]{splashPotion}));
  77. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{splashPotion}, Ingredient.ofItems(Items.DRAGON_BREATH).getStackArray(),
  78. new ItemStack[]{lingeringPotion}));
  79. });
  80. REIRecipeManager.instance().addRecipe("vanilla", recipes);
  81. REIRecipeManager.instance().addRecipe("furnace", furnaceRecipes);
  82. REIRecipeManager.instance().addRecipe("smoker", smokerRecipes);
  83. REIRecipeManager.instance().addRecipe("potion", potionRecipes.stream().distinct().collect(Collectors.toList()));
  84. REIRecipeManager.instance().addRecipe("blastingfurnace", blastFurnaceRecipes);
  85. // REIRecipeManager.instance().addRecipe("a", Arrays.asList(new RandomRecipe("a")));
  86. // REIRecipeManager.instance().addRecipe("b", Arrays.asList(new RandomRecipe("b")));
  87. // REIRecipeManager.instance().addRecipe("c", Arrays.asList(new RandomRecipe("c")));
  88. // REIRecipeManager.instance().addRecipe("d", Arrays.asList(new RandomRecipe("d")));
  89. // REIRecipeManager.instance().addRecipe("e", Arrays.asList(new RandomRecipe("e")));
  90. }
  91. @Override
  92. public void addPotionRecipe(Potion inputType, Item reagent, Potion outputType) {
  93. potionRecipes.add(new VanillaPotionRecipe(new ItemStack[]{PotionUtil.setPotion(new ItemStack(Items.POTION), inputType)},
  94. Ingredient.ofItems(reagent).getStackArray(),
  95. new ItemStack[]{PotionUtil.setPotion(new ItemStack(Items.POTION), outputType)}));
  96. }
  97. }