diff --git a/src/main/java/net/mcreator/target/event/GunEventHandler.java b/src/main/java/net/mcreator/target/event/GunEventHandler.java index 61111e15d..09b05ab51 100644 --- a/src/main/java/net/mcreator/target/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/target/event/GunEventHandler.java @@ -161,6 +161,9 @@ public class GunEventHandler { for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) { gunShoot(player); } + + stack.getOrCreateTag().putBoolean("shoot",true); + } /* @@ -230,6 +233,8 @@ public class GunEventHandler { } } + stack.getOrCreateTag().putBoolean("shoot",true); + for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) { gunShoot(player); } @@ -320,12 +325,6 @@ public class GunEventHandler { public static void gunShoot(Player player) { ItemStack heldItem = player.getMainHandItem(); - player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.recoilHorizon = 2 * Math.random() - 1; - capability.recoil = 0.1; - capability.firing = 1; - capability.syncPlayerVariables(player); - }); if (!player.level().isClientSide()) { float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot"); @@ -786,5 +785,4 @@ public class GunEventHandler { tag.putBoolean("sentinel_is_charging", false); } } - } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index 6141344d3..769dde949 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -294,6 +294,16 @@ public class PlayerEventHandler { Runnable recoilRunnable = () -> { while (recoilTimer[0] < recoilDuration) { + if (tag.getBoolean("shoot")) { + player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.recoilHorizon = 2 * Math.random() - 1; + capability.recoil = 0.1; + capability.firing = 1; + capability.syncPlayerVariables(player); + }); + tag.putBoolean("shoot",false); + } + /* 开火动画计时器 */ @@ -355,6 +365,12 @@ public class PlayerEventHandler { player.yRotO = player.getYRot(); } + double finalRecoil = recoil; + player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(c -> { + c.recoil = finalRecoil; + c.syncPlayerVariables(player); + }); + /* 计算散布 */ @@ -407,13 +423,6 @@ public class PlayerEventHandler { player.getAttribute(TargetModAttributes.SPREAD.get()).setBaseValue(0); } - - double finalRecoil = recoil; - player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(c -> { - c.recoil = finalRecoil; - c.syncPlayerVariables(player); - }); - recoilTimer[0]++; try { Thread.sleep(sleepTime); 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 68c8b2389..9fd28456c 100644 --- a/src/main/java/net/mcreator/target/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/target/network/message/FireMessage.java @@ -172,6 +172,9 @@ public class FireMessage { player.playSound(TargetModSounds.BOCEK_ZOOM_FIRE_3P.get(), 2, 1); } } else { + + stack.getOrCreateTag().putBoolean("shoot",true); + for (int index0 = 0; index0 < 10; index0++) { spawnBullet(player); } @@ -201,12 +204,6 @@ public class FireMessage { private static void spawnBullet(Player player) { ItemStack heldItem = player.getMainHandItem(); - player.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(player); - }); if (player.level().isClientSide()) return; @@ -240,12 +237,7 @@ public class FireMessage { if (!stack.getOrCreateTag().getBoolean("reloading")) { if (!player.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0 && ItemNBTTool.getInt(stack, "Power", 1200) > 400) { - player.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(player); - }); + player.getCooldowns().addCooldown(stack.getItem(), 5); if (player instanceof ServerPlayer serverPlayer) { @@ -266,6 +258,8 @@ public class FireMessage { level.addFreshEntity(taserBulletProjectile); } + stack.getOrCreateTag().putBoolean("shoot",true); + stack.getOrCreateTag().putInt("fire_animation", 4); stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); ItemNBTTool.setInt(stack, "Power", ItemNBTTool.getInt(stack, "Power", 1200) - 400); @@ -279,12 +273,6 @@ public class FireMessage { ItemStack stack = player.getMainHandItem(); if (!stack.getOrCreateTag().getBoolean("reloading")) { if (!player.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0) { - player.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(player); - }); Level level = player.level(); if (!level.isClientSide()) { @@ -313,6 +301,9 @@ public class FireMessage { serverPlayer.level().playSound(null, serverPlayer.getOnPos(), TargetModSounds.M_79_FAR.get(), SoundSource.PLAYERS, 6, 1); serverPlayer.level().playSound(null, serverPlayer.getOnPos(), TargetModSounds.M_79_VERYFAR.get(), SoundSource.PLAYERS, 12, 1); } + + stack.getOrCreateTag().putBoolean("shoot",true); + stack.getOrCreateTag().putInt("fire_animation", 2); stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); } @@ -327,12 +318,6 @@ public class FireMessage { CompoundTag tag = mainHandItem.getOrCreateTag(); if (!tag.getBoolean("reloading") && !player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && tag.getInt("ammo") > 0) { - player.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(player); - }); if (!level.isClientSide()) { int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), mainHandItem); @@ -366,6 +351,8 @@ public class FireMessage { serverPlayer.level().playSound(null, serverPlayer.getOnPos(), TargetModSounds.RPG_VERYFAR.get(), SoundSource.PLAYERS, 16, 1); } + tag.putBoolean("shoot",true); + tag.putInt("fire_animation", 2); tag.putInt("ammo", tag.getInt("ammo") - 1); } diff --git a/src/main/resources/assets/target/textures/item/aa12_new.png b/src/main/resources/assets/target/textures/item/aa12_new.png index ec885edf0..11e03357b 100644 Binary files a/src/main/resources/assets/target/textures/item/aa12_new.png and b/src/main/resources/assets/target/textures/item/aa12_new.png differ diff --git a/src/main/resources/assets/target/textures/item/abekiri.png b/src/main/resources/assets/target/textures/item/abekiri.png index 6383b8377..16c222839 100644 Binary files a/src/main/resources/assets/target/textures/item/abekiri.png and b/src/main/resources/assets/target/textures/item/abekiri.png differ diff --git a/src/main/resources/assets/target/textures/item/ak47.png b/src/main/resources/assets/target/textures/item/ak47.png index a8116c529..ac40a1369 100644 Binary files a/src/main/resources/assets/target/textures/item/ak47.png and b/src/main/resources/assets/target/textures/item/ak47.png differ diff --git a/src/main/resources/assets/target/textures/item/bocek.png b/src/main/resources/assets/target/textures/item/bocek.png index a079b9349..46688ac79 100644 Binary files a/src/main/resources/assets/target/textures/item/bocek.png and b/src/main/resources/assets/target/textures/item/bocek.png differ diff --git a/src/main/resources/assets/target/textures/item/devotion.png b/src/main/resources/assets/target/textures/item/devotion.png index 40569f697..937c7252e 100644 Binary files a/src/main/resources/assets/target/textures/item/devotion.png and b/src/main/resources/assets/target/textures/item/devotion.png differ diff --git a/src/main/resources/assets/target/textures/item/hk416.png b/src/main/resources/assets/target/textures/item/hk416.png index c869797ee..666e2c2e7 100644 Binary files a/src/main/resources/assets/target/textures/item/hk416.png and b/src/main/resources/assets/target/textures/item/hk416.png differ diff --git a/src/main/resources/assets/target/textures/item/huntingrifle.png b/src/main/resources/assets/target/textures/item/huntingrifle.png index 784a869d3..f34ebe01c 100644 Binary files a/src/main/resources/assets/target/textures/item/huntingrifle.png and b/src/main/resources/assets/target/textures/item/huntingrifle.png differ diff --git a/src/main/resources/assets/target/textures/item/kraber.png b/src/main/resources/assets/target/textures/item/kraber.png index 6aa3d4883..9a37fc94e 100644 Binary files a/src/main/resources/assets/target/textures/item/kraber.png and b/src/main/resources/assets/target/textures/item/kraber.png differ diff --git a/src/main/resources/assets/target/textures/item/m4.png b/src/main/resources/assets/target/textures/item/m4.png index 15e202f3e..e9c5de37c 100644 Binary files a/src/main/resources/assets/target/textures/item/m4.png and b/src/main/resources/assets/target/textures/item/m4.png differ diff --git a/src/main/resources/assets/target/textures/item/m79.png b/src/main/resources/assets/target/textures/item/m79.png index e80cc8c0c..ac3b384ae 100644 Binary files a/src/main/resources/assets/target/textures/item/m79.png and b/src/main/resources/assets/target/textures/item/m79.png differ diff --git a/src/main/resources/assets/target/textures/item/m870.png b/src/main/resources/assets/target/textures/item/m870.png index 15c55f8c7..739db4486 100644 Binary files a/src/main/resources/assets/target/textures/item/m870.png and b/src/main/resources/assets/target/textures/item/m870.png differ diff --git a/src/main/resources/assets/target/textures/item/m98b.png b/src/main/resources/assets/target/textures/item/m98b.png index 279e64627..2c75bf727 100644 Binary files a/src/main/resources/assets/target/textures/item/m98b.png and b/src/main/resources/assets/target/textures/item/m98b.png differ diff --git a/src/main/resources/assets/target/textures/item/marlin.png b/src/main/resources/assets/target/textures/item/marlin.png index 9231258a8..b6971562e 100644 Binary files a/src/main/resources/assets/target/textures/item/marlin.png and b/src/main/resources/assets/target/textures/item/marlin.png differ diff --git a/src/main/resources/assets/target/textures/item/minigun.png b/src/main/resources/assets/target/textures/item/minigun.png index 6736ee6af..ab7938000 100644 Binary files a/src/main/resources/assets/target/textures/item/minigun.png and b/src/main/resources/assets/target/textures/item/minigun.png differ diff --git a/src/main/resources/assets/target/textures/item/mk14.png b/src/main/resources/assets/target/textures/item/mk14.png index 68bf13c35..23bb2924e 100644 Binary files a/src/main/resources/assets/target/textures/item/mk14.png and b/src/main/resources/assets/target/textures/item/mk14.png differ diff --git a/src/main/resources/assets/target/textures/item/rpg7.png b/src/main/resources/assets/target/textures/item/rpg7.png index 5c80eb0d3..252c5cc65 100644 Binary files a/src/main/resources/assets/target/textures/item/rpg7.png and b/src/main/resources/assets/target/textures/item/rpg7.png differ diff --git a/src/main/resources/assets/target/textures/item/rpk.png b/src/main/resources/assets/target/textures/item/rpk.png index a3501505d..761e97cf7 100644 Binary files a/src/main/resources/assets/target/textures/item/rpk.png and b/src/main/resources/assets/target/textures/item/rpk.png differ diff --git a/src/main/resources/assets/target/textures/item/sentinel.png b/src/main/resources/assets/target/textures/item/sentinel.png index 48469a6f2..0c2293773 100644 Binary files a/src/main/resources/assets/target/textures/item/sentinel.png and b/src/main/resources/assets/target/textures/item/sentinel.png differ diff --git a/src/main/resources/assets/target/textures/item/sks.png b/src/main/resources/assets/target/textures/item/sks.png index 2e3d673c9..181d6b8cc 100644 Binary files a/src/main/resources/assets/target/textures/item/sks.png and b/src/main/resources/assets/target/textures/item/sks.png differ diff --git a/src/main/resources/assets/target/textures/item/svd.png b/src/main/resources/assets/target/textures/item/svd.png index 418bca6d8..a0e8d1f57 100644 Binary files a/src/main/resources/assets/target/textures/item/svd.png and b/src/main/resources/assets/target/textures/item/svd.png differ diff --git a/src/main/resources/assets/target/textures/item/tasergun.png b/src/main/resources/assets/target/textures/item/tasergun.png index 7ef2d85e6..49791febc 100644 Binary files a/src/main/resources/assets/target/textures/item/tasergun.png and b/src/main/resources/assets/target/textures/item/tasergun.png differ diff --git a/src/main/resources/assets/target/textures/item/trachelium_texture.png b/src/main/resources/assets/target/textures/item/trachelium_texture.png index 0f26a502c..c80948958 100644 Binary files a/src/main/resources/assets/target/textures/item/trachelium_texture.png and b/src/main/resources/assets/target/textures/item/trachelium_texture.png differ diff --git a/src/main/resources/assets/target/textures/item/vector.png b/src/main/resources/assets/target/textures/item/vector.png index 897e45379..ee34a6abb 100644 Binary files a/src/main/resources/assets/target/textures/item/vector.png and b/src/main/resources/assets/target/textures/item/vector.png differ