SpeedCraftingButtonWidget.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package me.shedaniel.rei.gui.widget;
  2. import me.shedaniel.rei.api.RecipeDisplay;
  3. import me.shedaniel.rei.api.SpeedCraftFunctional;
  4. import me.shedaniel.rei.client.ClientHelper;
  5. import me.shedaniel.rei.client.ScreenHelper;
  6. import net.minecraft.client.MinecraftClient;
  7. import net.minecraft.client.resource.language.I18n;
  8. import java.awt.*;
  9. import java.util.Arrays;
  10. import java.util.function.Supplier;
  11. public class SpeedCraftingButtonWidget extends ButtonWidget {
  12. private final Supplier<RecipeDisplay> displaySupplier;
  13. private final SpeedCraftFunctional functional;
  14. public SpeedCraftingButtonWidget(Rectangle rectangle, String text, SpeedCraftFunctional functional, Supplier<RecipeDisplay> displaySupplier) {
  15. super(rectangle, text);
  16. this.displaySupplier = displaySupplier;
  17. this.functional = functional;
  18. }
  19. @Override
  20. public void onPressed(int button, double mouseX, double mouseY) {
  21. MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen());
  22. ScreenHelper.getLastOverlay().onInitialized();
  23. functional.performAutoCraft(ScreenHelper.getLastContainerScreen(), displaySupplier.get());
  24. }
  25. @Override
  26. public void draw(int mouseX, int mouseY, float partialTicks) {
  27. this.enabled = functional != null && functional.acceptRecipe(ScreenHelper.getLastContainerScreen(), displaySupplier.get());
  28. super.draw(mouseX, mouseY, partialTicks);
  29. if (getBounds().contains(mouseX, mouseY))
  30. if (enabled)
  31. ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.move_items"))));
  32. else
  33. ScreenHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.speed_craft.failed_move_items"))));
  34. }
  35. }