From ba4cadccb34d3ea29fe7426c0e6be80227122b10 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 4 Jan 2025 01:33:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96NBT#BoltActionTick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/MosinNagantItemModel.java | 3 ++- .../superbwarfare/client/model/item/Ntw20Model.java | 2 +- .../atsuishio/superbwarfare/event/ClientEventHandler.java | 3 ++- .../atsuishio/superbwarfare/event/GunEventHandler.java | 8 ++++---- .../atsuishio/superbwarfare/event/LivingEventHandler.java | 6 +++--- .../superbwarfare/item/gun/handgun/Trachelium.java | 2 +- .../superbwarfare/item/gun/rifle/MarlinItem.java | 2 +- .../superbwarfare/item/gun/shotgun/M870Item.java | 2 +- .../atsuishio/superbwarfare/item/gun/sniper/K98Item.java | 4 ++-- .../atsuishio/superbwarfare/item/gun/sniper/M98bItem.java | 4 ++-- .../superbwarfare/item/gun/sniper/MosinNagantItem.java | 4 ++-- .../superbwarfare/item/gun/sniper/Ntw20Item.java | 4 ++-- .../superbwarfare/item/gun/sniper/SentinelItem.java | 4 ++-- .../superbwarfare/network/message/FireMessage.java | 4 ++-- .../superbwarfare/network/message/ReloadMessage.java | 2 +- 15 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java index 9d80971d1..2fa587b82 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java @@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.gun.sniper.MosinNagantItem; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -121,7 +122,7 @@ public class MosinNagantItemModel extends GeoModel { float numP = (float) (1 - 0.81 * zt); // TODO 修改本nbt - if (stack.getOrCreateTag().getBoolean("reloading") || stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (stack.getOrCreateTag().getBoolean("reloading") || GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java index 162d6ce91..541978e2c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java @@ -112,7 +112,7 @@ public class Ntw20Model extends GeoModel { float numR = (float) (1 - 0.92 * zt); float numP = (float) (1 - 0.88 * zt); - if (GunsTool.getGunIntTag(stack, "ReloadTime") > 0 || stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "ReloadTime") > 0 || GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 0fcb6b695..2f94bc280 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -333,7 +333,8 @@ public class ClientEventHandler { int cooldown = (int) (1000 / rps); //左轮类 - if (clientTimer.getProgress() == 0 && stack.is(ModTags.Items.REVOLVER) && ((holdFire && !stack.getOrCreateTag().getBoolean("DA")) || (stack.getOrCreateTag().getInt("bolt_action_anim") < 7 && stack.getOrCreateTag().getInt("bolt_action_anim") > 2) || stack.getOrCreateTag().getBoolean("canImmediatelyShoot"))) { + if (clientTimer.getProgress() == 0 && stack.is(ModTags.Items.REVOLVER) && ((holdFire && !stack.getOrCreateTag().getBoolean("DA")) + || (GunsTool.getGunIntTag(stack, "BoltActionTick") < 7 && GunsTool.getGunIntTag(stack, "BoltActionTick") > 2) || stack.getOrCreateTag().getBoolean("canImmediatelyShoot"))) { revolverPreTime = Mth.clamp(revolverPreTime + 0.3 * times, 0, 1); revolverWheelPreTime = Mth.clamp(revolverWheelPreTime + 0.32 * times, 0, revolverPreTime > 0.7 ? 1 : 0.55); } else if (!stack.getOrCreateTag().getBoolean("DA") && !stack.getOrCreateTag().getBoolean("canImmediatelyShoot")) { diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index e23ecf9b3..5c2244d4a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -64,15 +64,15 @@ public class GunEventHandler { private static void handleGunBolt(Player player) { ItemStack stack = player.getMainHandItem(); if (stack.is(ModTags.Items.NORMAL_GUN)) { - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { - stack.getOrCreateTag().putInt("bolt_action_anim", stack.getOrCreateTag().getInt("bolt_action_anim") - 1); + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { + GunsTool.setGunIntTag(stack, "BoltActionTick", GunsTool.getGunIntTag(stack, "BoltActionTick") - 1); } - if (stack.getItem() == ModItems.MARLIN.get() && stack.getOrCreateTag().getInt("bolt_action_anim") == 9) { + if (stack.getItem() == ModItems.MARLIN.get() && GunsTool.getGunIntTag(stack, "BoltActionTick") == 9) { stack.getOrCreateTag().putBoolean("empty", false); } - if (stack.getOrCreateTag().getInt("bolt_action_anim") == 1) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") == 1) { GunsTool.setGunBooleanTag(stack, "NeedBoltAction", false); if (stack.is(ModTags.Items.REVOLVER)) { stack.getOrCreateTag().putBoolean("canImmediatelyShoot", true); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index fd30283c1..29aca8461 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -329,12 +329,12 @@ public class LivingEventHandler { return; } var oldTags = oldStack.getTag(); + CompoundTag data = oldTags.getCompound("GunData"); if (GunsTool.getGunDoubleTag(oldStack, "BoltActionTime", 0) > 0) { - oldTags.putInt("bolt_action_anim", 0); + data.putInt("BoltActionTick", 0); } - CompoundTag data = oldTags.getCompound("GunData"); data.putInt("ReloadTime", 0); oldStack.addTagElement("GunData", data); @@ -367,7 +367,7 @@ public class LivingEventHandler { player.getPersistentData().putDouble("noRun", 40); newStack.getOrCreateTag().putBoolean("draw", true); if (GunsTool.getGunIntTag(newStack, "BoltActionTime", 0) > 0) { - newStack.getOrCreateTag().putInt("bolt_action_anim", 0); + GunsTool.setGunIntTag(newStack, "BoltActionTick", 0); } newStack.getOrCreateTag().putBoolean("is_normal_reloading", false); newStack.getOrCreateTag().putBoolean("is_empty_reloading", false); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java index d7c2f95ea..f6810d821 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java @@ -130,7 +130,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { boolean stock = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK) == 2; boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) > 0 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE) > 0; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { if (stock) { if (grip) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action_stock_grip")); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java index 8897a5703..eea7326af 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java @@ -75,7 +75,7 @@ public class MarlinItem extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.marlin.shift")); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java index e328aabe6..a26270518 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java @@ -79,7 +79,7 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m870.shift")); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java index 061eedfe3..3f3c36494 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java @@ -73,7 +73,7 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.k98.shift")); } @@ -114,7 +114,7 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem { && stack.getOrCreateTag().getInt("reload_stage") != 3 && ClientEventHandler.drawTime < 0.01 && !stack.getOrCreateTag().getBoolean("reloading")) { - if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.run_fast")); } else { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.run")); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java index e111c6717..eeaf713e5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java @@ -74,7 +74,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.shift")); } @@ -98,7 +98,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem { if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading")) && ClientEventHandler.drawTime < 0.01) { - if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m98b.run_fast")); } else { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m98b.run")); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java index cfc26bbf0..572dba2d0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java @@ -73,7 +73,7 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.mosin.shift")); } @@ -114,7 +114,7 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem { && stack.getOrCreateTag().getInt("reload_stage") != 3 && ClientEventHandler.drawTime < 0.01 && !stack.getOrCreateTag().getBoolean("reloading")) { - if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mosin.run_fast")); } else { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mosin.run")); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java index dfc68964f..59c3dca1f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java @@ -79,7 +79,7 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.ntw_20.shift")); } @@ -104,7 +104,7 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem { && player.getPersistentData().getDouble("noRun") == 0 && !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading")) && ClientEventHandler.drawTime < 0.01) { - if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.ntw_20.run_fast")); } else { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.ntw_20.run")); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java index 97ac2b2e6..117c192e0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java @@ -124,7 +124,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; - if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { + if (GunsTool.getGunIntTag(stack, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift")); } @@ -153,7 +153,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem { && player.getPersistentData().getDouble("noRun") == 0 && !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading")) && !GunsTool.getGunBooleanTag(stack, "Charging") && ClientEventHandler.drawTime < 0.01) { - if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sentinel.run_fast")); } else { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sentinel.run")); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java index 6d76b1610..cbea0740f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java @@ -144,12 +144,12 @@ public class FireMessage { private static void handleGunBolt(Player player, ItemStack stack) { if (GunsTool.getGunIntTag(stack, "BoltActionTime", 0) > 0 && GunsTool.getGunIntTag(stack, "Ammo", 0) > (stack.is(ModTags.Items.REVOLVER) ? -1 : 0) - && stack.getOrCreateTag().getInt("bolt_action_anim") == 0 + && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0 && !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading")) && !stack.getOrCreateTag().getBoolean("reloading") && !stack.getOrCreateTag().getBoolean("charging")) { if (!player.getCooldowns().isOnCooldown(stack.getItem()) && GunsTool.getGunBooleanTag(stack, "NeedBoltAction", false)) { - stack.getOrCreateTag().putInt("bolt_action_anim", GunsTool.getGunIntTag(stack, "BoltActionTime", 0) + 1); + GunsTool.setGunIntTag(stack, "BoltActionTick", GunsTool.getGunIntTag(stack, "BoltActionTime", 0) + 1); GunEventHandler.playGunBoltSounds(player); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java index d1c2dba46..dad2b396b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java @@ -53,7 +53,7 @@ public class ReloadMessage { && stack.getItem() instanceof GunItem gunItem && !GunsTool.getGunBooleanTag(stack, "Charging") && GunsTool.getGunIntTag(stack, "ReloadTime") == 0 - && stack.getOrCreateTag().getInt("bolt_action_anim") == 0 + && GunsTool.getGunIntTag(stack, "BoltActionTick") == 0 ) { CompoundTag tag = stack.getOrCreateTag();