From ad2db9c8885e0b65f604d4ab7811a9aaf6bf43d9 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Fri, 18 Apr 2025 21:31:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=B4=E6=8C=81=E7=94=9F?= =?UTF-8?q?=E8=AE=A1=E5=BC=B9=E8=8D=AF=E6=B6=88=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/LivingEventHandler.java | 22 ++++++------------- .../superbwarfare/item/gun/data/GunData.java | 2 +- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index a17d08ec5..994f260f6 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -649,30 +649,22 @@ public class LivingEventHandler { float rate = level * 0.1f + (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.RIFLE) ? 0.07f : 0f); - var cap = player.getData(ModAttachments.PLAYER_VARIABLE).watch(); - int mag = data.magazine(); int ammo = data.ammo.get(); int ammoReload = (int) Math.min(mag, mag * rate); int ammoNeed = Math.min(mag - ammo, ammoReload); - boolean flag = InventoryTool.hasCreativeAmmoBox(player); + boolean flag = player.isCreative() || InventoryTool.hasCreativeAmmoBox(player); - var ammoType = data.ammoTypeInfo().playerAmmoType(); - if (ammoType != null) { - int ammoFinal = Math.min(ammoType.get(cap), ammoNeed); - if (flag) { - ammoFinal = ammoNeed; - } else { - ammoType.add(cap, -ammoFinal); - } - - data.ammo.set(Math.min(mag, ammo + ammoFinal)); + int ammoFinal = Math.min(data.countBackupAmmo(player), ammoNeed); + if (flag) { + ammoFinal = ammoNeed; + } else { + data.consumeBackupAmmo(player, ammoFinal); } + data.ammo.set(Math.min(mag, ammo + ammoFinal)); data.save(); - player.setData(ModAttachments.PLAYER_VARIABLE, cap); - cap.sync(player); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java index c86d8bec9..5aabbabb1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java @@ -369,7 +369,7 @@ public class GunData { * 消耗额外弹药(不影响枪内弹药) */ public void consumeBackupAmmo(Player player, int count) { - if (player.isCreative() || InventoryTool.hasCreativeAmmoBox(player)) return; + if (player.isCreative() || InventoryTool.hasCreativeAmmoBox(player) || count <= 0) return; var info = ammoTypeInfo(); switch (info.type()) {