diff options
Diffstat (limited to 'src/main/java')
3 files changed, 15 insertions, 5 deletions
diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java index 1d408d30c..db325167a 100644 --- a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -20,7 +20,7 @@ public class ScreenHelper implements ClientModInitializer { public static List<ItemStack> inventoryStacks = Lists.newArrayList(); private static boolean overlayVisible = true; private static ContainerScreenOverlay overlay; - private static ContainerScreen lastContainerScreen; + private static ContainerScreen lastContainerScreen = null; public static boolean isOverlayVisible() { return overlayVisible; diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 69ea67a1d..834fac1a1 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -429,7 +429,8 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } return new Rectangle(4, 0, getLeft() - 6, window.getScaledHeight()); } catch (Exception e) { - RoughlyEnoughItemsCore.LOGGER.error("[REI] Error calculating boundary, report the issue!", e); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Error calculating boundary, report the issue!"); + e.printStackTrace(); return new Rectangle(); } } diff --git a/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java b/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java index 0192a4783..510a38535 100644 --- a/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java +++ b/src/main/java/me/shedaniel/rei/utils/ClothRegistry.java @@ -15,6 +15,7 @@ import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.config.ItemListOrderingEntry; import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.Element; @@ -45,7 +46,6 @@ public class ClothRegistry { return; if (screen instanceof PlayerInventoryScreen && minecraftClient.interactionManager.hasCreativeInventory()) return; - ScreenHelper.setLastContainerScreen((ContainerScreen) screen); boolean alreadyAdded = false; for(Element element : Lists.newArrayList(screenHooks.cloth_getInputListeners())) if (ContainerScreenOverlay.class.isAssignableFrom(element.getClass())) @@ -101,6 +101,8 @@ public class ClothRegistry { return ActionResult.PASS; }); ClothClientHooks.SCREEN_LATE_RENDER.register((minecraftClient, screen, i, i1, v) -> { + if (!ScreenHelper.isOverlayVisible()) + return; if (screen instanceof CreativePlayerInventoryScreen) if (((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return; @@ -111,10 +113,17 @@ public class ClothRegistry { if (screen instanceof CreativePlayerInventoryScreen) if (((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) return ActionResult.PASS; - if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2)) - return ActionResult.SUCCESS; + if (screen instanceof ContainerScreen) + if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2)) + return ActionResult.SUCCESS; return ActionResult.PASS; }); + ClientTickCallback.EVENT.register(client -> { + if (client.currentScreen instanceof ContainerScreen) { + if (ScreenHelper.getLastContainerScreen() == null || !ScreenHelper.getLastContainerScreen().equals(client.currentScreen)) + ScreenHelper.setLastContainerScreen((ContainerScreen) client.currentScreen); + } + }); } public static void openConfigScreen(Screen parent) { |
