副手拿弹药盒,主手使用弹药时将直接装进弹药盒

This commit is contained in:
Atsuihsio 2025-03-03 00:44:37 +08:00
parent 52ee56a211
commit c0528f10ba

View file

@ -1,5 +1,6 @@
package com.atsuishio.superbwarfare.item.common.ammo; package com.atsuishio.superbwarfare.item.common.ammo;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.network.ModVariables;
import com.atsuishio.superbwarfare.tools.GunInfo; import com.atsuishio.superbwarfare.tools.GunInfo;
@ -30,6 +31,24 @@ public class AmmoSupplierItem extends Item {
player.getCooldowns().addCooldown(this, 10); player.getCooldowns().addCooldown(this, 10);
stack.shrink(count); stack.shrink(count);
ItemStack ammobox = player.getOffhandItem();
if (ammobox.is(ModItems.AMMO_BOX.get())) {
var newAmmoCount = switch (this.type) {
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 -> 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);
}
} else {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
var newAmmoCount = switch (this.type) { var newAmmoCount = switch (this.type) {
case HANDGUN -> capability.handgunAmmo; case HANDGUN -> capability.handgunAmmo;
@ -47,6 +66,7 @@ public class AmmoSupplierItem extends Item {
} }
capability.syncPlayerVariables(player); capability.syncPlayerVariables(player);
}); });
}
if (!level.isClientSide()) { if (!level.isClientSide()) {
player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.supply", Component.translatable(this.type.translatableKey), ammoToAdd * count), true); player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.supply", Component.translatable(this.type.translatableKey), ammoToAdd * count), true);