```java
package com.mykvador.mixin;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(TitleScreen.class)
public abstract class TitleScreenMixin extends Screen {
// --- НАСТРОЙКИ АНИМАЦИИ ---
private static final int TOTAL_FRAMES = 30; // Укажите ТОЧНОЕ количество кадров, которое вы нарезали из GIF
private static final int FRAME_DELAY = 50; // Задержка между кадрами в миллисекундах (50 мс = 20 FPS). Меняйте для скорости.
// --------------------------
private static final Identifier LOGO = Identifier.of("mykvador", "textures/gui/title/logo.png");
protected TitleScreenMixin(Text title) {
super(title);
}
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
private void renderCustomTitle(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
// --- ЛОГИКА АНИМАЦИИ ФОНА ---
// Вычисляем текущий кадр на основе системного времени
long currentTime = System.currentTimeMillis();
int currentFrame = (int) ((currentTime / FRAME_DELAY) % TOTAL_FRAMES);
// Формируем путь к текущему кадру: bg_0.png, bg_1.png и т.д.
Identifier background = Identifier.of("mykvador", "textures/gui/title/bg_" + currentFrame + ".png");
// ---------------------------
// 1. Рисуем текущий кадр анимации
context.drawTexture(background, 0, 0, 0, 0, this.width, this.height, this.width, this.height);
// 2. Кастомный логотип (если он у вас есть)
int logoWidth = 300;
int logoHeight = 100;
context.drawTexture(LOGO, (this.width / 2) - (logoWidth / 2), 30, 0, 0, logoWidth, logoHeight, logoWidth, logoHeight);
// 3. Текст под логотипом
context.drawCenteredTextWithShadow(this.textRenderer, Text.literal("Minecraft 1.21.11"), this.width / 2, 140, 0xAAAAAA);
context.drawCenteredTextWithShadow(this.textRenderer, Text.literal("The sun of its parts!"), this.width / 2, 155, 0xFFFFFF);
// 4. Нижний левый текст
context.drawTextWithShadow(this.textRenderer, "Minecraft 1.21.11/Fabric (модифицировано) Mykvador 0.1.0 t.me/mykvador_tg", 2, this.height - 10, 0xFFFFFF);
// 5. Нижний правый текст
String rightFooter = "© Mojang AB. Распространение запрещено!";
int rightWidth = this.textRenderer.getWidth(rightFooter);
context.drawTextWithShadow(this.textRenderer, rightFooter, this.width - rightWidth - 2, this.height - 10, 0xFFFFFF);
// 6. Водяной знак (как на скриншоте)
String watermark = "MYKVADOR";
int watermarkWidth = this.textRenderer.getWidth(watermark);
context.drawTextWithShadow(this.textRenderer, watermark, this.width - watermarkWidth - 10, 10, 0xFFFFFF);
// Отменяем стандартный рендер
ci.cancel();
}
}
```