diff --git a/src/main/java/net/mcreator/target/item/gun/BocekItem.java b/src/main/java/net/mcreator/target/item/gun/BocekItem.java index d84252036..9d92e52ab 100644 --- a/src/main/java/net/mcreator/target/item/gun/BocekItem.java +++ b/src/main/java/net/mcreator/target/item/gun/BocekItem.java @@ -72,7 +72,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { transformType = type; } - private PlayState idlePredicate(AnimationState event) { + private PlayState idlePredicate(AnimationState event) { LocalPlayer player = Minecraft.getInstance().player; if (player == null) return PlayState.STOP; ItemStack stack = player.getMainHandItem(); @@ -90,7 +90,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { return PlayState.STOP; } - private PlayState procedurePredicate(AnimationState event) { + private PlayState procedurePredicate(AnimationState event) { if (transformType != null && transformType.firstPerson()) { if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); @@ -130,7 +130,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { if (slot == EquipmentSlot.MAINHAND) { map = HashMultimap.create(map); map.put(Attributes.MOVEMENT_SPEED, - new AttributeModifier(uuid, "henghengaaa", -0.03f, AttributeModifier.Operation.MULTIPLY_BASE)); + new AttributeModifier(uuid, TargetMod.ATTRIBUTE_MODIFIER, -0.03f, AttributeModifier.Operation.MULTIPLY_BASE)); } return map; } @@ -163,7 +163,6 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { itemstack.getOrCreateTag().putInt("max_ammo", getAmmoCount(player)); } - // TODO 合并至GunReload CompoundTag tag = itemstack.getOrCreateTag(); if (tag.getInt("arrow_empty") > 0) { tag.putInt("arrow_empty", tag.getInt("arrow_empty") - 1); diff --git a/src/main/java/net/mcreator/target/item/gun/VectorItem.java b/src/main/java/net/mcreator/target/item/gun/VectorItem.java index 0ff650357..1025fd04d 100644 --- a/src/main/java/net/mcreator/target/item/gun/VectorItem.java +++ b/src/main/java/net/mcreator/target/item/gun/VectorItem.java @@ -8,23 +8,16 @@ import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModTags; import net.mcreator.target.item.AnimatedItem; -import net.mcreator.target.tools.GunInfo; import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.TooltipTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.core.Holder; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.protocol.game.ClientboundSoundPacket; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -33,7 +26,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import net.minecraftforge.registries.ForgeRegistries; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.core.animation.AnimatableManager; @@ -79,7 +71,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { transformType = type; } - private PlayState idlePredicate(AnimationState event) { + private PlayState idlePredicate(AnimationState event) { LocalPlayer player = Minecraft.getInstance().player; if (player == null) return PlayState.STOP; ItemStack stack = player.getMainHandItem(); @@ -123,7 +115,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { return PlayState.STOP; } - private PlayState procedurePredicate(AnimationState event) { + private PlayState procedurePredicate(AnimationState event) { if (transformType != null && transformType.firstPerson()) { if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); @@ -194,63 +186,6 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { this.animationProcedure = procedure; } - @Override - public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int slot, boolean selected) { - super.inventoryTick(itemStack, world, entity, slot, selected); - - CompoundTag tag = itemStack.getOrCreateTag(); - double id = tag.getDouble("id"); - var mainHandItem = entity instanceof LivingEntity living ? living.getMainHandItem() : ItemStack.EMPTY; - if (mainHandItem.getOrCreateTag().getDouble("id") != tag.getDouble("id")) { - tag.putBoolean("empty_reload", false); - tag.putBoolean("reloading", false); - tag.putDouble("reload_time", 0); - } - if (tag.getBoolean("reloading") && tag.getInt("ammo") == 0) { - if (tag.getDouble("reload_time") == 61) { - entity.getPersistentData().putDouble("id", id); - if (entity instanceof ServerPlayer serverPlayer) { - serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:vector_reload_empty"))), - SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 10f, 1f, serverPlayer.level().random.nextLong())); - } -// entity.level().playSound(null, entity.blockPosition(), TargetModSounds.VECTOR_RELOAD_EMPTY.get(), SoundSource.PLAYERS, 100, 1); - } - if (mainHandItem.getItem() == itemStack.getItem() - && mainHandItem.getOrCreateTag().getDouble("id") == id - && tag.getDouble("reload_time") > 0) { - tag.putDouble("reload_time", tag.getDouble("reload_time") - 1); - } else { - tag.putBoolean("reloading", false); - tag.putBoolean("empty_reload", false); - tag.putDouble("reload_time", 0); - } - if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { - GunsTool.reload(entity, GunInfo.Type.HANDGUN); - } - } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { - if (tag.getDouble("reload_time") == 43) { - entity.getPersistentData().putDouble("id", id); - if (entity instanceof ServerPlayer serverPlayer) { - serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:vector_reload_normal"))), - SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 10f, 1f, serverPlayer.level().random.nextLong())); - } -// entity.level().playSound(null, entity.blockPosition(), TargetModSounds.VECTOR_RELOAD_NORMAL.get(), SoundSource.PLAYERS, 100, 1); - } - if (mainHandItem.getItem() == itemStack.getItem() - && mainHandItem.getOrCreateTag().getDouble("id") == id - && tag.getDouble("reload_time") > 0) { - tag.putDouble("reload_time", (tag.getDouble("reload_time") - 1)); - } else { - tag.putBoolean("reloading", false); - tag.putBoolean("empty_reload", false); - tag.putDouble("reload_time", 0); - } - if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { - GunsTool.reload(entity, GunInfo.Type.HANDGUN, true); - } - } - } - @Override public ResourceLocation getGunIcon() { return new ResourceLocation(TargetMod.MODID, "textures/gun_icon/vector_icon.png"); diff --git a/src/main/java/net/mcreator/target/network/message/FireMessage.java b/src/main/java/net/mcreator/target/network/message/FireMessage.java index 2f7ba1e48..910b97bd3 100644 --- a/src/main/java/net/mcreator/target/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/target/network/message/FireMessage.java @@ -2,11 +2,15 @@ package net.mcreator.target.network.message; import net.mcreator.target.entity.BocekArrowEntity; import net.mcreator.target.entity.ProjectileEntity; +import net.mcreator.target.event.GunEventHandler; import net.mcreator.target.init.TargetModEnchantments; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; +import net.mcreator.target.init.TargetModTags; import net.mcreator.target.network.TargetModVariables; -import net.mcreator.target.procedures.PressFireProcedure; +import net.mcreator.target.procedures.M79fireProcedure; +import net.mcreator.target.procedures.RpgFireProcedure; +import net.mcreator.target.procedures.TaserfireProcedure; import net.mcreator.target.tools.SoundTool; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -55,7 +59,7 @@ public class FireMessage { } if (type == 0) { - PressFireProcedure.execute(player); + handleSpecialShoot(player); } else if (type == 1) { player.getPersistentData().putBoolean("firing", false); player.getPersistentData().putDouble("minigun_firing", 0); @@ -68,6 +72,58 @@ public class FireMessage { } } + private static void handleSpecialShoot(Player player) { + var mainHandItem = player.getMainHandItem(); + var tag = mainHandItem.getOrCreateTag(); + + TaserfireProcedure.execute(player); + M79fireProcedure.execute(player); + RpgFireProcedure.execute(player); + + if (mainHandItem.is(TargetModTags.Items.GUN)) { + if (tag.getInt("fire_mode") == 1) { + player.getPersistentData().putBoolean("firing", false); + tag.putInt("burst_fire", (int) tag.getDouble("burst_size")); + } else { + player.getPersistentData().putBoolean("firing", true); + } + if (tag.getDouble("force_stop_reloading") == 1 && tag.getBoolean("reloading") && tag.getDouble("prepare") == 0 && tag.getInt("ammo") > 0) { + tag.putDouble("force_stop", 1); + } + } + + if (mainHandItem.is(TargetModTags.Items.GUN) + && !(mainHandItem.getItem() == TargetModItems.BOCEK.get()) + && !(mainHandItem.getItem() == TargetModItems.MINIGUN.get()) + && tag.getInt("ammo") == 0 + && !tag.getBoolean("reloading")) { + if (!player.level().isClientSide()) { + SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1); + } + } + + if (mainHandItem.getItem() == TargetModItems.MINIGUN.get()) { + if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo == 0) { + if (!player.level().isClientSide()) { + SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1); + } + } + } + + player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.bowPullHold = true; + capability.syncPlayerVariables(player); + }); + + // 栓动武器左键手动拉栓 + if (mainHandItem.is(TargetModTags.Items.GUN) && tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) { + if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) { + mainHandItem.getOrCreateTag().putInt("bolt_action_anim", mainHandItem.getOrCreateTag().getInt("bolt_action_time")); + GunEventHandler.playGunBoltSounds(player); + } + } + } + private static void handleBowShoot(Player player) { ItemStack stack = player.getMainHandItem(); diff --git a/src/main/java/net/mcreator/target/procedures/M79fireProcedure.java b/src/main/java/net/mcreator/target/procedures/M79fireProcedure.java index cbd350562..1a3603442 100644 --- a/src/main/java/net/mcreator/target/procedures/M79fireProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/M79fireProcedure.java @@ -24,43 +24,45 @@ public class M79fireProcedure { if (entity == null) return; if (entity instanceof Player player && !player.isSpectator()) { ItemStack stack = player.getMainHandItem(); - if (stack.getItem() == TargetModItems.M_79.get() && !stack.getOrCreateTag().getBoolean("reloading") && !(entity instanceof Player _plrCldCheck4 && _plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem())) - && stack.getOrCreateTag().getInt("ammo") > 0) { - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.recoilHorizon = Math.random() < 0.5 ? -1 : 1; - capability.recoil = 0.1; - capability.firing = 1; - capability.syncPlayerVariables(entity); - }); + if (stack.getItem() == TargetModItems.M_79.get() && !stack.getOrCreateTag().getBoolean("reloading")) { + Player _plrCldCheck4 = (Player) entity; + if (!_plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0) { + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.recoilHorizon = Math.random() < 0.5 ? -1 : 1; + capability.recoil = 0.1; + capability.firing = 1; + capability.syncPlayerVariables(entity); + }); - Level level = entity.level(); - if (!level.isClientSide()) { - int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), stack); - GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("damageadd"), monsterMultiple); + Level level = entity.level(); + if (!level.isClientSide()) { + int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), stack); + GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("damageadd"), monsterMultiple); - gunGrenadeEntity.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ()); - gunGrenadeEntity.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"), - (float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue()); - level.addFreshEntity(gunGrenadeEntity); + gunGrenadeEntity.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ()); + gunGrenadeEntity.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"), + (float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue()); + level.addFreshEntity(gunGrenadeEntity); + } + + if (!entity.level().isClientSide() && entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand( + new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4, entity.getName().getString(), entity.getDisplayName(), + entity.getServer(), entity), + ("particle minecraft:cloud" + (" " + (entity.getX() + 1.8 * entity.getLookAngle().x)) + (" " + (entity.getY() + entity.getBbHeight() - 0.1 + 1.8 * entity.getLookAngle().y)) + + (" " + (entity.getZ() + 1.8 * entity.getLookAngle().z)) + " 0.1 0.1 0.1 0.002 4 force @s")); + } + player.getCooldowns().addCooldown(stack.getItem(), 2); + + if (entity instanceof ServerPlayer) { + SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_1P.get(), 2, 1); + SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_3P.get(), 4, 1); + SoundTool.playLocalSound(player, TargetModSounds.M_79_FAR.get(), 6, 1); + SoundTool.playLocalSound(player, TargetModSounds.M_79_VERYFAR.get(), 12, 1); + } + stack.getOrCreateTag().putInt("fire_animation", 2); + stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); } - - if (!entity.level().isClientSide() && entity.getServer() != null) { - entity.getServer().getCommands().performPrefixedCommand( - new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4, entity.getName().getString(), entity.getDisplayName(), - entity.getServer(), entity), - ("particle minecraft:cloud" + (" " + (entity.getX() + 1.8 * entity.getLookAngle().x)) + (" " + (entity.getY() + entity.getBbHeight() - 0.1 + 1.8 * entity.getLookAngle().y)) - + (" " + (entity.getZ() + 1.8 * entity.getLookAngle().z)) + " 0.1 0.1 0.1 0.002 4 force @s")); - } - player.getCooldowns().addCooldown(stack.getItem(), 2); - - if (entity instanceof ServerPlayer) { - SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_1P.get(), 2, 1); - SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_3P.get(), 4, 1); - SoundTool.playLocalSound(player, TargetModSounds.M_79_FAR.get(), 6, 1); - SoundTool.playLocalSound(player, TargetModSounds.M_79_VERYFAR.get(), 12, 1); - } - stack.getOrCreateTag().putInt("fire_animation", 2); - stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); } } } diff --git a/src/main/java/net/mcreator/target/procedures/PlayerReloadProcedure.java b/src/main/java/net/mcreator/target/procedures/PlayerReloadProcedure.java deleted file mode 100644 index 3ebe178f2..000000000 --- a/src/main/java/net/mcreator/target/procedures/PlayerReloadProcedure.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.init.TargetModItems; -import net.mcreator.target.init.TargetModSounds; -import net.mcreator.target.network.TargetModVariables; -import net.mcreator.target.tools.SoundTool; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; - -public class PlayerReloadProcedure { - public static void execute(Entity entity) { - if (entity == null) return; - if (entity instanceof Player player && !player.isSpectator()) { - if (!(entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) { - CompoundTag tag = player.getMainHandItem().getOrCreateTag(); - - if (player.getMainHandItem().getItem() == TargetModItems.MARLIN.get() - && !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem())) - && !tag.getBoolean("reloading") - && tag.getInt("ammo") < 8 - && (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo > 0) { - tag.putBoolean("reloading", true); - tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); - player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 5); - tag.putDouble("prepare", 5); - if (entity instanceof ServerPlayer serverPlayer) { - SoundTool.playLocalSound(serverPlayer, TargetModSounds.MARLIN_START.get(), 100, 1); - } - } - if (player.getMainHandItem().getItem() == TargetModItems.M_870.get() - && !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem())) - && !tag.getBoolean("reloading") - && tag.getInt("ammo") < 8 - && (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo > 0) { - if (tag.getInt("ammo") == 0) { - tag.putDouble("empty_reload", 1); - tag.putBoolean("reloading", true); - tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); - player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 36); - tag.putDouble("prepare", 36); - - if (entity instanceof ServerPlayer serverPlayer) { - SoundTool.playLocalSound(serverPlayer, TargetModSounds.M_870_PREPARE_ALT.get(), 100, 1); - } - } else { - tag.putBoolean("reloading", true); - tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); - if (entity instanceof Player _player) - _player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 7); - tag.putDouble("prepare", 7); - } - } - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java b/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java deleted file mode 100644 index 4efe0098f..000000000 --- a/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.event.GunEventHandler; -import net.mcreator.target.init.TargetModItems; -import net.mcreator.target.init.TargetModSounds; -import net.mcreator.target.init.TargetModTags; -import net.mcreator.target.network.TargetModVariables; -import net.mcreator.target.tools.SoundTool; -import net.minecraft.world.entity.player.Player; - -public class PressFireProcedure { - public static void execute(Player player) { - var mainHandItem = player.getMainHandItem(); - var tag = mainHandItem.getOrCreateTag(); - - TaserfireProcedure.execute(player); - M79fireProcedure.execute(player); - RpgFireProcedure.execute(player); - - if (mainHandItem.is(TargetModTags.Items.GUN)) { - if (tag.getInt("fire_mode") == 1) { - player.getPersistentData().putBoolean("firing", false); - tag.putInt("burst_fire", (int) tag.getDouble("burst_size")); - } else { - player.getPersistentData().putBoolean("firing", true); - } - if (tag.getDouble("force_stop_reloading") == 1 && tag.getBoolean("reloading") && tag.getDouble("prepare") == 0 && tag.getInt("ammo") > 0) { - tag.putDouble("force_stop", 1); - } - } - - - if (mainHandItem.is(TargetModTags.Items.GUN) - && !(mainHandItem.getItem() == TargetModItems.BOCEK.get()) - && !(mainHandItem.getItem() == TargetModItems.MINIGUN.get()) - && tag.getInt("ammo") == 0 - && !tag.getBoolean("reloading")) { - if (!player.level().isClientSide()) { - SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1); - } - } - - if (mainHandItem.getItem() == TargetModItems.MINIGUN.get()) { - if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo == 0) { - if (!player.level().isClientSide()) { - SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1); - } - } - } - - player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.bowPullHold = true; - capability.syncPlayerVariables(player); - }); - -// if (tag.getInt("ammo") == 0) { -// PlayerReloadProcedure.execute(player); -// } - - // 栓动武器左键手动拉栓 - if (mainHandItem.is(TargetModTags.Items.GUN) && tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) { - if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) { - mainHandItem.getOrCreateTag().putInt("bolt_action_anim", mainHandItem.getOrCreateTag().getInt("bolt_action_time")); - GunEventHandler.playGunBoltSounds(player); - } - } - } -}