mirror of
https://github.com/Shiewk/BedrockDeathScreen.git
synced 2026-04-27 22:44:17 +02:00
Update to 1.21
This commit is contained in:
+4
-4
@@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Fabric Properties
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=1.20.6
|
||||
yarn_mappings=1.20.6+build.3
|
||||
minecraft_version=1.21
|
||||
yarn_mappings=1.21+build.9
|
||||
loader_version=0.15.11
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0
|
||||
mod_version = 1.1
|
||||
maven_group = de.shiewk
|
||||
archives_base_name = BedrockDeathScreen
|
||||
|
||||
# Dependencies
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.100.0+1.20.6
|
||||
fabric_version=0.100.6+1.21
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
package de.shiewk.bedrockdeathscreen.client.screen;
|
||||
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.screen.ConfirmScreen;
|
||||
import net.minecraft.client.gui.screen.DeathScreen;
|
||||
import net.minecraft.client.gui.screen.MessageScreen;
|
||||
import net.minecraft.client.gui.screen.TitleScreen;
|
||||
import net.minecraft.screen.ScreenTexts;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvent;
|
||||
import net.minecraft.text.MutableText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Formatting;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -19,8 +16,7 @@ import java.awt.*;
|
||||
public class BedrockDeathScreen extends DeathScreen {
|
||||
|
||||
private int ticksSinceDeath = 0;
|
||||
private Text scoreText = Text.empty();
|
||||
private Text message;
|
||||
private final Text message;
|
||||
private static final Text menuMessage = Text.translatable("deathScreen.titleScreen");
|
||||
private static final MutableText confirmQuitText = Text.translatable("deathScreen.quit.confirm");
|
||||
private Text respawnMessage;
|
||||
@@ -59,7 +55,7 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
mouseY < endY;
|
||||
}
|
||||
|
||||
private void renderRespawnButton(DrawContext context, int mouxeX, int mouseY, float delta, float opacity){
|
||||
private void renderRespawnButton(DrawContext context, int mouxeX, int mouseY, float opacity){
|
||||
if ((int) opacity == 0){
|
||||
return;
|
||||
}
|
||||
@@ -80,10 +76,10 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
context.fill(startX+1, endY, endX-1, endY+3, secondary);
|
||||
context.drawBorder(startX, startY, (endX) - (startX), (endY+4) - (startY), black);
|
||||
|
||||
context.drawCenteredTextWithShadow(textRenderer, respawnMessage, (int) (width/2), (int) (height - height/3), textColor);
|
||||
context.drawCenteredTextWithShadow(textRenderer, respawnMessage, width/2, height - height/3 - 1, textColor);
|
||||
}
|
||||
|
||||
private void renderMenuButton(DrawContext context, int mouxeX, int mouseY, float delta, float opacity){
|
||||
private void renderMenuButton(DrawContext context, int mouxeX, int mouseY, float opacity){
|
||||
if ((int) opacity == 0){
|
||||
return;
|
||||
}
|
||||
@@ -105,18 +101,15 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
context.fill(startX+1, endY, endX-1, endY+3, secondary);
|
||||
context.drawBorder(startX, startY, (endX) - (startX), (endY+4) - (startY), black);
|
||||
|
||||
context.drawText(textRenderer, menuMessage, (int) (width/2) - (textRenderer.getWidth(menuMessage)/2), (int) (height - height/3 - 1 + 31), textColor, false);
|
||||
context.drawText(textRenderer, menuMessage, (width/2) - (textRenderer.getWidth(menuMessage)/2), height - height/3 - 1 + 31, textColor, false);
|
||||
}
|
||||
|
||||
private void renderConfirmRespawnButton(DrawContext context, int mouxeX, int mouseY, float delta, float opacity){
|
||||
if ((int) opacity == 0){
|
||||
return;
|
||||
}
|
||||
final int primary = new Color(60, 133, 39, (int) opacity).getRGB();
|
||||
final int secondary = new Color(29, 77, 19, (int) opacity).getRGB();
|
||||
final int gaccent = new Color(79, 145, 60, (int) opacity).getRGB();
|
||||
final int black = new Color(0, 0, 0, (int) opacity).getRGB();
|
||||
final int textColor = new Color(255, 255, 255, (int) opacity).getRGB();
|
||||
private void renderConfirmRespawnButton(DrawContext context, int mouxeX, int mouseY){
|
||||
final int primary = new Color(60, 133, 39, (int) (float) 255.0).getRGB();
|
||||
final int secondary = new Color(29, 77, 19, (int) (float) 255.0).getRGB();
|
||||
final int gaccent = new Color(79, 145, 60, (int) (float) 255.0).getRGB();
|
||||
final int black = new Color(0, 0, 0, (int) (float) 255.0).getRGB();
|
||||
final int textColor = new Color(255, 255, 255, (int) (float) 255.0).getRGB();
|
||||
final boolean mouseHover = hoversMenuButton(mouxeX, mouseY);
|
||||
|
||||
final int startX = width/2 - 75;
|
||||
@@ -129,10 +122,10 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
context.fill(startX+1, endY, endX-1, endY+3, secondary);
|
||||
context.drawBorder(startX, startY, (endX) - (startX), (endY+4) - (startY), black);
|
||||
|
||||
context.drawText(textRenderer, respawnMessage, (int) (width/2) - (textRenderer.getWidth(respawnMessage)/2), (int) (height - height/3 - 1 + 30), textColor, false);
|
||||
context.drawText(textRenderer, respawnMessage, (width/2) - (textRenderer.getWidth(respawnMessage)/2), height - height/3 - 1 + 30, textColor, false);
|
||||
}
|
||||
|
||||
private void renderConfirmQuitButton(DrawContext context, int mouxeX, int mouseY, float delta){
|
||||
private void renderConfirmQuitButton(DrawContext context, int mouxeX, int mouseY){
|
||||
final int primary = new Color(208, 209, 212, (int) (float) 255.0).getRGB();
|
||||
final int secondary = new Color(88, 88, 90, (int) (float) 255.0).getRGB();
|
||||
final int buttonAccent = new Color(177, 178, 181, (int) (float) 255.0).getRGB();
|
||||
@@ -151,7 +144,7 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
context.fill(startX+1, endY, endX-1, endY+3, secondary);
|
||||
context.drawBorder(startX, startY, (endX) - (startX), (endY+4) - (startY), black);
|
||||
|
||||
context.drawText(textRenderer, menuMessage, (int) (width/2) - (textRenderer.getWidth(menuMessage)/2), (int) (height - height/3), textColor, false);
|
||||
context.drawText(textRenderer, menuMessage, (width/2) - (textRenderer.getWidth(menuMessage)/2), height - height/3 - 1, textColor, false);
|
||||
}
|
||||
|
||||
public float getTotalDelta(float delta){
|
||||
@@ -170,7 +163,7 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
if (textOpacity > 0){
|
||||
context.getMatrices().push();
|
||||
context.getMatrices().scale(2F, 2F, 2F);
|
||||
context.drawCenteredTextWithShadow(this.textRenderer, this.title, (int) (this.width / 2 / 2), (int) (this.height / 3.5 / 2 - 10), new Color(255, 255, 255, textOpacity).getRGB());
|
||||
context.drawCenteredTextWithShadow(this.textRenderer, this.title, this.width / 2 / 2, (int) (this.height / 3.5 / 2 - 10), new Color(255, 255, 255, textOpacity).getRGB());
|
||||
context.getMatrices().pop();
|
||||
context.drawCenteredTextWithShadow(this.textRenderer, this.message, this.width / 2, (int) (this.height / 3.5), new Color(255, 255, 255, textOpacity).getRGB());
|
||||
}
|
||||
@@ -178,16 +171,16 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
if (!confirmingExit){
|
||||
if (totalDelta > 1250f){
|
||||
float respawnOpacity = (int) Math.min(255, (totalDelta - 1250f) / 3f);
|
||||
renderRespawnButton(context, mouseX, mouseY, delta, respawnOpacity);
|
||||
renderRespawnButton(context, mouseX, mouseY, respawnOpacity);
|
||||
}
|
||||
if (totalDelta > 1750f){
|
||||
float menuOpacity = (int) Math.min(255, (totalDelta - 1750f) / 3f);
|
||||
renderMenuButton(context, mouseX, mouseY, delta, menuOpacity);
|
||||
renderMenuButton(context, mouseX, mouseY, menuOpacity);
|
||||
}
|
||||
} else {
|
||||
context.drawCenteredTextWithShadow(this.textRenderer, BedrockDeathScreen.confirmQuitText, this.width / 2, (int) (this.height - this.height / 3 - 9 - 12), new Color(255, 255, 255, 255).getRGB());
|
||||
renderConfirmRespawnButton(context, mouseX, mouseY, delta, 255f);
|
||||
renderConfirmQuitButton(context, mouseX, mouseY, delta);
|
||||
context.drawCenteredTextWithShadow(this.textRenderer, BedrockDeathScreen.confirmQuitText, this.width / 2, this.height - this.height / 3 - 9 - 12, new Color(255, 255, 255, 255).getRGB());
|
||||
renderConfirmRespawnButton(context, mouseX, mouseY);
|
||||
renderConfirmQuitButton(context, mouseX, mouseY);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -195,7 +188,6 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
@Override
|
||||
protected void init() {
|
||||
this.respawnMessage = this.hardcore ? Text.translatable("deathScreen.spectate") : Text.translatable("deathScreen.respawn");
|
||||
this.scoreText = Text.translatable("deathScreen.score.value", new Object[]{Text.literal(Integer.toString(this.client.player.getScore())).formatted(Formatting.YELLOW)});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -206,12 +198,18 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
|
||||
private void respawn(){
|
||||
ticksSinceDeath = 0;
|
||||
this.client.player.requestRespawn();
|
||||
if (this.client != null && this.client.player != null) {
|
||||
this.client.player.requestRespawn();
|
||||
}
|
||||
playUISound();
|
||||
}
|
||||
|
||||
private void playUISound() {
|
||||
this.client.player.playSoundToPlayer(SoundEvent.of(SOUND), SoundCategory.MASTER, 1f, 1f);
|
||||
if (this.client != null) {
|
||||
if (this.client.player != null) {
|
||||
this.client.player.playSoundToPlayer(SoundEvent.of(SOUND), SoundCategory.MASTER, .75f, 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -237,29 +235,12 @@ public class BedrockDeathScreen extends DeathScreen {
|
||||
}
|
||||
|
||||
private void quitLevel(){
|
||||
if (this.client.world != null) {
|
||||
if (this.client != null && this.client.world != null) {
|
||||
this.client.world.disconnect();
|
||||
}
|
||||
|
||||
this.client.disconnect(new MessageScreen(Text.translatable("menu.savingLevel")));
|
||||
this.client.setScreen(new TitleScreen());
|
||||
}
|
||||
|
||||
private void onTitleScreenButtonClicked(){
|
||||
if (this.hardcore) {
|
||||
this.quitLevel();
|
||||
} else {
|
||||
final MutableText titleScreenText = Text.translatable("deathScreen.titleScreen");
|
||||
ConfirmScreen confirmScreen = new TitleScreenConfirmScreen((confirmed) -> {
|
||||
if (confirmed) {
|
||||
this.quitLevel();
|
||||
} else {
|
||||
respawn();
|
||||
}
|
||||
|
||||
}, confirmQuitText, ScreenTexts.EMPTY, titleScreenText, Text.translatable("deathScreen.respawn"));
|
||||
this.client.setScreen(confirmScreen);
|
||||
confirmScreen.disableButtons(20);
|
||||
if (this.client != null) {
|
||||
this.client.disconnect(new MessageScreen(Text.translatable("menu.savingLevel")));
|
||||
this.client.setScreen(new TitleScreen());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.entity.Entity;
|
||||
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.Constant;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||
@@ -14,7 +13,6 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
@Mixin(Camera.class)
|
||||
public class MixinCamera {
|
||||
|
||||
@Shadow private float lastTickDelta;
|
||||
|
||||
@Redirect(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getYaw(F)F"))
|
||||
public float onYawGet(Entity instance, float tickDelta){
|
||||
@@ -38,7 +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.getTickDelta();
|
||||
final float delta = client.getRenderTickCounter().getTickDelta(true);
|
||||
return bedrockDeathScreen.calcCameraOffset(delta);
|
||||
} else {
|
||||
return 4.0f;
|
||||
|
||||
@@ -20,22 +20,18 @@ public abstract class MixinGameRenderer {
|
||||
|
||||
@Shadow @Final MinecraftClient client;
|
||||
|
||||
@Shadow private float fovMultiplier;
|
||||
|
||||
@Shadow public abstract void tick();
|
||||
|
||||
@Shadow protected abstract void renderHand(Camera camera, float tickDelta, Matrix4f matrix4f);
|
||||
|
||||
@Inject(at = @At("TAIL"), method = "getFov", cancellable = true)
|
||||
public void onFovGet(Camera camera, float tickDelta, boolean changingFov, CallbackInfoReturnable<Double> cir){
|
||||
if (client.currentScreen instanceof BedrockDeathScreen bedrockDeathScreen){
|
||||
cir.setReturnValue((double) Math.min(60 + bedrockDeathScreen.getTotalDelta(client.getTickDelta()) / (405d), 80));
|
||||
cir.setReturnValue(Math.min(60 + bedrockDeathScreen.getTotalDelta(client.getRenderTickCounter().getTickDelta(true)) / (405d), 80));
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;update(Lnet/minecraft/world/BlockView;Lnet/minecraft/entity/Entity;ZZF)V"))
|
||||
public void onCameraUpdate(Camera instance, BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta){
|
||||
if (client.currentScreen instanceof BedrockDeathScreen bedrockDeathScreen){
|
||||
if (client.currentScreen instanceof BedrockDeathScreen){
|
||||
instance.update(area, focusedEntity, true, false, tickDelta);
|
||||
} else {
|
||||
instance.update(area, focusedEntity, thirdPerson, inverseView, tickDelta);
|
||||
|
||||
Reference in New Issue
Block a user