From 5e17d423f58a0e71a09fe5836586c3ab20bc58f1 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 4 Jan 2025 00:57:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96NBT#CloseHammer=20Power=20Hol?= =?UTF-8?q?dOpen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/item/RpgItemModel.java | 3 ++- .../superbwarfare/event/GunEventHandler.java | 14 ++++++------- .../event/PlayerEventHandler.java | 20 +++++++++---------- .../network/message/FireMessage.java | 19 +++++++++--------- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java index 33635feb8..0e3bf7c86 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java @@ -6,6 +6,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.launcher.RpgItem; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -43,7 +44,7 @@ public class RpgItemModel extends GeoModel { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; - if (stack.getOrCreateTag().getBoolean("close_hammer")) { + if (GunsTool.getGunBooleanTag(stack, "CloseHammer")) { hammer.setRotX(-90 * Mth.DEG_TO_RAD); } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index 7439ab97e..db08f872a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -334,7 +334,7 @@ public class GunEventHandler { stack.getOrCreateTag().putBoolean("is_empty_reloading", true); playGunEmptyReloadSounds(player); } - GunsTool.setGunBooleanTag(stack, "StartReload", false); + data.putBoolean("StartReload", false); } if (data.getInt("ReloadTime") > 0) { @@ -346,19 +346,19 @@ public class GunEventHandler { tag.putBoolean("empty", false); } if (data.getInt("ReloadTime") == 7) { - tag.putBoolean("close_hammer", false); + data.putBoolean("CloseHammer", false); } } if (stack.getItem() == ModItems.MK_14.get()) { if (data.getInt("ReloadTime") == 18) { - GunsTool.setGunBooleanTag(stack, "HoldOpen", false); + data.putBoolean("HoldOpen", false); } } if (stack.getItem() == ModItems.SKS.get()) { if (data.getInt("ReloadTime") == 14) { - GunsTool.setGunBooleanTag(stack, "HoldOpen", false); + data.putBoolean("HoldOpen", false); } } @@ -370,13 +370,13 @@ public class GunEventHandler { if (stack.getItem() == ModItems.GLOCK_17.get() || stack.getItem() == ModItems.GLOCK_18.get() || stack.getItem() == ModItems.M_1911.get()) { if (data.getInt("ReloadTime") == 5) { - GunsTool.setGunBooleanTag(stack, "HoldOpen", false); + data.putBoolean("HoldOpen", false); } } if (stack.getItem() == ModItems.QBZ_95.get()) { if (data.getInt("ReloadTime") == 14) { - GunsTool.setGunBooleanTag(stack, "HoldOpen", false); + data.putBoolean("HoldOpen", false); } } @@ -390,7 +390,7 @@ public class GunEventHandler { } else { playGunEmptyReload(player); } - GunsTool.setGunBooleanTag(stack, "StartReload", false); + data.putBoolean("StartReload", false); } stack.addTagElement("GunData", data); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java index d249df5d4..bffcf0c80 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java @@ -241,16 +241,16 @@ public class PlayerEventHandler { } private static void handleBocekPulling(Player player) { - ItemStack mainHandItem = player.getMainHandItem(); - CompoundTag tag = mainHandItem.getOrCreateTag(); + ItemStack stack = player.getMainHandItem(); + CompoundTag tag = stack.getOrCreateTag(); if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).bowPullHold) { - if (mainHandItem.getItem() == ModItems.BOCEK.get() + if (stack.getItem() == ModItems.BOCEK.get() && tag.getInt("max_ammo") > 0 - && !player.getCooldowns().isOnCooldown(mainHandItem.getItem()) - && tag.getDouble("power") < 12 + && !player.getCooldowns().isOnCooldown(stack.getItem()) + && GunsTool.getGunDoubleTag(stack, "Power") < 12 ) { - tag.putDouble("power", tag.getDouble("power") + 1); + GunsTool.setGunDoubleTag(stack, "Power", GunsTool.getGunDoubleTag(stack, "Power") + 1); player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.bowPull = true; @@ -259,15 +259,15 @@ public class PlayerEventHandler { }); player.setSprinting(false); } - if (tag.getDouble("power") == 1) { + if (GunsTool.getGunDoubleTag(stack, "Power") == 1) { if (!player.level().isClientSide() && player instanceof ServerPlayer serverPlayer) { SoundTool.playLocalSound(serverPlayer, ModSounds.BOCEK_PULL_1P.get(), 2f, 1f); player.level().playSound(null, player.blockPosition(), ModSounds.BOCEK_PULL_3P.get(), SoundSource.PLAYERS, 0.5f, 1); } } } else { - if (mainHandItem.getItem() == ModItems.BOCEK.get()) { - tag.putDouble("power", 0); + if (stack.getItem() == ModItems.BOCEK.get()) { + GunsTool.setGunDoubleTag(stack, "Power", 0); } player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.bowPull = false; @@ -275,7 +275,7 @@ public class PlayerEventHandler { }); } - if (tag.getDouble("power") > 0) { + if (GunsTool.getGunDoubleTag(stack, "Power") > 0) { player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.tacticalSprint = false; capability.syncPlayerVariables(player); 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 1b1b46d47..db7321ed0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/FireMessage.java @@ -182,8 +182,7 @@ public class FireMessage { SoundTool.stopSound(serverPlayer, ModSounds.BOCEK_PULL_3P.getId(), SoundSource.PLAYERS); } - if (stack.getOrCreateTag().getDouble("power") >= 6) { - stack.getOrCreateTag().putDouble("speed", stack.getOrCreateTag().getDouble("power")); + if (GunsTool.getGunDoubleTag(stack, "Power") >= 6) { if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) { spawnBullet(player); @@ -206,9 +205,9 @@ public class FireMessage { } } - player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 7); - player.getMainHandItem().getOrCreateTag().putInt("arrow_empty", 7); - player.getMainHandItem().getOrCreateTag().putDouble("power", 0); + player.getCooldowns().addCooldown(stack.getItem(), 7); + stack.getOrCreateTag().putInt("arrow_empty", 7); + GunsTool.setGunDoubleTag(stack, "Power", 0); int count = 0; for (var inv : player.getInventory().items) { @@ -234,7 +233,7 @@ public class FireMessage { CompoundTag tag = stack.getOrCreateTag(); var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO); float headshot = (float) GunsTool.getGunDoubleTag(stack, "Headshot", 0); - float velocity = 2 * (float) tag.getDouble("speed") * (float) perkSpeed(stack); + float velocity = 2 * (float) GunsTool.getGunDoubleTag(stack, "Power", 6) * (float) perkSpeed(stack); float bypassArmorRate = (float) GunsTool.getGunDoubleTag(stack, "BypassesArmor", 0); double damage; boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom; @@ -242,11 +241,13 @@ public class FireMessage { float spread; if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) { spread = 0.01f; - damage = 0.08333333 * GunsTool.getGunDoubleTag(stack, "Damage", 0) * tag.getDouble("speed") * perkDamage(stack); + damage = 0.08333333 * GunsTool.getGunDoubleTag(stack, "Damage", 0) * + GunsTool.getGunDoubleTag(stack, "Power", 6) * perkDamage(stack); } else { spread = perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.5f : 2.5f; damage = (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.08333333 : 0.008333333) * - GunsTool.getGunDoubleTag(stack, "Damage", 0) * tag.getDouble("speed") * perkDamage(stack); + GunsTool.getGunDoubleTag(stack, "Damage", 0) * + GunsTool.getGunDoubleTag(stack, "Power", 6) * perkDamage(stack); } ProjectileEntity projectile = new ProjectileEntity(player.level()) @@ -443,7 +444,7 @@ public class FireMessage { if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 1) { tag.putBoolean("empty", true); - tag.putBoolean("close_hammer", true); + GunsTool.setGunBooleanTag(stack, "CloseHammer", true); } player.getCooldowns().addCooldown(stack.getItem(), 10);