diff --git a/src/main/java/com/replaymod/render/RenderSettings.java b/src/main/java/com/replaymod/render/RenderSettings.java index 2a972888..529732d3 100644 --- a/src/main/java/com/replaymod/render/RenderSettings.java +++ b/src/main/java/com/replaymod/render/RenderSettings.java @@ -47,6 +47,21 @@ public class RenderSettings { public boolean hasFixedAspectRatio() { return this == EQUIRECTANGULAR || this == ODS || this == CUBIC; } + + @SuppressWarnings("RedundantIfStatement") + public boolean isSupported() { + //#if MC<10800 || MC>=11500 + if (this == BLEND) { + return false; + } + //#endif + + return true; + } + + public static RenderMethod[] getSupported() { + return Arrays.stream(values()).filter(RenderMethod::isSupported).toArray(RenderMethod[]::new); + } } public enum EncodingPreset { @@ -90,6 +105,18 @@ public class RenderSettings { public String toString() { return I18n.translate("replaymod.gui.rendersettings.presets." + name().replace('_', '.').toLowerCase()); } + + public boolean isSupported() { + if (this == BLEND) { + return RenderMethod.BLEND.isSupported(); + } else { + return true; + } + } + + public static EncodingPreset[] getSupported() { + return Arrays.stream(values()).filter(EncodingPreset::isSupported).toArray(EncodingPreset[]::new); + } } @AllArgsConstructor diff --git a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java index 46ff2570..75d60f95 100644 --- a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java +++ b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java @@ -75,7 +75,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { } updateInputs(); } - }).setMinSize(new Dimension(0, 20)).setValues(RenderSettings.RenderMethod.values()); + }).setMinSize(new Dimension(0, 20)).setValues(RenderSettings.RenderMethod.getSupported()); { for (Map.Entry entry : @@ -102,7 +102,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { } updateInputs(); } - }).setMinSize(new Dimension(0, 20)).setValues(RenderSettings.EncodingPreset.values()); + }).setMinSize(new Dimension(0, 20)).setValues(RenderSettings.EncodingPreset.getSupported()); public final GuiNumberField videoWidth = new GuiNumberField().setSize(50, 20).setMinValue(1).setValidateOnFocusChange(true); public final GuiNumberField videoHeight = new GuiNumberField().setSize(50, 20).setMinValue(1).setValidateOnFocusChange(true); @@ -450,12 +450,6 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { } } - //#if MC<10800 || MC>=11500 - if (method == RenderSettings.RenderMethod.BLEND) { - return "replaymod.gui.rendersettings.no_blend_on_1_7_10"; - } - //#endif - return null; } @@ -489,8 +483,13 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { } public void load(RenderSettings settings) { - renderMethodDropdown.setSelected(settings.getRenderMethod()); + if (settings.getRenderMethod().isSupported()) { + renderMethodDropdown.setSelected(settings.getRenderMethod()); + } RenderSettings.EncodingPreset encodingPreset = settings.getEncodingPreset(); + if (!encodingPreset.isSupported()) { + encodingPreset = null; + } if (encodingPreset == null) { encodingPreset = getDefaultRenderSettings().getEncodingPreset(); }