diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MinigunItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MinigunItemModel.java index f76c46317..ca9bffb64 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MinigunItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MinigunItemModel.java @@ -4,6 +4,7 @@ import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.gun.machinegun.MinigunItem; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -56,7 +57,7 @@ public class MinigunItemModel extends GeoModel { double fp = ClientEventHandler.firePos; double fr = ClientEventHandler.fireRot; - int rpm = stack.getOrCreateTag().getInt("rpm"); + int rpm = GunsTool.getGunIntTag(stack, "RPM", 0); gun.setRotZ(gun.getRotZ() + times * -0.07f * ((float) rpm / 1200) * ClientEventHandler.miniGunRot); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/AmmoBarOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/AmmoBarOverlay.java index 17e792f9d..131cb35dd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/AmmoBarOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/AmmoBarOverlay.java @@ -1,14 +1,14 @@ package com.atsuishio.superbwarfare.client.screens; -import com.atsuishio.superbwarfare.init.ModKeyMappings; -import com.atsuishio.superbwarfare.network.ModVariables; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.mojang.blaze3d.vertex.PoseStack; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.config.client.DisplayConfig; import com.atsuishio.superbwarfare.init.ModItems; +import com.atsuishio.superbwarfare.init.ModKeyMappings; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.network.ModVariables; +import com.atsuishio.superbwarfare.tools.GunsTool; +import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; @@ -95,7 +95,7 @@ public class AmmoBarOverlay { // 渲染加特林射速 event.getGuiGraphics().drawString( Minecraft.getInstance().font, - stack.getOrCreateTag().getInt("rpm") + " RPM", + GunsTool.getGunIntTag(stack, "RPM", 0) + " RPM", w - 111f, h - 20, 0xFFFFFF, @@ -125,7 +125,7 @@ public class AmmoBarOverlay { } else { event.getGuiGraphics().drawString( Minecraft.getInstance().font, - stack.getOrCreateTag().getBoolean("DA") ? Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD) : Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD), + stack.getOrCreateTag().getBoolean("DA") ? Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD) : Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD), w - 96, h - 20, 0xFFFFFF, diff --git a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java index 1258212a2..f1b46dbae 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java @@ -105,7 +105,7 @@ public class ClientGunImageTooltip implements ClientTooltipComponent { } else { return Component.translatable("des.superbwarfare.tips.rpm").withStyle(ChatFormatting.GRAY) .append(Component.literal("").withStyle(ChatFormatting.RESET)) - .append(Component.literal(new DecimalFormat("##").format(ItemNBTTool.getDouble(stack, "rpm", 0) + ItemNBTTool.getDouble(stack, "customRpm", 0))) + .append(Component.literal(new DecimalFormat("##").format(GunsTool.getGunIntTag(stack, "RPM", 0) + ItemNBTTool.getDouble(stack, "customRpm", 0))) .withStyle(ChatFormatting.GREEN)); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 4dd6656bd..dfc4dec17 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -192,14 +192,10 @@ public class ClientEventHandler { return; } ItemStack stack = player.getMainHandItem(); - if (stack.getItem() == ModItems.MINIGUN.get()) { + if (stack.is(ModItems.MINIGUN.get())) { if (holdFire || zoom) { miniGunRot = Math.min(miniGunRot + 5, 21); - float rpm = 1; - - if (player.getMainHandItem().is(ModItems.MINIGUN.get())) { - rpm = (float) player.getMainHandItem().getOrCreateTag().getInt("rpm") / 3600; - } + float rpm = (float) GunsTool.getGunIntTag(stack, "RPM", 0) / 3600; player.playSound(ModSounds.MINIGUN_ROT.get(), 1, 0.7f + rpm); } } @@ -269,7 +265,7 @@ public class ClientEventHandler { cantFireTime = Mth.clamp(cantFireTime - 6 * speed * times, 0, 40); } - int rpm = (int) (stack.getOrCreateTag().getDouble("rpm") + customRpm); + int rpm = GunsTool.getGunIntTag(stack, "RPM", 0) + customRpm; if (rpm == 0) { rpm = 600; } @@ -900,8 +896,8 @@ public class ClientEventHandler { double rpm = 1; - if (entity.getMainHandItem().is(ModItems.MINIGUN.get())) { - rpm = (double) entity.getMainHandItem().getOrCreateTag().getInt("rpm") / 1800; + if (stack.is(ModItems.MINIGUN.get())) { + rpm = (double) GunsTool.getGunIntTag(stack, "RPM", 0) / 1800; } float[] shake = {0, 0}; @@ -991,7 +987,7 @@ public class ClientEventHandler { double rpm = 1; if (stack.is(ModItems.MINIGUN.get())) { - rpm = (double) stack.getOrCreateTag().getInt("rpm") / 1800; + rpm = (double) GunsTool.getGunIntTag(stack, "RPM", 0) / 1800; } float gunRecoilX = (float) GunsTool.getGunDoubleTag(stack, "RecoilX", 0) * 60; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/AdjustZoomFovMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/AdjustZoomFovMessage.java index a6917fd7c..fcd44895b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/AdjustZoomFovMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/AdjustZoomFovMessage.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.network.message; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; +import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.tools.SoundTool; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -11,6 +12,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent; +import java.text.DecimalFormat; import java.util.function.Supplier; public class AdjustZoomFovMessage { @@ -45,20 +47,21 @@ public class AdjustZoomFovMessage { double minRpm = 300; double maxRpm = 2400; - tag.putInt("rpm", (int) Mth.clamp(tag.getInt("rpm") + 50 * message.scroll, minRpm, maxRpm)); - if (tag.getInt("rpm") == 1150) { - tag.putInt("rpm", 1145); + GunsTool.setGunIntTag(stack, "RPM", (int) Mth.clamp(GunsTool.getGunIntTag(stack, "RPM", 0) + 50 * message.scroll, minRpm, maxRpm)); + if (GunsTool.getGunIntTag(stack, "RPM", 0) == 1150) { + GunsTool.setGunIntTag(stack, "RPM", 1145); } - if (tag.getInt("rpm") == 1195) { - tag.putInt("rpm", 1200); + if (GunsTool.getGunIntTag(stack, "RPM", 0) == 1195) { + GunsTool.setGunIntTag(stack, "RPM", 1200); } - if (tag.getInt("rpm") == 1095) { - tag.putInt("rpm", 1100); + if (GunsTool.getGunIntTag(stack, "RPM", 0) == 1095) { + GunsTool.setGunIntTag(stack, "RPM", 1100); } - player.displayClientMessage(Component.literal("Rpm:" + new java.text.DecimalFormat("##").format(tag.getInt("rpm"))), true); - if (tag.getInt("rpm") > minRpm && tag.getInt("rpm") < maxRpm) { + player.displayClientMessage(Component.literal("RPM: " + new DecimalFormat("##").format(GunsTool.getGunIntTag(stack, "RPM", 0))), true); + int rpm = GunsTool.getGunIntTag(stack, "RPM", 0); + if (rpm > minRpm && rpm < maxRpm) { SoundTool.playLocalSound(player, ModSounds.ADJUST_FOV.get(), 1f, 0.7f); } } else { diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index 9751c9c5e..d897d85d3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -55,7 +55,8 @@ public class GunsTool { // TODO 临时使用,移植完毕后删除 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"); + "Spread", "NormalReloadTime", "Headshot", "Semi", "Burst", "Auto", "RecoilX", "RecoilY", "Velocity", "Damage", "BypassesArmor", + "RPM"); public static void initGun(Level level, ItemStack stack, String location) { if (level.getServer() == null) return; diff --git a/src/main/resources/data/superbwarfare/guns/aa_12.json b/src/main/resources/data/superbwarfare/guns/aa_12.json index ff5913b80..c91a5ca3a 100644 --- a/src/main/resources/data/superbwarfare/guns/aa_12.json +++ b/src/main/resources/data/superbwarfare/guns/aa_12.json @@ -15,5 +15,5 @@ "EmptyReloadTime": 85, "BypassesArmor": 0.05, "SoundRadius": 18, - "rpm": 360 + "RPM": 360 } diff --git a/src/main/resources/data/superbwarfare/guns/abekiri.json b/src/main/resources/data/superbwarfare/guns/abekiri.json index 83ec63af1..07e849ac0 100644 --- a/src/main/resources/data/superbwarfare/guns/abekiri.json +++ b/src/main/resources/data/superbwarfare/guns/abekiri.json @@ -14,5 +14,5 @@ "EmptyReloadTime": 83, "BypassesArmor": 0.01, "SoundRadius": 16, - "rpm": 600 + "RPM": 600 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/ak_12.json b/src/main/resources/data/superbwarfare/guns/ak_12.json index dc8f77f89..24c45c4fa 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_12.json +++ b/src/main/resources/data/superbwarfare/guns/ak_12.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 58, "BypassesArmor": 0.23, "SoundRadius": 12, - "rpm": 700 + "RPM": 700 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/ak_47.json b/src/main/resources/data/superbwarfare/guns/ak_47.json index 6f683fb1b..f8d863291 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_47.json +++ b/src/main/resources/data/superbwarfare/guns/ak_47.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 65, "BypassesArmor": 0.2, "SoundRadius": 14, - "rpm": 600 + "RPM": 600 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/devotion.json b/src/main/resources/data/superbwarfare/guns/devotion.json index fb315cc86..33a97349c 100644 --- a/src/main/resources/data/superbwarfare/guns/devotion.json +++ b/src/main/resources/data/superbwarfare/guns/devotion.json @@ -14,5 +14,5 @@ "EmptyReloadTime": 95, "BypassesArmor": 0.25, "SoundRadius": 13, - "rpm": 400 + "RPM": 400 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/glock_17.json b/src/main/resources/data/superbwarfare/guns/glock_17.json index 4c28e5c0f..ac3516002 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_17.json +++ b/src/main/resources/data/superbwarfare/guns/glock_17.json @@ -13,5 +13,5 @@ "EmptyReloadTime": 35, "BypassesArmor": 0.15, "SoundRadius": 8, - "rpm": 400 + "RPM": 400 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/glock_18.json b/src/main/resources/data/superbwarfare/guns/glock_18.json index 7667a32ab..c35bf1195 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_18.json +++ b/src/main/resources/data/superbwarfare/guns/glock_18.json @@ -14,5 +14,5 @@ "EmptyReloadTime": 35, "BypassesArmor": 0.15, "SoundRadius": 8, - "rpm": 1300 + "RPM": 1300 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/hk_416.json b/src/main/resources/data/superbwarfare/guns/hk_416.json index 396553553..7e79b7d4d 100644 --- a/src/main/resources/data/superbwarfare/guns/hk_416.json +++ b/src/main/resources/data/superbwarfare/guns/hk_416.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 64, "BypassesArmor": 0.25, "SoundRadius": 14, - "rpm": 900 + "RPM": 900 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/m_1911.json b/src/main/resources/data/superbwarfare/guns/m_1911.json index e4b96d5df..b86776ded 100644 --- a/src/main/resources/data/superbwarfare/guns/m_1911.json +++ b/src/main/resources/data/superbwarfare/guns/m_1911.json @@ -13,5 +13,5 @@ "EmptyReloadTime": 35, "BypassesArmor": 0.2, "SoundRadius": 10, - "rpm": 400 + "RPM": 400 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/m_4.json b/src/main/resources/data/superbwarfare/guns/m_4.json index 093ab0189..0fb129410 100644 --- a/src/main/resources/data/superbwarfare/guns/m_4.json +++ b/src/main/resources/data/superbwarfare/guns/m_4.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 64, "BypassesArmor": 0.25, "SoundRadius": 14, - "rpm": 850 + "RPM": 850 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/m_60.json b/src/main/resources/data/superbwarfare/guns/m_60.json index 005abd6da..e3db4197d 100644 --- a/src/main/resources/data/superbwarfare/guns/m_60.json +++ b/src/main/resources/data/superbwarfare/guns/m_60.json @@ -13,5 +13,5 @@ "EmptyReloadTime": 133, "BypassesArmor": 0.25, "SoundRadius": 15, - "rpm": 600 + "RPM": 600 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/minigun.json b/src/main/resources/data/superbwarfare/guns/minigun.json index 486f9a3ab..86ba41771 100644 --- a/src/main/resources/data/superbwarfare/guns/minigun.json +++ b/src/main/resources/data/superbwarfare/guns/minigun.json @@ -9,5 +9,5 @@ "FireMode": 2, "BypassesArmor": 0.3, "SoundRadius": 14, - "rpm": 1200 + "RPM": 1200 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/mk_14.json b/src/main/resources/data/superbwarfare/guns/mk_14.json index 2a0f42826..bee229876 100644 --- a/src/main/resources/data/superbwarfare/guns/mk_14.json +++ b/src/main/resources/data/superbwarfare/guns/mk_14.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 71, "BypassesArmor": 0.4, "SoundRadius": 16, - "rpm": 700 + "RPM": 700 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/qbz_95.json b/src/main/resources/data/superbwarfare/guns/qbz_95.json index b9d76212d..219adfae0 100644 --- a/src/main/resources/data/superbwarfare/guns/qbz_95.json +++ b/src/main/resources/data/superbwarfare/guns/qbz_95.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 74, "BypassesArmor": 0.28, "SoundRadius": 13, - "rpm": 650 + "RPM": 650 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/rpk.json b/src/main/resources/data/superbwarfare/guns/rpk.json index 6bfafc43a..2db851567 100644 --- a/src/main/resources/data/superbwarfare/guns/rpk.json +++ b/src/main/resources/data/superbwarfare/guns/rpk.json @@ -14,5 +14,5 @@ "EmptyReloadTime": 95, "BypassesArmor": 0.23, "SoundRadius": 14, - "rpm": 600 + "RPM": 600 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/sks.json b/src/main/resources/data/superbwarfare/guns/sks.json index bdb3c2f6d..c2933a9ee 100644 --- a/src/main/resources/data/superbwarfare/guns/sks.json +++ b/src/main/resources/data/superbwarfare/guns/sks.json @@ -13,5 +13,5 @@ "EmptyReloadTime": 75, "BypassesArmor": 0.23, "SoundRadius": 16, - "rpm": 400 + "RPM": 400 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/svd.json b/src/main/resources/data/superbwarfare/guns/svd.json index 0b21baa67..6527b1d94 100644 --- a/src/main/resources/data/superbwarfare/guns/svd.json +++ b/src/main/resources/data/superbwarfare/guns/svd.json @@ -14,5 +14,5 @@ "EmptyReloadTime": 70, "BypassesArmor": 0.45, "SoundRadius": 17, - "rpm": 300 + "RPM": 300 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/trachelium.json b/src/main/resources/data/superbwarfare/guns/trachelium.json index 4039a9ade..62702b71e 100644 --- a/src/main/resources/data/superbwarfare/guns/trachelium.json +++ b/src/main/resources/data/superbwarfare/guns/trachelium.json @@ -12,5 +12,5 @@ "EmptyReloadTime": 65, "BypassesArmor": 0.3, "SoundRadius": 10, - "rpm": 240 + "RPM": 240 } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/guns/vector.json b/src/main/resources/data/superbwarfare/guns/vector.json index 9b3c3aef3..88e1577dd 100644 --- a/src/main/resources/data/superbwarfare/guns/vector.json +++ b/src/main/resources/data/superbwarfare/guns/vector.json @@ -16,5 +16,5 @@ "EmptyReloadTime": 64, "BypassesArmor": 0.15, "SoundRadius": 11, - "rpm": 1200 + "RPM": 1200 } \ No newline at end of file