ScreenHelper.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package me.shedaniel.rei.client;
  2. import com.google.common.collect.Lists;
  3. import me.shedaniel.rei.gui.ContainerScreenOverlay;
  4. import me.shedaniel.rei.listeners.ContainerScreenHooks;
  5. import net.fabricmc.api.ClientModInitializer;
  6. import net.fabricmc.fabric.api.event.client.ClientTickCallback;
  7. import net.minecraft.client.MinecraftClient;
  8. import net.minecraft.client.gui.ContainerScreen;
  9. import net.minecraft.client.util.Window;
  10. import net.minecraft.item.ItemStack;
  11. import org.apache.logging.log4j.util.TriConsumer;
  12. import java.awt.*;
  13. import java.util.List;
  14. public class ScreenHelper implements ClientModInitializer {
  15. public static ContainerScreenOverlay.SearchFieldWidget searchField;
  16. public static List<ItemStack> inventoryStacks = Lists.newArrayList();
  17. private static boolean overlayVisible = true;
  18. private static ContainerScreenOverlay overlay;
  19. private static ContainerScreen lastContainerScreen;
  20. public static boolean isOverlayVisible() {
  21. return overlayVisible;
  22. }
  23. public static void toggleOverlayVisible() {
  24. overlayVisible = !overlayVisible;
  25. }
  26. public static ContainerScreenOverlay getLastOverlay(boolean reset, boolean setPage) {
  27. if (overlay == null || reset) {
  28. overlay = new ContainerScreenOverlay();
  29. overlay.init(setPage);
  30. }
  31. return overlay;
  32. }
  33. public static ContainerScreenOverlay getLastOverlay() {
  34. return getLastOverlay(false, false);
  35. }
  36. public static ContainerScreen getLastContainerScreen() {
  37. return lastContainerScreen;
  38. }
  39. public static void setLastContainerScreen(ContainerScreen lastContainerScreen) {
  40. ScreenHelper.lastContainerScreen = lastContainerScreen;
  41. }
  42. public static ContainerScreenHooks getLastContainerScreenHooks() {
  43. return (ContainerScreenHooks) lastContainerScreen;
  44. }
  45. public static void drawHoveringWidget(int x, int y, TriConsumer<Integer, Integer, Float> consumer, int width, int height, float delta) {
  46. Window window = MinecraftClient.getInstance().window;
  47. drawHoveringWidget(new Dimension(window.getScaledWidth(), window.getScaledHeight()), x, y, consumer, width, height, delta);
  48. }
  49. public static void drawHoveringWidget(Dimension dimension, int x, int y, TriConsumer<Integer, Integer, Float> consumer, int width, int height, float delta) {
  50. int int_5 = x + 12;
  51. int int_6 = y - 12;
  52. if (int_5 + width > dimension.width)
  53. int_5 -= 28 + width;
  54. if (int_6 + height + 6 > dimension.height)
  55. int_6 = dimension.height - height - 6;
  56. consumer.accept(int_5, int_6, delta);
  57. }
  58. @Override
  59. public void onInitializeClient() {
  60. ClientTickCallback.EVENT.register(client -> {
  61. if (lastContainerScreen != client.currentScreen && client.currentScreen instanceof ContainerScreen)
  62. lastContainerScreen = (ContainerScreen) client.currentScreen;
  63. });
  64. }
  65. }