diff --git a/src/main/java/net/mcreator/target/client/screens/KillMessageOverlay.java b/src/main/java/net/mcreator/target/client/screens/KillMessageOverlay.java new file mode 100644 index 000000000..b49d150f6 --- /dev/null +++ b/src/main/java/net/mcreator/target/client/screens/KillMessageOverlay.java @@ -0,0 +1,83 @@ +package net.mcreator.target.client.screens; + +import net.mcreator.target.event.KillMessageHandler; +import net.mcreator.target.item.gun.GunItem; +import net.mcreator.target.tools.PlayerKillRecord; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.RenderGuiEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(value = Dist.CLIENT) +public class KillMessageOverlay { + + @SubscribeEvent(priority = EventPriority.NORMAL) + public static void eventHandler(RenderGuiEvent.Pre event) { + Player player = Minecraft.getInstance().player; + + if (player == null) { + return; + } + + if (KillMessageHandler.QUEUE.isEmpty()) { + return; + } + + int index = 0; + for (PlayerKillRecord record : KillMessageHandler.QUEUE) { + renderKillMessages(record, event, index); + index++; + } + + } + + private static void renderKillMessages(PlayerKillRecord record, RenderGuiEvent.Pre event, int index) { + int w = event.getWindow().getGuiScaledWidth(); + int h = 10 + index * 10; + + Font font = Minecraft.getInstance().font; + + String attackerName = record.attacker.getDisplayName().getString(); + String targetName = record.target.getDisplayName().getString(); + + int attackerNameWidth = font.width(attackerName); + int targetNameWidth = font.width(targetName); + + event.getGuiGraphics().drawString( + Minecraft.getInstance().font, + attackerName, + w - 2 * targetNameWidth - 36 - attackerNameWidth, + h, + record.attacker.getTeamColor(), + false + ); + + if (record.stack.getItem() instanceof GunItem gunItem) { + ResourceLocation resourceLocation = gunItem.getGunIcon(); + + event.getGuiGraphics().blit(resourceLocation, + w - 2 * targetNameWidth - 30, + h, + 0, + 0, + 32, + 8, + -32, + 8); + } + + event.getGuiGraphics().drawString( + Minecraft.getInstance().font, + targetName, + w - targetNameWidth - 10f, + h, + record.target.getTeamColor(), + false + ); + } +}