Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.polyfrost.polyplus.mixin.client;

//? if = 1.8.9 {
/*import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.minecraft.client.Minecraft;
import net.minecraft.client.render.ProgressRenderer;
import net.minecraft.client.render.Window;
import net.minecraft.client.render.pipeline.RenderTarget;
import org.polyfrost.polyplus.client.PolyPlusMainMenuConfig;
import org.polyfrost.polyplus.client.gui.MenuPanorama;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(ProgressRenderer.class)
public class MixinProgressRenderer {
@Shadow
private Minecraft minecraft;

@ModifyExpressionValue(method = "progressStagePercentage", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/ProgressRenderer;target:Lnet/minecraft/client/render/pipeline/RenderTarget;"))
private RenderTarget polyplus$useMainTarget(RenderTarget original) {
return PolyPlusMainMenuConfig.getPanoramaInAllMenus() ? this.minecraft.getRenderTarget() : original;
}

@Inject(method = "progressStagePercentage", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/vertex/Tesselator;end()V", ordinal = 0, shift = At.Shift.AFTER))
private void polyplus$drawBackdrop(int percentage, CallbackInfo ci) {
Window window = new Window(this.minecraft);
MenuPanorama.drawLoadingBackdrop(window.getWidth(), window.getHeight());
}
}
*///?}
21 changes: 15 additions & 6 deletions src/main/kotlin/org/polyfrost/polyplus/client/gui/MenuPanorama.kt
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ object MenuPanorama {
fun drawBackdrop(screen: Screen, onPanoramaPass: Boolean): Boolean {
if (!backdropWanted(screen, onPanoramaPass)) return false
if (drawnThisPass) return true
if (!panoramaBackdrop() || !drawLegacyPanorama(screen)) {
if (!panoramaBackdrop() || !drawLegacyPanorama(screen.width, screen.height)) {
GuiElement.fill(0, 0, screen.width, screen.height, BASE_COLOR)
filledThisFrame = true
}
Expand All @@ -143,6 +143,15 @@ object MenuPanorama {
return drew
}

@JvmStatic
fun drawLoadingBackdrop(width: Int, height: Int) {
if (!PolyPlusMainMenuConfig.panoramaInAllMenus) return
if (!panoramaBackdrop() || !drawLegacyPanorama(width, height)) {
GuiElement.fill(0, 0, width, height, BASE_COLOR)
}
MenuBackgroundPass.renderInline(panoramaBackdrop(), this)
}

private const val WASH_TOP = 0x80FFFFFF.toInt()
private const val WASH_BOTTOM = 0x00FFFFFF
private const val SHADE_TOP = 0x00000000
Expand All @@ -162,24 +171,24 @@ object MenuPanorama {
return title
}

private fun drawLegacyPanorama(screen: Screen): Boolean {
private fun drawLegacyPanorama(width: Int, height: Int): Boolean {
val title = legacyPanorama() ?: return false
val now = System.currentTimeMillis()
if (now - lastPanoramaTick > 1000L) lastPanoramaTick = now
while (now - lastPanoramaTick >= 50L) {
title.tick()
lastPanoramaTick += 50L
}
title.width = screen.width
title.height = screen.height
title.width = width
title.height = height
panoramaGlState.capture()
try {
GlStateManager.disableAlphaTest()
(title as TitleScreenInvoker).`polyplus$drawBackground`(0, 0, (now - lastPanoramaTick) / 50f)
GlStateManager.enableAlphaTest()
val gradients = title as GuiElementInvoker
gradients.`polyplus$fillGradient`(0, 0, screen.width, screen.height, WASH_TOP, WASH_BOTTOM)
gradients.`polyplus$fillGradient`(0, 0, screen.width, screen.height, SHADE_TOP, SHADE_BOTTOM)
gradients.`polyplus$fillGradient`(0, 0, width, height, WASH_TOP, WASH_BOTTOM)
gradients.`polyplus$fillGradient`(0, 0, width, height, SHADE_TOP, SHADE_BOTTOM)
} finally {
panoramaGlState.restore()
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/mixins.polyplus.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
//? if <26.3
//"client.MixinPauseScreen",
"client.MixinPlayerTabOverlay",
//? if = 1.8.9
//"client.MixinProgressRenderer",
"client.MixinRenderTarget",
"client.MixinScreen",
"client.MixinServerSelectionList",
Expand Down
Loading