From e9d77974b986cac2f2a7453a5838f89b007fb5e9 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sun, 19 May 2024 01:31:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=87=BB=E6=9D=80=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=B8=B2=E6=9F=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/screens/KillMessageOverlay.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/net/mcreator/target/client/screens/KillMessageOverlay.java 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 + ); + } +}