Hide GUI when exporting screenshot
Workaround not all chunks being loaded in screenshot Fix wrong RenderSettings being exposed in ScreenshotRenderer Update Language submodule
This commit is contained in:
@@ -7,6 +7,7 @@ import com.replaymod.replay.ReplayModReplay;
|
|||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.container.GuiPanel;
|
import de.johni0702.minecraft.gui.container.GuiPanel;
|
||||||
import de.johni0702.minecraft.gui.element.GuiLabel;
|
import de.johni0702.minecraft.gui.element.GuiLabel;
|
||||||
|
import de.johni0702.minecraft.gui.function.Loadable;
|
||||||
import de.johni0702.minecraft.gui.layout.GridLayout;
|
import de.johni0702.minecraft.gui.layout.GridLayout;
|
||||||
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||||
import net.minecraft.crash.CrashReport;
|
import net.minecraft.crash.CrashReport;
|
||||||
@@ -20,7 +21,7 @@ import java.util.ArrayList;
|
|||||||
import static com.replaymod.core.utils.Utils.error;
|
import static com.replaymod.core.utils.Utils.error;
|
||||||
import static com.replaymod.render.ReplayModRender.LOGGER;
|
import static com.replaymod.render.ReplayModRender.LOGGER;
|
||||||
|
|
||||||
public class GuiCreateScreenshot extends GuiRenderSettings {
|
public class GuiCreateScreenshot extends GuiRenderSettings implements Loadable {
|
||||||
|
|
||||||
private final ReplayMod mod;
|
private final ReplayMod mod;
|
||||||
|
|
||||||
@@ -73,6 +74,12 @@ public class GuiCreateScreenshot extends GuiRenderSettings {
|
|||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load() {
|
||||||
|
// pause replay when opening this gui
|
||||||
|
ReplayModReplay.instance.getReplayHandler().getReplaySender().setReplaySpeed(0);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected File generateOutputFile(RenderSettings.EncodingPreset encodingPreset) {
|
protected File generateOutputFile(RenderSettings.EncodingPreset encodingPreset) {
|
||||||
File screenshotFolder = new File(getMinecraft().mcDataDir, "screenshots");
|
File screenshotFolder = new File(getMinecraft().mcDataDir, "screenshots");
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ public class ScreenshotRenderer implements RenderInfo {
|
|||||||
int displayWidthBefore = mc.displayWidth;
|
int displayWidthBefore = mc.displayWidth;
|
||||||
int displayHeightBefore = mc.displayHeight;
|
int displayHeightBefore = mc.displayHeight;
|
||||||
|
|
||||||
|
boolean hideGUIBefore = mc.gameSettings.hideGUI;
|
||||||
|
|
||||||
ChunkLoadingRenderGlobal clrg = new ChunkLoadingRenderGlobal(mc.renderGlobal);
|
ChunkLoadingRenderGlobal clrg = new ChunkLoadingRenderGlobal(mc.renderGlobal);
|
||||||
|
|
||||||
Pipelines.newPipeline(settings.getRenderMethod(),this,
|
Pipelines.newPipeline(settings.getRenderMethod(),this,
|
||||||
@@ -29,6 +31,7 @@ public class ScreenshotRenderer implements RenderInfo {
|
|||||||
|
|
||||||
clrg.uninstall();
|
clrg.uninstall();
|
||||||
|
|
||||||
|
mc.gameSettings.hideGUI = hideGUIBefore;
|
||||||
mc.resize(displayWidthBefore, displayHeightBefore);
|
mc.resize(displayWidthBefore, displayHeightBefore);
|
||||||
return true;
|
return true;
|
||||||
} catch (OutOfMemoryError e) {
|
} catch (OutOfMemoryError e) {
|
||||||
@@ -46,7 +49,8 @@ public class ScreenshotRenderer implements RenderInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTotalFrames() {
|
public int getTotalFrames() {
|
||||||
return 1;
|
// render 2 frames, because only the second contains all frames fully loaded
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -56,10 +60,6 @@ public class ScreenshotRenderer implements RenderInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RenderSettings getRenderSettings() {
|
public RenderSettings getRenderSettings() {
|
||||||
return new RenderSettings(
|
return settings;
|
||||||
null, null, settings.getVideoWidth(), settings.getVideoHeight(), 0, 0, null,
|
|
||||||
true, true, true, true, null,
|
|
||||||
false, RenderSettings.AntiAliasing.NONE, null, null, false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,9 @@ public class ScreenshotWriter implements FrameConsumer<RGBFrame> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void consume(RGBFrame frame) {
|
public void consume(RGBFrame frame) {
|
||||||
|
// skip the first frame, in which not all chunks are properly loaded
|
||||||
|
if (frame.getFrameId() == 0) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final ReadableDimension frameSize = frame.getSize();
|
final ReadableDimension frameSize = frame.getSize();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user