diff --git a/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java b/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java index 62a93a8..ece14a2 100644 --- a/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java +++ b/src/main/java/org/saturnclient/impl/ui/SaturnScreenFabric.java @@ -14,6 +14,12 @@ import net.minecraft.client.gui.CubeMapRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.RotatingCubeMapRenderer; import net.minecraft.client.gui.screen.Screen; +//? if >=1.21.6 { +import net.minecraft.client.texture.CubemapTexture; +//?} else { +/*import net.minecraft.client.texture.ResourceTexture; +import net.minecraft.client.texture.TextureManager; +*///?} //? if >=1.21.9 import net.minecraft.client.input.KeyInput; //? if <1.21.6 { @@ -21,8 +27,6 @@ import net.minecraft.client.input.KeyInput; import net.minecraft.client.render.DefaultFramebufferSet; import net.minecraft.client.util.Pool; *///?} -import net.minecraft.client.texture.ResourceTexture; -import net.minecraft.client.texture.TextureManager; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -41,14 +45,25 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider { //private final Pool pool = new Pool(3); public final SaturnScreen screen; + /** Whether the panorama's textures are loaded; it isn't drawn before (e.g. under the splash). */ + private static volatile boolean panoramaReady = false; + public static void preload(MinecraftClient client) { - TextureManager textureManager = client.getTextureManager(); + //? if >=1.21.6 { + // From 1.21.6 CubeMapRenderer draws from one cube map texture made of panorama_0..5.png. + // CubeMapRenderer.registerTextures only stores it for the next resource reload, which has + // already happened by now, so register it through the overload that loads it right away. + client.getTextureManager().registerTexture(PANORAMA, new CubemapTexture(PANORAMA)); + //?} else { + /*TextureManager textureManager = client.getTextureManager(); for (int i = 0; i < 6; i++) { String var10001 = PANORAMA.getPath(); Identifier tex = PANORAMA.withPath(var10001 + "_" + i + ".png"); ResourceTexture resourceTexture = new ResourceTexture(tex); textureManager.registerTexture(tex, resourceTexture); } + *///?} + panoramaReady = true; } public SaturnScreenFabric(SaturnScreen screen) { @@ -74,13 +89,18 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider { mouseX *= 2; mouseY *= 2; - // TODO: the panorama and the background blur (screen.backgroundBlur) are only drawn before - // 1.21.6 so far. See also issue #23. - if (client.world == null && client.getCurrentServerEntry() == null) { - //? if <1.21.6 + // 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); } + // 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( Identifier.ofVanilla("blur"),