Unknown 6 年之前
父节点
当前提交
96f2eca247

+ 1 - 1
CHANGELOG.md

@@ -1,4 +1,4 @@
-## v2.5.2.90
+## v2.5.2.80
 - Updated to 19w14b
 ## v2.6.1.79
 - 75% less mixins

+ 2 - 2
gradle.properties

@@ -1,8 +1,8 @@
-mod_version=2.6.2.80
+mod_version=2.6.2.81
 minecraft_version=19w14b
 yarn_version=19w14b.1
 fabric_version=0.2.6.119
 fabricloader_version=0.3.7.109
 pluginloader_version=1.14-1.0.6-8
 jankson_version=1.1.0
-cloth_version=0.2.0.20
+cloth_version=0.2.1.21

+ 1 - 1
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;

+ 2 - 1
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();
         }
     }

+ 12 - 3
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) {