Link to our docs in the "Missing ffmpeg" screen (closes #663)

This commit is contained in:
Jonas Herzig
2022-02-28 17:22:15 +01:00
parent fb7900d805
commit fe67d7fa14
4 changed files with 51 additions and 25 deletions

View 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);
}
}

View File

@@ -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.ReadableDimension;
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint; import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.NoticeScreen;
import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashReport;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@@ -181,17 +180,7 @@ public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> implements
videoRenderer.renderVideo(); videoRenderer.renderVideo();
} catch (FFmpegWriter.NoFFmpegException e) { } catch (FFmpegWriter.NoFFmpegException e) {
LOGGER.error("Rendering video:", e); LOGGER.error("Rendering video:", e);
NoticeScreen errorScreen = new NoticeScreen( mc.openScreen(new GuiNoFfmpeg(container::display).toMinecraft());
//#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);
return; return;
} catch (FFmpegWriter.FFmpegStartupException e) { } catch (FFmpegWriter.FFmpegStartupException e) {
int jobsToSkip = jobsDone; int jobsToSkip = jobsDone;

View File

@@ -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.Color;
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; 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.client.resource.language.I18n;
import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashReport;
@@ -240,17 +239,7 @@ public class GuiRenderSettings extends AbstractGuiPopup<GuiRenderSettings> {
videoRenderer.renderVideo(); videoRenderer.renderVideo();
} catch (FFmpegWriter.NoFFmpegException e) { } catch (FFmpegWriter.NoFFmpegException e) {
LOGGER.error("Rendering video:", e); LOGGER.error("Rendering video:", e);
NoticeScreen errorScreen = new NoticeScreen( getMinecraft().openScreen(new GuiNoFfmpeg(getScreen()::display).toMinecraft());
//#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);
} catch (FFmpegWriter.FFmpegStartupException e) { } catch (FFmpegWriter.FFmpegStartupException e) {
GuiExportFailed.tryToRecover(e, newSettings -> { GuiExportFailed.tryToRecover(e, newSettings -> {
// Update settings with fixed ffmpeg arguments // Update settings with fixed ffmpeg arguments