123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package me.shedaniel.rei.plugin;
- import com.google.common.collect.Lists;
- import me.shedaniel.rei.api.IRecipePlugin;
- import me.shedaniel.rei.api.SpeedCraftFunctional;
- import me.shedaniel.rei.client.RecipeHelper;
- import me.shedaniel.rei.listeners.IMixinRecipeBookGui;
- import net.minecraft.client.MinecraftClient;
- import net.minecraft.client.gui.Gui;
- import net.minecraft.client.gui.container.BlastFurnaceGui;
- import net.minecraft.client.gui.container.CraftingTableGui;
- import net.minecraft.client.gui.container.FurnaceGui;
- import net.minecraft.client.gui.container.SmokerGui;
- import net.minecraft.client.gui.ingame.PlayerInventoryGui;
- import net.minecraft.recipe.Recipe;
- import net.minecraft.recipe.StonecuttingRecipe;
- import net.minecraft.recipe.cooking.BlastingRecipe;
- import net.minecraft.recipe.cooking.CampfireCookingRecipe;
- import net.minecraft.recipe.cooking.SmeltingRecipe;
- import net.minecraft.recipe.cooking.SmokingRecipe;
- import net.minecraft.recipe.crafting.ShapedRecipe;
- import net.minecraft.recipe.crafting.ShapelessRecipe;
- import net.minecraft.util.Identifier;
- import java.util.List;
- public class DefaultPlugin implements IRecipePlugin {
-
- public static final Identifier CRAFTING = new Identifier("roughlyenoughitems", "plugins/crafting");
- public static final Identifier SMELTING = new Identifier("roughlyenoughitems", "plugins/smelting");
- public static final Identifier SMOKING = new Identifier("roughlyenoughitems", "plugins/smoking");
- public static final Identifier BLASTING = new Identifier("roughlyenoughitems", "plugins/blasting");
- public static final Identifier CAMPFIRE = new Identifier("roughlyenoughitems", "plugins/campfire");
- public static final Identifier STONE_CUTTING = new Identifier("roughlyenoughitems", "plugins/stone_cutting");
- public static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing");
-
- private static final List<DefaultBrewingDisplay> BREWING_DISPLAYS = Lists.newArrayList();
-
- public static void registerBrewingDisplay(DefaultBrewingDisplay display) {
- BREWING_DISPLAYS.add(display);
- }
-
- @Override
- public void registerPluginCategories() {
- RecipeHelper.registerCategory(new DefaultCraftingCategory());
- RecipeHelper.registerCategory(new DefaultSmeltingCategory());
- RecipeHelper.registerCategory(new DefaultSmokingCategory());
- RecipeHelper.registerCategory(new DefaultBlastingCategory());
- RecipeHelper.registerCategory(new DefaultCampfireCategory());
- RecipeHelper.registerCategory(new DefaultStoneCuttingCategory());
- RecipeHelper.registerCategory(new DefaultBrewingCategory());
- }
-
- @Override
- public void registerRecipes() {
- for(Recipe recipe : RecipeHelper.getRecipeManager().values())
- if (recipe instanceof ShapelessRecipe)
- RecipeHelper.registerRecipe(CRAFTING, new DefaultShapelessDisplay((ShapelessRecipe) recipe));
- else if (recipe instanceof ShapedRecipe)
- RecipeHelper.registerRecipe(CRAFTING, new DefaultShapedDisplay((ShapedRecipe) recipe));
- else if (recipe instanceof SmeltingRecipe)
- RecipeHelper.registerRecipe(SMELTING, new DefaultSmeltingDisplay((SmeltingRecipe) recipe));
- else if (recipe instanceof SmokingRecipe)
- RecipeHelper.registerRecipe(SMOKING, new DefaultSmokingDisplay((SmokingRecipe) recipe));
- else if (recipe instanceof BlastingRecipe)
- RecipeHelper.registerRecipe(BLASTING, new DefaultBlastingDisplay((BlastingRecipe) recipe));
- else if (recipe instanceof CampfireCookingRecipe)
- RecipeHelper.registerRecipe(CAMPFIRE, new DefaultCampfireDisplay((CampfireCookingRecipe) recipe));
- else if (recipe instanceof StonecuttingRecipe)
- RecipeHelper.registerRecipe(STONE_CUTTING, new DefaultStoneCuttingDisplay((StonecuttingRecipe) recipe));
- BREWING_DISPLAYS.forEach(display -> RecipeHelper.registerRecipe(BREWING, display));
- }
-
- @Override
- public void registerSpeedCraft() {
- RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, null);
- RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.STONE_CUTTING, null);
- RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.BREWING, null);
- RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.CRAFTING, new SpeedCraftFunctional<DefaultCraftingDisplay>() {
- @Override
- public Class[] getFunctioningFor() {
- return new Class[]{PlayerInventoryGui.class, CraftingTableGui.class};
- }
-
- @Override
- public boolean performAutoCraft(Gui gui, DefaultCraftingDisplay recipe) {
- if (gui.getClass().isAssignableFrom(CraftingTableGui.class))
- ((IMixinRecipeBookGui) (((CraftingTableGui) gui).getRecipeBookGui())).getGhostSlots().reset();
- else if (gui.getClass().isAssignableFrom(PlayerInventoryGui.class))
- ((IMixinRecipeBookGui) (((PlayerInventoryGui) gui).getRecipeBookGui())).getGhostSlots().reset();
- else
- return false;
- MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed());
- return true;
- }
-
- @Override
- public boolean acceptRecipe(Gui gui, DefaultCraftingDisplay recipe) {
- return gui instanceof CraftingTableGui || (gui instanceof PlayerInventoryGui && recipe.getHeight() < 3 && recipe.getWidth() < 3);
- }
- });
- RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMELTING, new SpeedCraftFunctional<DefaultSmeltingDisplay>() {
- @Override
- public Class[] getFunctioningFor() {
- return new Class[]{FurnaceGui.class};
- }
-
- @Override
- public boolean performAutoCraft(Gui gui, DefaultSmeltingDisplay recipe) {
- if (gui instanceof FurnaceGui)
- ((IMixinRecipeBookGui) (((FurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset();
- else
- return false;
- MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed());
- return true;
- }
-
- @Override
- public boolean acceptRecipe(Gui gui, DefaultSmeltingDisplay recipe) {
- return gui instanceof FurnaceGui;
- }
- });
- RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMOKING, new SpeedCraftFunctional<DefaultSmokingDisplay>() {
- @Override
- public Class[] getFunctioningFor() {
- return new Class[]{SmokerGui.class};
- }
-
- @Override
- public boolean performAutoCraft(Gui gui, DefaultSmokingDisplay recipe) {
- if (gui instanceof SmokerGui)
- ((IMixinRecipeBookGui) (((SmokerGui) gui).getRecipeBookGui())).getGhostSlots().reset();
- else
- return false;
- MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed());
- return true;
- }
-
- @Override
- public boolean acceptRecipe(Gui gui, DefaultSmokingDisplay recipe) {
- return gui instanceof SmokerGui;
- }
- });
- RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.BLASTING, new SpeedCraftFunctional<DefaultBlastingDisplay>() {
- @Override
- public Class[] getFunctioningFor() {
- return new Class[]{BlastFurnaceGui.class};
- }
-
- @Override
- public boolean performAutoCraft(Gui gui, DefaultBlastingDisplay recipe) {
- if (gui instanceof BlastFurnaceGui)
- ((IMixinRecipeBookGui) (((BlastFurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset();
- else
- return false;
- MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed());
- return true;
- }
-
- @Override
- public boolean acceptRecipe(Gui gui, DefaultBlastingDisplay recipe) {
- return gui instanceof BlastFurnaceGui;
- }
- });
- }
-
- @Override
- public int getPriority() {
- return -1;
- }
-
- }
|