AutoBlastingBookHandler.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.plugin.autocrafting;
  6. import me.shedaniel.rei.api.AutoCraftingHandler;
  7. import me.shedaniel.rei.api.RecipeDisplay;
  8. import me.shedaniel.rei.client.ScreenHelper;
  9. import me.shedaniel.rei.gui.ContainerScreenOverlay;
  10. import me.shedaniel.rei.listeners.RecipeBookGuiHooks;
  11. import me.shedaniel.rei.plugin.blasting.DefaultBlastingDisplay;
  12. import net.minecraft.client.MinecraftClient;
  13. import net.minecraft.client.gui.screen.Screen;
  14. import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
  15. import net.minecraft.client.gui.screen.ingame.BlastFurnaceScreen;
  16. import net.minecraft.container.BlastFurnaceContainer;
  17. import java.util.function.Supplier;
  18. public class AutoBlastingBookHandler implements AutoCraftingHandler {
  19. @Override
  20. public boolean handle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) {
  21. DefaultBlastingDisplay display = (DefaultBlastingDisplay) displaySupplier.get();
  22. BlastFurnaceScreen furnaceScreen = (BlastFurnaceScreen) parentScreen;
  23. minecraft.openScreen(furnaceScreen);
  24. ((RecipeBookGuiHooks) furnaceScreen.getRecipeBookGui()).rei_getGhostSlots().reset();
  25. BlastFurnaceContainer container = furnaceScreen.getContainer();
  26. minecraft.interactionManager.clickRecipe(container.syncId, display.getOptionalRecipe().get(), Screen.hasShiftDown());
  27. ScreenHelper.getLastOverlay().init();
  28. return true;
  29. }
  30. @Override
  31. public boolean canHandle(Supplier<RecipeDisplay> displaySupplier, MinecraftClient minecraft, Screen recipeViewingScreen, AbstractContainerScreen<?> parentScreen, ContainerScreenOverlay overlay) {
  32. return parentScreen instanceof BlastFurnaceScreen && displaySupplier.get() instanceof DefaultBlastingDisplay && ((DefaultBlastingDisplay) displaySupplier.get()).getOptionalRecipe().isPresent() && minecraft.player.getRecipeBook().contains(((DefaultBlastingDisplay) displaySupplier.get()).getOptionalRecipe().get());
  33. }
  34. }