diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java index b53b1cf33..16038bc75 100644 --- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java +++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/AutoCraftingTableBookHandler.java @@ -5,35 +5,31 @@ package me.shedaniel.rei.plugin.autocrafting; -import me.shedaniel.rei.api.AutoCraftingHandler; -import me.shedaniel.rei.api.RecipeDisplay; +import me.shedaniel.rei.api.AutoTransferHandler; import me.shedaniel.rei.client.ScreenHelper; -import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import me.shedaniel.rei.plugin.crafting.DefaultCraftingDisplay; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.gui.screen.ingame.CraftingTableScreen; import net.minecraft.container.CraftingTableContainer; -import java.util.function.Supplier; - -public class AutoCraftingTableBookHandler implements AutoCraftingHandler { +public class AutoCraftingTableBookHandler implements AutoTransferHandler { @Override - public boolean handle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) { - DefaultCraftingDisplay display = (DefaultCraftingDisplay) displaySupplier.get(); - CraftingTableScreen craftingTableScreen = (CraftingTableScreen) parentScreen; - minecraft.openScreen(craftingTableScreen); + public Result handle(Context context) { + if (!(context.getContainerScreen() instanceof CraftingTableScreen) || !(context.getRecipe() instanceof DefaultCraftingDisplay)) + return Result.createNotApplicable(); + if (!((DefaultCraftingDisplay) context.getRecipe()).getOptionalRecipe().isPresent() || !context.getMinecraft().player.getRecipeBook().contains(((DefaultCraftingDisplay) context.getRecipe()).getOptionalRecipe().get())) + return Result.createNotApplicable(); + if (!context.isActuallyCrafting()) + return Result.createSuccessful(); + + DefaultCraftingDisplay display = (DefaultCraftingDisplay) context.getRecipe(); + CraftingTableScreen craftingTableScreen = (CraftingTableScreen) context.getContainerScreen(); + context.getMinecraft().openScreen(craftingTableScreen); ((RecipeBookGuiHooks) craftingTableScreen.getRecipeBookGui()).rei_getGhostSlots().reset(); CraftingTableContainer container = craftingTableScreen.getContainer(); - minecraft.interactionManager.clickRecipe(container.syncId, display.getOptionalRecipe().get(), Screen.hasShiftDown()); + context.getMinecraft().interactionManager.clickRecipe(container.syncId, display.getOptionalRecipe().get(), Screen.hasShiftDown()); ScreenHelper.getLastOverlay().init(); - return true; - } - - @Override - public boolean canHandle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) { - return parentScreen instanceof CraftingTableScreen && displaySupplier.get() instanceof DefaultCraftingDisplay && ((DefaultCraftingDisplay) displaySupplier.get()).getOptionalRecipe().isPresent() && minecraft.player.getRecipeBook().contains(((DefaultCraftingDisplay) displaySupplier.get()).getOptionalRecipe().get()); + return Result.createSuccessful(); } } |
