Files
NavidromeMod/src/main/java/com/rardog/navidromeplayer/client/gui/NowPlayingToast.java
T

63 lines
2.4 KiB
Java

package com.rardog.navidromeplayer.client.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.rardog.navidromeplayer.client.navidrome.NavidromeSong;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.toasts.IToast;
import net.minecraft.client.gui.toasts.ToastGui;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class NowPlayingToast implements IToast {
private final NavidromeSong song;
public NowPlayingToast(NavidromeSong song) {
this.song = song;
}
@Override
public Visibility render(MatrixStack ms, ToastGui toastGui, long delta) {
toastGui.getMinecraft().getTextureManager().bind(TEXTURE);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
toastGui.blit(ms, 0, 0, 0, 0, this.width(), this.height());
if (song == null) {
return Visibility.HIDE;
}
String coverId = (song.coverArt != null && !song.coverArt.isEmpty()) ? song.coverArt : song.id;
ResourceLocation cover = CoverArtCache.getCoverArt(coverId);
int iconX = 6;
int iconY = 6;
int iconSize = 20;
if (cover != null) {
toastGui.getMinecraft().getTextureManager().bind(cover);
AbstractGui.blit(ms, iconX, iconY, 0.0F, 0.0F, iconSize, iconSize, iconSize, iconSize);
} else {
AbstractGui.fill(ms, iconX, iconY, iconX + iconSize, iconY + iconSize, 0xFF1E2235);
AbstractGui.fill(ms, iconX, iconY, iconX + iconSize, iconY + 1, 0xFF00E5FF);
toastGui.getMinecraft().font.draw(ms, "♫", iconX + 6, iconY + 6, 0xFF00E5FF);
}
String header = "♫ Сейчас играет";
toastGui.getMinecraft().font.draw(ms, header, 30, 7, 0xFF500050);
String title = song.artist + " — " + song.title;
net.minecraft.client.gui.FontRenderer font = toastGui.getMinecraft().font;
if (font.width(title) > 122) {
while (font.width(title + "…") > 122 && title.length() > 1) {
title = title.substring(0, title.length() - 1);
}
title = title + "…";
}
font.draw(ms, title, 30, 18, 0xFF000000);
return delta >= 4500L ? Visibility.HIDE : Visibility.SHOW;
}
}