单发装填时正确消耗弹药

This commit is contained in:
Light_Quanta 2025-04-14 21:52:02 +08:00
parent ad16fec9bf
commit 6594313b6d
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959

View file

@ -16,10 +16,8 @@ import com.atsuishio.superbwarfare.tools.InventoryTool;
import com.atsuishio.superbwarfare.tools.SoundTool; import com.atsuishio.superbwarfare.tools.SoundTool;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -575,27 +573,7 @@ public class GunEventHandler {
if (!InventoryTool.hasCreativeAmmoBox(player)) { if (!InventoryTool.hasCreativeAmmoBox(player)) {
var cap = player.getData(ModAttachments.PLAYER_VARIABLE); var cap = player.getData(ModAttachments.PLAYER_VARIABLE);
data.consumeAmmo(player, 1);
var ammoTypeInfo = data.ammoTypeInfo();
switch (ammoTypeInfo.type()) {
case PLAYER_AMMO -> {
var type = AmmoType.getType(ammoTypeInfo.value());
assert type != null;
type.add(cap, -1);
}
case ITEM -> player.getInventory().clearOrCountMatchingItems(
p -> p.getItem().toString().equals(ammoTypeInfo.value()),
1,
player.inventoryMenu.getCraftSlots()
);
case TAG -> player.getInventory().clearOrCountMatchingItems(
p -> p.is(ItemTags.create(ResourceLocation.parse(ammoTypeInfo.value()))),
1,
player.inventoryMenu.getCraftSlots()
);
}
player.setData(ModAttachments.PLAYER_VARIABLE, cap); player.setData(ModAttachments.PLAYER_VARIABLE, cap);
} }
} }