From c0528f10ba39c7d473bfcc4d5032567b0e82586d Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Mon, 3 Mar 2025 00:44:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=AF=E6=89=8B=E6=8B=BF=E5=BC=B9=E8=8D=AF?= =?UTF-8?q?=E7=9B=92=EF=BC=8C=E4=B8=BB=E6=89=8B=E4=BD=BF=E7=94=A8=E5=BC=B9?= =?UTF-8?q?=E8=8D=AF=E6=97=B6=E5=B0=86=E7=9B=B4=E6=8E=A5=E8=A3=85=E8=BF=9B?= =?UTF-8?q?=E5=BC=B9=E8=8D=AF=E7=9B=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item/common/ammo/AmmoSupplierItem.java | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/item/common/ammo/AmmoSupplierItem.java b/src/main/java/com/atsuishio/superbwarfare/item/common/ammo/AmmoSupplierItem.java index 3bb635ffb..8454b9425 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/common/ammo/AmmoSupplierItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/common/ammo/AmmoSupplierItem.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.item.common.ammo; +import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.tools.GunInfo; @@ -30,23 +31,42 @@ public class AmmoSupplierItem extends Item { player.getCooldowns().addCooldown(this, 10); stack.shrink(count); - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + ItemStack ammobox = player.getOffhandItem(); + + if (ammobox.is(ModItems.AMMO_BOX.get())) { var newAmmoCount = switch (this.type) { - case HANDGUN -> capability.handgunAmmo; - case RIFLE -> capability.rifleAmmo; - case SHOTGUN -> capability.shotgunAmmo; - case SNIPER -> capability.sniperAmmo; - case HEAVY -> capability.heavyAmmo; + case HANDGUN -> ammobox.getOrCreateTag().getInt("HandgunAmmo"); + case RIFLE -> ammobox.getOrCreateTag().getInt("RifleAmmo"); + case SHOTGUN -> ammobox.getOrCreateTag().getInt("ShotgunAmmo"); + case SNIPER -> ammobox.getOrCreateTag().getInt("SniperAmmo"); + case HEAVY -> ammobox.getOrCreateTag().getInt("HeavyAmmo"); } + ammoToAdd * count; switch (this.type) { - case HANDGUN -> capability.handgunAmmo = newAmmoCount; - case RIFLE -> capability.rifleAmmo = newAmmoCount; - case SHOTGUN -> capability.shotgunAmmo = newAmmoCount; - case SNIPER -> capability.sniperAmmo = newAmmoCount; - case HEAVY -> capability.heavyAmmo = newAmmoCount; + case HANDGUN -> ammobox.getOrCreateTag().putInt("HandgunAmmo", newAmmoCount); + case RIFLE -> ammobox.getOrCreateTag().putInt("RifleAmmo", newAmmoCount); + case SHOTGUN -> ammobox.getOrCreateTag().putInt("ShotgunAmmo", newAmmoCount); + case SNIPER -> ammobox.getOrCreateTag().putInt("SniperAmmo", newAmmoCount); + case HEAVY -> ammobox.getOrCreateTag().putInt("HeavyAmmo", newAmmoCount); } - capability.syncPlayerVariables(player); - }); + } else { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + var newAmmoCount = switch (this.type) { + case HANDGUN -> capability.handgunAmmo; + case RIFLE -> capability.rifleAmmo; + case SHOTGUN -> capability.shotgunAmmo; + case SNIPER -> capability.sniperAmmo; + case HEAVY -> capability.heavyAmmo; + } + ammoToAdd * count; + switch (this.type) { + case HANDGUN -> capability.handgunAmmo = newAmmoCount; + case RIFLE -> capability.rifleAmmo = newAmmoCount; + case SHOTGUN -> capability.shotgunAmmo = newAmmoCount; + case SNIPER -> capability.sniperAmmo = newAmmoCount; + case HEAVY -> capability.heavyAmmo = newAmmoCount; + } + capability.syncPlayerVariables(player); + }); + } if (!level.isClientSide()) { player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.supply", Component.translatable(this.type.translatableKey), ammoToAdd * count), true);