From 580fb0fd4e43ca503090977cdfddd77f3f2b3491 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Tue, 17 Sep 2024 17:53:35 +0200 Subject: [PATCH] Fix lag --- .../client/screen/BedrockDeathScreen.java | 15 +++++++++------ .../mixin/MixinGameRenderer.java | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java b/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java index fc42751..5b150a7 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java @@ -10,6 +10,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; +import net.minecraft.util.Util; import org.jetbrains.annotations.Nullable; import java.awt.*; @@ -17,6 +18,7 @@ import java.awt.*; public class BedrockDeathScreen extends DeathScreen { private int ticksSinceDeath = 0; + private long screenTime = 0; private final Text message; private Text scoreText = Text.empty(); private static final Text menuMessage = Text.translatable("deathScreen.titleScreen"); @@ -31,6 +33,7 @@ public class BedrockDeathScreen extends DeathScreen { super(message, isHardcore); this.message = message; this.hardcore = isHardcore; + screenTime = Util.getMeasuringTimeNano(); } private boolean hoversRespawn(int mouseX, int mouseY){ @@ -38,7 +41,7 @@ public class BedrockDeathScreen extends DeathScreen { int startY = height - height / 3 - 9; int endX = width/2 + 75; int endY = height - height / 3 + 13; - return getTotalDelta(0) > 1050 && + return getTotalDelta() > 1050 && mouseX > startX && mouseX < endX && mouseY > startY && @@ -50,7 +53,7 @@ public class BedrockDeathScreen extends DeathScreen { final int startY = height - height / 3 - 9 + 30; final int endX = width/2 + 75; final int endY = height - height / 3 + 13 + 30; - return getTotalDelta(0) > 1050 && + return getTotalDelta() > 1050 && mouseX > startX && mouseX < endX && mouseY > startY && @@ -149,13 +152,13 @@ public class BedrockDeathScreen extends DeathScreen { context.drawText(textRenderer, menuMessage, (width/2) - (textRenderer.getWidth(menuMessage)/2), height - height/3 - 1, textColor, false); } - public float getTotalDelta(float delta){ - return ticksSinceDeath * 50f + delta; + public float getTotalDelta(){ + return (Util.getMeasuringTimeNano() - screenTime) / 1000000f; } @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - final float totalDelta = getTotalDelta(delta); + final float totalDelta = getTotalDelta(); context.fill(0, 0, width, height, new Color(0, 0, 0, (int) Math.min(80, totalDelta/4f)).getRGB()); if (totalDelta > 750.0f){ final int backOpacity = (int) Math.min(255, (totalDelta - 750f) / 10f); @@ -263,7 +266,7 @@ public class BedrockDeathScreen extends DeathScreen { public float calcCameraOffset(float delta){ final double e = Math.E; - final double del = getTotalDelta(delta) / 600d; + final double del = getTotalDelta() / 600d; final double ep = Math.pow(e, del); return (float) (ep / (1d + ep) * 7d + 2d); } diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java index 6198f0c..61997a0 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java @@ -25,7 +25,7 @@ public abstract class MixinGameRenderer { @Inject(at = @At("TAIL"), method = "getFov", cancellable = true) public void onFovGet(Camera camera, float tickDelta, boolean changingFov, CallbackInfoReturnable cir){ if (client.currentScreen instanceof BedrockDeathScreen bedrockDeathScreen){ - cir.setReturnValue(Math.min(60 + bedrockDeathScreen.getTotalDelta(client.getRenderTickCounter().getTickDelta(true)) / (405d), 80)); + cir.setReturnValue(Math.min(60 + bedrockDeathScreen.getTotalDelta() / (405d), 80)); } }