From 62045c9cc0416557e6b57b6f4101b98a0da02dde Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 21 Oct 2021 23:36:28 +0800 Subject: Fix most of the issues in #643 --- .../rei/impl/client/fabric/ErrorDisplayerImpl.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'fabric/src/main/java') diff --git a/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java b/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java index ae6a0f9f3..eeaf86492 100644 --- a/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/impl/client/fabric/ErrorDisplayerImpl.java @@ -23,16 +23,29 @@ package me.shedaniel.rei.impl.client.fabric; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; +import java.util.function.UnaryOperator; public class ErrorDisplayerImpl { public static List> consumerList = new ArrayList<>(); - public static void registerGuiInit(Consumer consumer) { - consumerList.add(consumer); + public static void registerGuiInit(UnaryOperator consumer) { + consumerList.add(screen -> { + Screen screen1 = consumer.apply(screen); + if (screen1 != null) { + Minecraft minecraft = Minecraft.getInstance(); + try { + if (minecraft.screen != null) minecraft.screen.removed(); + } catch (Throwable ignored) { + } + minecraft.screen = null; + minecraft.setScreen(screen1); + } + }); } } -- cgit