Link to our docs in the "Missing ffmpeg" screen (closes #663)
This commit is contained in:
48
src/main/java/com/replaymod/render/gui/GuiNoFfmpeg.java
Normal file
48
src/main/java/com/replaymod/render/gui/GuiNoFfmpeg.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.replaymod.render.gui;
|
||||
|
||||
import de.johni0702.minecraft.gui.container.GuiPanel;
|
||||
import de.johni0702.minecraft.gui.container.GuiScreen;
|
||||
import de.johni0702.minecraft.gui.element.GuiButton;
|
||||
import de.johni0702.minecraft.gui.element.GuiLabel;
|
||||
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
||||
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.openURL;
|
||||
import static de.johni0702.minecraft.gui.versions.MCVer.setClipboardString;
|
||||
|
||||
public class GuiNoFfmpeg extends GuiScreen {
|
||||
|
||||
private static final String LINK = "https://www.replaymod.com/docs/#installing-ffmpeg";
|
||||
|
||||
private final GuiLabel message = new GuiLabel()
|
||||
.setI18nText("replaymod.gui.rendering.error.message");
|
||||
private final GuiLabel link = new GuiLabel()
|
||||
.setText(LINK);
|
||||
private final GuiButton openLinkButton = new GuiButton()
|
||||
.setI18nLabel("chat.link.open")
|
||||
.setSize(100, 20)
|
||||
.onClick(() -> openURL(URI.create(LINK)));
|
||||
private final GuiButton copyToClipboardButton = new GuiButton()
|
||||
.setI18nLabel("chat.copy")
|
||||
.setSize(100, 20)
|
||||
.onClick(() -> setClipboardString(LINK));
|
||||
private final GuiButton backButton = new GuiButton()
|
||||
.setI18nLabel("gui.back")
|
||||
.setSize(100, 20);
|
||||
private final GuiPanel buttons = new GuiPanel()
|
||||
.setLayout(new HorizontalLayout(HorizontalLayout.Alignment.CENTER).setSpacing(4))
|
||||
.addElements(null, openLinkButton, copyToClipboardButton, backButton);
|
||||
|
||||
{
|
||||
setBackground(Background.DIRT);
|
||||
setTitle(new GuiLabel().setI18nText("replaymod.gui.rendering.error.title"));
|
||||
setLayout(new VerticalLayout(VerticalLayout.Alignment.CENTER).setSpacing(30));
|
||||
addElements(new VerticalLayout.Data(0.5), message, link, buttons);
|
||||
}
|
||||
|
||||
public GuiNoFfmpeg(Runnable goBack) {
|
||||
backButton.onClick(goBack);
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,6 @@ import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.NoticeScreen;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
@@ -181,17 +180,7 @@ public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> implements
|
||||
videoRenderer.renderVideo();
|
||||
} catch (FFmpegWriter.NoFFmpegException e) {
|
||||
LOGGER.error("Rendering video:", e);
|
||||
NoticeScreen errorScreen = new NoticeScreen(
|
||||
//#if MC>=11400
|
||||
container::display,
|
||||
new TranslatableText("replaymod.gui.rendering.error.title"),
|
||||
new TranslatableText("replaymod.gui.rendering.error.message")
|
||||
//#else
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.title"),
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.message")
|
||||
//#endif
|
||||
);
|
||||
mc.openScreen(errorScreen);
|
||||
mc.openScreen(new GuiNoFfmpeg(container::display).toMinecraft());
|
||||
return;
|
||||
} catch (FFmpegWriter.FFmpegStartupException e) {
|
||||
int jobsToSkip = jobsDone;
|
||||
|
||||
@@ -30,7 +30,6 @@ import de.johni0702.minecraft.gui.utils.Utils;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Color;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.client.gui.screen.NoticeScreen;
|
||||
import net.minecraft.client.resource.language.I18n;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
|
||||
@@ -240,17 +239,7 @@ public class GuiRenderSettings extends AbstractGuiPopup<GuiRenderSettings> {
|
||||
videoRenderer.renderVideo();
|
||||
} catch (FFmpegWriter.NoFFmpegException e) {
|
||||
LOGGER.error("Rendering video:", e);
|
||||
NoticeScreen errorScreen = new NoticeScreen(
|
||||
//#if MC>=11400
|
||||
getScreen()::display,
|
||||
new TranslatableText("replaymod.gui.rendering.error.title"),
|
||||
new TranslatableText("replaymod.gui.rendering.error.message")
|
||||
//#else
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.title"),
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.message")
|
||||
//#endif
|
||||
);
|
||||
getMinecraft().openScreen(errorScreen);
|
||||
getMinecraft().openScreen(new GuiNoFfmpeg(getScreen()::display).toMinecraft());
|
||||
} catch (FFmpegWriter.FFmpegStartupException e) {
|
||||
GuiExportFailed.tryToRecover(e, newSettings -> {
|
||||
// Update settings with fixed ffmpeg arguments
|
||||
|
||||
Reference in New Issue
Block a user