From 3adbbc266d84936cc4646bf19da4a676f8786f56 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 24 Dec 2024 17:08:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96NBT#PrepareEmptyTime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../atsuishio/superbwarfare/event/GunEventHandler.java | 9 +++++---- .../java/com/atsuishio/superbwarfare/tools/GunsTool.java | 2 +- .../resources/data/superbwarfare/guns/mosin_nagant.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index 890d15cf7..afd835c69 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -548,11 +548,12 @@ public class GunEventHandler { int prepareLoadTime = GunsTool.getGunIntTag(stack, "PrepareLoadTime", 0); tag.putInt("prepare_load", prepareLoadTime + 1); player.getCooldowns().addCooldown(stack.getItem(), prepareLoadTime); - } else if (tag.getDouble("prepare_empty") != 0 && tag.getInt("ammo") == 0) { + } else if (GunsTool.getGunIntTag(stack, "PrepareEmptyTime", 0) != 0 && tag.getInt("ammo") == 0) { // 此处判断空仓换弹,如莫辛纳甘 playGunEmptyPrepareSounds(player); - tag.putInt("prepare", (int) tag.getDouble("prepare_empty") + 1); - player.getCooldowns().addCooldown(stack.getItem(), (int) tag.getDouble("prepare_empty")); + int prepareEmptyTime = GunsTool.getGunIntTag(stack, "PrepareEmptyTime", 0); + tag.putInt("prepare", prepareEmptyTime + 1); + player.getCooldowns().addCooldown(stack.getItem(), prepareEmptyTime); } else { playGunPrepareReloadSounds(player); int prepareTime = GunsTool.getGunIntTag(stack, "PrepareTime", 0); @@ -772,7 +773,7 @@ public class GunEventHandler { double shooterHeight = player.getEyePosition().distanceTo((Vec3.atLowerCornerOf(player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(new Vec3(0, -1, 0).scale(10)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); - ModUtils.queueServerWork((int) (stack.getOrCreateTag().getDouble("prepare_empty") / 2 + 3 + 1.5 * shooterHeight), () -> { + ModUtils.queueServerWork((int) (GunsTool.getGunIntTag(stack, "PrepareEmptyTime", 0) / 2 + 3 + 1.5 * shooterHeight), () -> { if (stack.is(ModTags.Items.SHOTGUN)) { SoundTool.playLocalSound(serverPlayer, ModSounds.SHELL_CASING_SHOTGUN.get(), (float) Math.max(0.75 - 0.12 * shooterHeight, 0), 1); } else if (stack.is(ModTags.Items.SNIPER_RIFLE)) { diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index f8d089cbc..634306ce5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -57,7 +57,7 @@ public class GunsTool { private static final Set STRING_SET = Set.of("EmptyReloadTime", "FireMode", "Weight", "SoundRadius", "BurstSize", "ProjectileAmount", "Spread", "NormalReloadTime", "Headshot", "Semi", "Burst", "Auto", "RecoilX", "RecoilY", "Velocity", "Damage", "BypassesArmor", "RPM", "Magazine", "MinZoom", "MaxZoom", "CustomZoom", "ExplosionDamage", "ExplosionRadius", "BoltActionTime", "ClipLoad", - "PrepareTime", "IterativeTime", "PrepareLoadTime", "FinishTime"); + "PrepareTime", "IterativeTime", "PrepareLoadTime", "FinishTime", "PrepareEmptyTime"); public static void initGun(Level level, ItemStack stack, String location) { if (level.getServer() == null) return; diff --git a/src/main/resources/data/superbwarfare/guns/mosin_nagant.json b/src/main/resources/data/superbwarfare/guns/mosin_nagant.json index ae6c88e90..8a75023e3 100644 --- a/src/main/resources/data/superbwarfare/guns/mosin_nagant.json +++ b/src/main/resources/data/superbwarfare/guns/mosin_nagant.json @@ -12,7 +12,7 @@ "FireMode": 0, "Semi": 1, "PrepareTime": 29, - "prepare_empty": 16, + "PrepareEmptyTime": 16, "IterativeTime": 11, "FinishTime": 18, "BypassesArmor": 0.54,