diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/client/ScreenHelper.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/client/ScreenHelper.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java new file mode 100644 index 000000000..057f3a4e4 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -0,0 +1,76 @@ +package me.shedaniel.rei.client; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.gui.ContainerScreenOverlay; +import me.shedaniel.rei.gui.widget.TextFieldWidget; +import me.shedaniel.rei.listeners.ContainerScreenHooks; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; +import net.minecraft.client.gui.ContainerScreen; +import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.RecipeBookButtonWidget; +import net.minecraft.item.ItemStack; + +import java.util.List; + +public class ScreenHelper implements ClientModInitializer { + + public static TextFieldWidget searchField; + public static List<ItemStack> inventoryStacks = Lists.newArrayList(); + private static boolean overlayVisible = true; + private static ContainerScreenOverlay overlay; + private static ContainerScreen lastContainerScreen; + + public static boolean isOverlayVisible() { + return overlayVisible; + } + + public static void toggleOverlayVisible() { + overlayVisible = !overlayVisible; + } + + public static ContainerScreenOverlay getLastOverlay(boolean reset) { + if (overlay == null || reset) { + overlay = new ContainerScreenOverlay(); + overlay.onInitialized(); + } + return overlay; + } + + public static ContainerScreenOverlay getLastOverlay() { + return getLastOverlay(false); + } + + public static void disableRecipeBook(ContainerScreen lastContainerScreen, List<InputListener> listeners, List<ButtonWidget> buttonWidgets) { + RoughlyEnoughItemsCore.LOGGER.info("%d %d", listeners.size(), buttonWidgets.size()); + for(InputListener listener : listeners) + if (listener instanceof RecipeBookButtonWidget) + listeners.remove(listener); + for(ButtonWidget buttonWidget : buttonWidgets) + if (buttonWidget instanceof RecipeBookButtonWidget) + buttonWidgets.remove(buttonWidget); + } + + public static ContainerScreen getLastContainerScreen() { + return lastContainerScreen; + } + + public static void setLastContainerScreen(ContainerScreen lastContainerScreen) { + ScreenHelper.lastContainerScreen = lastContainerScreen; + } + + public static ContainerScreenHooks getLastContainerScreenHooks() { + return (ContainerScreenHooks) lastContainerScreen; + } + + @Override + public void onInitializeClient() { + ClientTickCallback.EVENT.register(client -> { + if (lastContainerScreen != client.currentScreen && client.currentScreen instanceof ContainerScreen) + lastContainerScreen = (ContainerScreen) client.currentScreen; + }); + } + +} |
