From 69ad5f97cf913c6afaebd4bdbf32b2d4b3118c8c Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 10 Aug 2024 14:57:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E7=BB=B4=E6=8C=81?= =?UTF-8?q?=E7=94=9F=E8=AE=A1perk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/event/LivingEventHandler.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java index 61602f655..54ec0d094 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java @@ -406,18 +406,23 @@ public class LivingEventHandler { } float rate = level * 0.1f + (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.RIFLE) ? 0.07f : 0f); - int mag = stack.getOrCreateTag().getInt("mag"); - int ammoReload = (int) Math.min(mag, mag * rate); player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + int mag = stack.getOrCreateTag().getInt("mag"); + int ammo = stack.getOrCreateTag().getInt("ammo"); + int ammoReload = (int) Math.min(mag, mag * rate); + int ammoNeed = Math.min(mag - ammo, ammoReload); + if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { - capability.rifleAmmo -= Math.min(capability.rifleAmmo, ammoReload); + int ammoFinal = Math.min(capability.rifleAmmo, ammoNeed); + capability.rifleAmmo -= ammoFinal; + stack.getOrCreateTag().putInt("ammo", Math.min(mag, ammo + ammoFinal)); } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - capability.handgunAmmo -= Math.min(capability.handgunAmmo, ammoReload); + int ammoFinal = Math.min(capability.handgunAmmo, ammoNeed); + capability.handgunAmmo -= ammoFinal; + stack.getOrCreateTag().putInt("ammo", Math.min(mag, ammo + ammoFinal)); } capability.syncPlayerVariables(player); - - stack.getOrCreateTag().putInt("ammo", mag + ammoReload); } ); }