From c82e034688c78f00ddbfa1017b2ee27fc09a11d6 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 18 May 2024 16:54:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9F=BA=E6=9C=AC=E7=9A=84?= =?UTF-8?q?=E5=BC=B9=E8=8D=AF=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/client/screens/AmmoBarOverlay.java | 90 +++++++++++++++++-- .../target/event/PlayerEventHandler.java | 27 +----- .../net/mcreator/target/tools/FireMode.java | 8 ++ 3 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 src/main/java/net/mcreator/target/tools/FireMode.java diff --git a/src/main/java/net/mcreator/target/client/screens/AmmoBarOverlay.java b/src/main/java/net/mcreator/target/client/screens/AmmoBarOverlay.java index 6e61aa047..5646ff0a1 100644 --- a/src/main/java/net/mcreator/target/client/screens/AmmoBarOverlay.java +++ b/src/main/java/net/mcreator/target/client/screens/AmmoBarOverlay.java @@ -1,9 +1,13 @@ package net.mcreator.target.client.screens; -import net.mcreator.target.event.PlayerEventHandler; +import com.mojang.blaze3d.vertex.PoseStack; +import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModTags; +import net.mcreator.target.network.TargetModVariables; +import net.mcreator.target.tools.FireMode; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.RenderGuiEvent; import net.minecraftforge.eventbus.api.EventPriority; @@ -17,16 +21,86 @@ public class AmmoBarOverlay { public static void eventHandler(RenderGuiEvent.Pre event) { int w = event.getWindow().getGuiScaledWidth(); int h = event.getWindow().getGuiScaledHeight(); - Player entity = Minecraft.getInstance().player; - if (entity != null && entity.getMainHandItem().is(TargetModTags.Items.GUN)) { + Player player = Minecraft.getInstance().player; + + if (player == null) { + return; + } + + ItemStack stack = player.getMainHandItem(); + if (stack.is(TargetModTags.Items.GUN)) { + PoseStack poseStack = event.getGuiGraphics().pose(); + + FireMode mode = getFireMode(stack); + + poseStack.pushPose(); + poseStack.scale(1.5f, 1.5f, 1f); + event.getGuiGraphics().drawString( Minecraft.getInstance().font, - PlayerEventHandler.handleAmmoCount(entity), - w / 2 + 92, - h - 11, - -16711936, - false + getGunAmmoCount(player) + "", + w / 3f + 117, + h / 1.5f - 28, + 0xFFFFFF, + true + ); + poseStack.popPose(); + + event.getGuiGraphics().drawString( + Minecraft.getInstance().font, + getPlayerAmmoCount(player), + w / 2 + 180, + h - 30, + 0xCCCCCC, + true ); } } + + public static FireMode getFireMode(ItemStack stack) { + return switch (stack.getOrCreateTag().getInt("fire_mode")) { + case 0 -> FireMode.SEMI; + case 1 -> FireMode.BURST; + case 2 -> FireMode.AUTO; + default -> FireMode.OTHER; + }; + } + + public static int getGunAmmoCount(Player player) { + ItemStack stack = player.getMainHandItem(); + + if (stack.getItem() == TargetModItems.BOCEK.get() || stack.getItem() == TargetModItems.M_79.get() + || stack.getItem() == TargetModItems.RPG.get() || stack.getItem() == TargetModItems.TASER.get()) { + return stack.getOrCreateTag().getInt("maxammo"); + } + if (stack.getItem() == TargetModItems.MINIGUN.get()) { + return (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo; + } + + return stack.getOrCreateTag().getInt("ammo"); + } + + public static String getPlayerAmmoCount(Player player) { + ItemStack stack = player.getMainHandItem(); + + if (stack.getItem() == TargetModItems.BOCEK.get()) { + return ""; + } + if (stack.getItem() == TargetModItems.MINIGUN.get()) { + return ""; + } + if (stack.is(TargetModTags.Items.RIFLE)) { + return "" + (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo; + } + if (stack.is(TargetModTags.Items.HANDGUN) || stack.is(TargetModTags.Items.SMG)) { + return "" + (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).handgunAmmo; + } + if (stack.is(TargetModTags.Items.SHOTGUN)) { + return "" + (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo; + } + if (stack.is(TargetModTags.Items.SNIPER_RIFLE)) { + return "" + (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).sniperAmmo; + } + return ""; + } } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index 66b5b3a6f..c95abd78a 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -179,48 +179,25 @@ public class PlayerEventHandler { recoilThread.start(); } - public static String handleAmmoCount(Player player) { + public static void handleAmmoCount(Player player) { ItemStack stack = player.getMainHandItem(); - String firemode = switch (stack.getOrCreateTag().getInt("fire_mode")) { - case 0 -> "Semi"; - case 1 -> "Burst"; - case 2 -> "Auto"; - default -> ""; - }; - if (stack.getItem() == TargetModItems.BOCEK.get()) { - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("maxammo"))) + " " + firemode; - } - if (stack.getItem() == TargetModItems.MINIGUN.get()) { - return new java.text.DecimalFormat("##").format((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo) + " " + firemode; - } if (stack.is(TargetModTags.Items.RIFLE)) { stack.getOrCreateTag().putInt("maxammo", ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo)); - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("ammo"))) + "/" - + new java.text.DecimalFormat("##").format((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo) + " " + firemode; } - if (stack.is(TargetModTags.Items.HANDGUN) - || stack.is(TargetModTags.Items.SMG)) { + if (stack.is(TargetModTags.Items.HANDGUN) || stack.is(TargetModTags.Items.SMG)) { stack.getOrCreateTag().putInt("maxammo", ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).handgunAmmo)); - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("ammo"))) + "/" - + new java.text.DecimalFormat("##").format((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).handgunAmmo) + " " + firemode; } if (stack.is(TargetModTags.Items.SHOTGUN)) { stack.getOrCreateTag().putInt("maxammo", ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo)); - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("ammo"))) + "/" - + new java.text.DecimalFormat("##").format((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo) + " " + firemode; } if (stack.is(TargetModTags.Items.SNIPER_RIFLE)) { stack.getOrCreateTag().putInt("maxammo", ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).sniperAmmo)); - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("ammo"))) + "/" - + new java.text.DecimalFormat("##").format((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).sniperAmmo) + " " + firemode; } - return (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("ammo"))) + "/" - + (new java.text.DecimalFormat("##").format(stack.getOrCreateTag().getInt("maxammo"))) + " " + firemode; } private static void handleFireTime(Player player) { diff --git a/src/main/java/net/mcreator/target/tools/FireMode.java b/src/main/java/net/mcreator/target/tools/FireMode.java new file mode 100644 index 000000000..121abf8f6 --- /dev/null +++ b/src/main/java/net/mcreator/target/tools/FireMode.java @@ -0,0 +1,8 @@ +package net.mcreator.target.tools; + +public enum FireMode { + SEMI, + BURST, + AUTO, + OTHER +}