63 lines
2.4 KiB
Java
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;
|
|
}
|
|
}
|