Bring in the UI redesign #35
@@ -1,12 +1,20 @@
|
||||
package org.saturnclient.impl.features.mixins.render;
|
||||
|
||||
//? if >=1.21.6
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
//? if >=1.21.6
|
||||
import net.minecraft.client.option.GameOptions;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
|
||||
//? if >=1.21.6
|
||||
import org.saturnclient.impl.ui.SaturnScreenFabric;
|
||||
import org.saturnclient.mod.mods.FreelookMod;
|
||||
import org.saturnclient.mod.mods.ZoomMod;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
//? if >=1.21.6
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
/**
|
||||
@@ -38,4 +46,18 @@ public class GameRendererMixin {
|
||||
cir.setReturnValue(zoomedFov);
|
||||
}
|
||||
}
|
||||
|
||||
//? if >=1.21.6 {
|
||||
// From 1.21.6 the menu blur's strength is the vanilla setting, read here every frame. While a
|
||||
// Saturn screen is open, it's Saturn's background blur instead, faded in with the screen.
|
||||
@Redirect(method = "render", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/option/GameOptions;getMenuBackgroundBlurrinessValue()I"))
|
||||
private int useSaturnBlur(GameOptions options) {
|
||||
if (MinecraftClient.getInstance().currentScreen instanceof SaturnScreenFabric saturnScreen) {
|
||||
return saturnScreen.screen.getBackgroundBlur();
|
||||
}
|
||||
|
||||
return options.getMenuBackgroundBlurrinessValue();
|
||||
}
|
||||
//?}
|
||||
}
|
||||
|
||||
@@ -89,25 +89,18 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider {
|
||||
mouseX *= 2;
|
||||
mouseY *= 2;
|
||||
|
||||
// From 1.21.6 the panorama renderer has no opacity (and takes no delta), so it's drawn fully
|
||||
// opaque there.
|
||||
if (panoramaReady && client.world == null && client.getCurrentServerEntry() == null) {
|
||||
//? if >=1.21.6 {
|
||||
ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, true);
|
||||
//?} else
|
||||
//ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, screen.backgroundOpacity, delta);
|
||||
// From 1.21.6 the background, blur included, is drawn in renderBackground.
|
||||
//? if <1.21.6 {
|
||||
/*if (isShowingPanorama()) {
|
||||
ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, screen.backgroundOpacity, delta);
|
||||
}
|
||||
|
||||
// TODO: the background blur (screen.backgroundBlur) is only drawn before 1.21.6 so far. See
|
||||
// also issue #23.
|
||||
|
||||
//? if <1.21.6 {
|
||||
/*PostEffectProcessor postEffectProcessor = this.client.getShaderLoader().loadPostEffect(
|
||||
PostEffectProcessor postEffectProcessor = this.client.getShaderLoader().loadPostEffect(
|
||||
Identifier.ofVanilla("blur"),
|
||||
DefaultFramebufferSet.MAIN_ONLY);
|
||||
|
||||
if (postEffectProcessor != null) {
|
||||
float radius = screen.backgroundBlur * Math.min((float) elapsed / 700, 1.0f);
|
||||
float radius = screen.getBackgroundBlur();
|
||||
//? if >=1.21.5
|
||||
postEffectProcessor.render(this.client.getFramebuffer(), this.pool, pass -> pass.setUniform("Radius", radius));
|
||||
//? if <1.21.5
|
||||
@@ -122,6 +115,32 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider {
|
||||
screen.render(renderScope, mouseX, mouseY, delta, elapsed);
|
||||
}
|
||||
|
||||
//? if >=1.21.6 {
|
||||
// Vanilla's background would cover Saturn's panorama, and blurs by the vanilla setting. The
|
||||
// strength of this blur comes from GameRendererMixin, which gives Saturn's setting instead.
|
||||
@Override
|
||||
public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||
// The panorama renderer has no opacity (and takes no delta) from 1.21.6, so it's drawn fully
|
||||
// opaque.
|
||||
if (isShowingPanorama()) {
|
||||
ROTATING_PANORAMA_RENDERER.render(context, this.width, this.height, true);
|
||||
}
|
||||
|
||||
if (screen.getBackgroundBlur() >= 1) {
|
||||
context.applyBlur();
|
||||
}
|
||||
|
||||
if (client.world != null) {
|
||||
renderDarkening(context);
|
||||
}
|
||||
}
|
||||
//?}
|
||||
|
||||
/** Whether Saturn's panorama is behind the screen: outside a world, once it's loaded. */
|
||||
private boolean isShowingPanorama() {
|
||||
return panoramaReady && client.world == null && client.getCurrentServerEntry() == null;
|
||||
}
|
||||
|
||||
// 1.21.9 moved mouse and key events to Click and KeyInput.
|
||||
//? if >=1.21.9 {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user