[Fix] Crash due to client code in Command execution

This commit is contained in:
Frank 2023-06-08 01:46:38 +02:00
parent e06bee11e9
commit d48f6db59f
2 changed files with 13 additions and 8 deletions

View file

@ -10,6 +10,8 @@ import org.betterx.bclib.BCLib;
import org.betterx.bclib.config.Configs;
import org.betterx.bclib.networking.VersionChecker;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.CommonComponents;
@ -32,6 +34,15 @@ public class UpdatesScreen extends BCLibLayoutScreen {
super(parent, Component.translatable("bclib.updates.title"), 10, 10, 10);
}
public static void showUpdateUI() {
if (!RenderSystem.isOnRenderThread()) {
RenderSystem.recordRenderCall(() -> Minecraft.getInstance()
.setScreen(new UpdatesScreen(Minecraft.getInstance().screen)));
} else {
Minecraft.getInstance().setScreen(new UpdatesScreen(Minecraft.getInstance().screen));
}
}
public ResourceLocation getUpdaterIcon(String modID) {
if (modID.equals(BCLib.MOD_ID)) {
return UPDATE_LOGO_LOCATION;

View file

@ -5,12 +5,10 @@ import org.betterx.bclib.client.gui.screens.UpdatesScreen;
import org.betterx.bclib.config.Configs;
import org.betterx.bclib.networking.VersionChecker;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.ClickEvent;
@ -126,13 +124,9 @@ public class PrintInfo {
ctx.getSource().sendSuccess(() -> footer, false);
if (withUI && BCLib.isClient() && Configs.CLIENT_CONFIG.showUpdateInfo() && !VersionChecker.isEmpty()) {
if (!RenderSystem.isOnRenderThread()) {
RenderSystem.recordRenderCall(() -> Minecraft.getInstance()
.setScreen(new UpdatesScreen(Minecraft.getInstance().screen)));
} else {
Minecraft.getInstance().setScreen(new UpdatesScreen(Minecraft.getInstance().screen));
}
UpdatesScreen.showUpdateUI();
}
return Command.SINGLE_SUCCESS;
}
}