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 5b150a7..63c5b56 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/client/screen/BedrockDeathScreen.java @@ -17,8 +17,7 @@ import java.awt.*; public class BedrockDeathScreen extends DeathScreen { - private int ticksSinceDeath = 0; - private long screenTime = 0; + private final long screenCreationTime; private final Text message; private Text scoreText = Text.empty(); private static final Text menuMessage = Text.translatable("deathScreen.titleScreen"); @@ -33,7 +32,7 @@ public class BedrockDeathScreen extends DeathScreen { super(message, isHardcore); this.message = message; this.hardcore = isHardcore; - screenTime = Util.getMeasuringTimeNano(); + screenCreationTime = Util.getMeasuringTimeNano(); } private boolean hoversRespawn(int mouseX, int mouseY){ @@ -41,7 +40,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() > 1050 && + return getTotalScreenTime() > 1050 && mouseX > startX && mouseX < endX && mouseY > startY && @@ -53,7 +52,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() > 1050 && + return getTotalScreenTime() > 1050 && mouseX > startX && mouseX < endX && mouseY > startY && @@ -152,13 +151,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(){ - return (Util.getMeasuringTimeNano() - screenTime) / 1000000f; + public float getTotalScreenTime(){ + return (Util.getMeasuringTimeNano() - screenCreationTime) / 1000000f; } @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - final float totalDelta = getTotalDelta(); + final float totalDelta = getTotalScreenTime(); 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); @@ -202,14 +201,7 @@ public class BedrockDeathScreen extends DeathScreen { } } - @Override - public void tick() { - super.tick(); - ticksSinceDeath++; - } - private void respawn(){ - ticksSinceDeath = 0; if (this.client != null && this.client.player != null) { this.client.player.requestRespawn(); } @@ -264,9 +256,9 @@ public class BedrockDeathScreen extends DeathScreen { return deg < 180 ? deg : deg-360; } - public float calcCameraOffset(float delta){ + public float calcCameraOffset(){ final double e = Math.E; - final double del = getTotalDelta() / 600d; + final double del = getTotalScreenTime() / 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/MixinCamera.java b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinCamera.java index 5b16055..8e94791 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinCamera.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinCamera.java @@ -36,8 +36,7 @@ public class MixinCamera { public float onUpdateThirdPerson(float constant){ final MinecraftClient client = MinecraftClient.getInstance(); if (client.currentScreen instanceof BedrockDeathScreen bedrockDeathScreen){ - final float delta = client.getRenderTickCounter().getTickDelta(true); - return bedrockDeathScreen.calcCameraOffset(delta); + return bedrockDeathScreen.calcCameraOffset(); } else { return 4.0f; } diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinClientPlayNetworkHandler.java b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinClientPlayNetworkHandler.java index 87de40e..0a65466 100644 --- a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinClientPlayNetworkHandler.java +++ b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinClientPlayNetworkHandler.java @@ -1,23 +1,15 @@ package de.shiewk.bedrockdeathscreen.mixin; -import com.mojang.brigadier.ParseResults; import de.shiewk.bedrockdeathscreen.client.screen.BedrockDeathScreen; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.DeathScreen; -import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.world.ClientWorld; -import net.minecraft.command.CommandSource; -import net.minecraft.entity.Entity; import net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket; -import net.minecraft.text.Text; 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.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(ClientPlayNetworkHandler.class) public abstract class MixinClientPlayNetworkHandler { diff --git a/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java b/src/main/java/de/shiewk/bedrockdeathscreen/mixin/MixinGameRenderer.java index d04e5da..80c9173 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() / (405f), 80)); + cir.setReturnValue(Math.min(60 + bedrockDeathScreen.getTotalScreenTime() / (405f), 80)); } }