diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/FireModeMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/FireModeMessage.java index 177dce43d..86b810c49 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/FireModeMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/FireModeMessage.java @@ -62,12 +62,12 @@ public class FireModeMessage { CompoundTag tag = stack.getOrCreateTag(); if (fireMode == 0) { - if (tag.getBoolean("burst")) { + if (GunsTool.getGunBooleanTag(stack, "Burst", false)) { GunsTool.setGunIntTag(stack, "FireMode", 1); playChangeModeSound(player); return; } - if (tag.getBoolean("auto")) { + if (GunsTool.getGunBooleanTag(stack, "Auto", false)) { GunsTool.setGunIntTag(stack, "FireMode", 2); playChangeModeSound(player); return; @@ -75,12 +75,12 @@ public class FireModeMessage { } if (fireMode == 1) { - if (tag.getBoolean("auto")) { + if (GunsTool.getGunBooleanTag(stack, "Auto", false)) { GunsTool.setGunIntTag(stack, "FireMode", 2); playChangeModeSound(player); return; } - if (tag.getBoolean("semi")) { + if (GunsTool.getGunBooleanTag(stack, "Semi", false)) { GunsTool.setGunIntTag(stack, "FireMode", 0); playChangeModeSound(player); return; @@ -88,12 +88,12 @@ public class FireModeMessage { } if (fireMode == 2) { - if (tag.getBoolean("semi")) { + if (GunsTool.getGunBooleanTag(stack, "Semi", false)) { GunsTool.setGunIntTag(stack, "FireMode", 0); playChangeModeSound(player); return; } - if (tag.getBoolean("burst")) { + if (GunsTool.getGunBooleanTag(stack, "Burst", false)) { GunsTool.setGunIntTag(stack, "FireMode", 1); playChangeModeSound(player); return; @@ -116,7 +116,6 @@ public class FireModeMessage { if (flag.get()) { tag.putBoolean("start_sentinel_charge", true); } - } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index e6f1ab937..72fd2d0c6 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -55,7 +55,7 @@ public class GunsTool { // TODO 临时使用,移植完毕后删除 private static final Set STRING_SET = Set.of("EmptyReloadTime", "FireMode", "Weight", "SoundRadius", "BurstSize", "ProjectileAmount", - "Spread", "NormalReloadTime", "Headshot"); + "Spread", "NormalReloadTime", "Headshot", "Semi", "Burst", "Auto"); public static void initGun(Level level, ItemStack stack, String location) { if (level.getServer() == null) return; @@ -248,4 +248,22 @@ public class GunsTool { if (!data.contains(name)) return defaultValue; return data.getDouble(name); } + + public static void setGunBooleanTag(ItemStack stack, String name, boolean flag) { + CompoundTag tag = stack.getOrCreateTag(); + var data = tag.getCompound("GunData"); + data.putBoolean(name, flag); + stack.addTagElement("GunData", data); + } + + public static boolean getGunBooleanTag(ItemStack stack, String name) { + return getGunBooleanTag(stack, name, false); + } + + public static boolean getGunBooleanTag(ItemStack stack, String name, boolean defaultValue) { + CompoundTag tag = stack.getOrCreateTag(); + var data = tag.getCompound("GunData"); + if (!data.contains(name)) return defaultValue; + return data.getBoolean(name); + } } diff --git a/src/main/resources/data/superbwarfare/guns/aa_12.json b/src/main/resources/data/superbwarfare/guns/aa_12.json index d607fc474..0812b7492 100644 --- a/src/main/resources/data/superbwarfare/guns/aa_12.json +++ b/src/main/resources/data/superbwarfare/guns/aa_12.json @@ -9,9 +9,8 @@ "ProjectileAmount": 12, "Weight": 7, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 64, "EmptyReloadTime": 85, "BypassesArmor": 0.05, diff --git a/src/main/resources/data/superbwarfare/guns/abekiri.json b/src/main/resources/data/superbwarfare/guns/abekiri.json index c557ea6a2..d8cdcb799 100644 --- a/src/main/resources/data/superbwarfare/guns/abekiri.json +++ b/src/main/resources/data/superbwarfare/guns/abekiri.json @@ -9,9 +9,7 @@ "ProjectileAmount": 12, "Weight": 1, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 66, "EmptyReloadTime": 83, "BypassesArmor": 0.01, diff --git a/src/main/resources/data/superbwarfare/guns/ak_12.json b/src/main/resources/data/superbwarfare/guns/ak_12.json index 904414668..ad975e566 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_12.json +++ b/src/main/resources/data/superbwarfare/guns/ak_12.json @@ -10,9 +10,8 @@ "mag": 30, "Weight": 4, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 52, "EmptyReloadTime": 58, "BypassesArmor": 0.23, diff --git a/src/main/resources/data/superbwarfare/guns/ak_47.json b/src/main/resources/data/superbwarfare/guns/ak_47.json index 6290ca08a..4ded71583 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_47.json +++ b/src/main/resources/data/superbwarfare/guns/ak_47.json @@ -10,9 +10,8 @@ "mag": 30, "Weight": 5, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 52, "EmptyReloadTime": 65, "BypassesArmor": 0.2, diff --git a/src/main/resources/data/superbwarfare/guns/devotion.json b/src/main/resources/data/superbwarfare/guns/devotion.json index b42d001e6..c0b7092f8 100644 --- a/src/main/resources/data/superbwarfare/guns/devotion.json +++ b/src/main/resources/data/superbwarfare/guns/devotion.json @@ -9,9 +9,7 @@ "mag": 55, "Weight": 6, "FireMode": 2, - "semi": 0, - "burst": 0, - "auto": 1, + "Auto": 1, "NormalReloadTime": 73, "EmptyReloadTime": 95, "BypassesArmor": 0.25, diff --git a/src/main/resources/data/superbwarfare/guns/glock_17.json b/src/main/resources/data/superbwarfare/guns/glock_17.json index 7ea902f22..2e4a4b1b7 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_17.json +++ b/src/main/resources/data/superbwarfare/guns/glock_17.json @@ -8,9 +8,7 @@ "mag": 17, "Weight": 1, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 30, "EmptyReloadTime": 35, "BypassesArmor": 0.15, diff --git a/src/main/resources/data/superbwarfare/guns/glock_18.json b/src/main/resources/data/superbwarfare/guns/glock_18.json index df28baa82..cac27745f 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_18.json +++ b/src/main/resources/data/superbwarfare/guns/glock_18.json @@ -8,9 +8,8 @@ "mag": 17, "Weight": 1, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 30, "EmptyReloadTime": 35, "BypassesArmor": 0.15, diff --git a/src/main/resources/data/superbwarfare/guns/hk_416.json b/src/main/resources/data/superbwarfare/guns/hk_416.json index 9e141aa37..55316a4f0 100644 --- a/src/main/resources/data/superbwarfare/guns/hk_416.json +++ b/src/main/resources/data/superbwarfare/guns/hk_416.json @@ -10,9 +10,8 @@ "mag": 30, "Weight": 4, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 56, "EmptyReloadTime": 64, "BypassesArmor": 0.25, diff --git a/src/main/resources/data/superbwarfare/guns/hunting_rifle.json b/src/main/resources/data/superbwarfare/guns/hunting_rifle.json index 77669507d..d3349effc 100644 --- a/src/main/resources/data/superbwarfare/guns/hunting_rifle.json +++ b/src/main/resources/data/superbwarfare/guns/hunting_rifle.json @@ -8,9 +8,7 @@ "mag": 1, "Weight": 5, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "EmptyReloadTime": 64, "BypassesArmor": 0.7, "SoundRadius": 20 diff --git a/src/main/resources/data/superbwarfare/guns/k_98.json b/src/main/resources/data/superbwarfare/guns/k_98.json index f9d482723..6abf101a9 100644 --- a/src/main/resources/data/superbwarfare/guns/k_98.json +++ b/src/main/resources/data/superbwarfare/guns/k_98.json @@ -9,9 +9,7 @@ "bolt_action_time": 22, "Weight": 5, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "EmptyReloadTime": 59, "clipLoad": 1, "prepare_time": 29, diff --git a/src/main/resources/data/superbwarfare/guns/m_1911.json b/src/main/resources/data/superbwarfare/guns/m_1911.json index c64b105cb..03bac8f72 100644 --- a/src/main/resources/data/superbwarfare/guns/m_1911.json +++ b/src/main/resources/data/superbwarfare/guns/m_1911.json @@ -8,9 +8,7 @@ "mag": 7, "Weight": 2, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 30, "EmptyReloadTime": 35, "BypassesArmor": 0.2, diff --git a/src/main/resources/data/superbwarfare/guns/m_4.json b/src/main/resources/data/superbwarfare/guns/m_4.json index cd2f18d9c..b26668066 100644 --- a/src/main/resources/data/superbwarfare/guns/m_4.json +++ b/src/main/resources/data/superbwarfare/guns/m_4.json @@ -10,9 +10,8 @@ "mag": 30, "Weight": 4, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 56, "EmptyReloadTime": 64, "BypassesArmor": 0.25, diff --git a/src/main/resources/data/superbwarfare/guns/m_60.json b/src/main/resources/data/superbwarfare/guns/m_60.json index ec0f7f663..59bcdddea 100644 --- a/src/main/resources/data/superbwarfare/guns/m_60.json +++ b/src/main/resources/data/superbwarfare/guns/m_60.json @@ -8,9 +8,7 @@ "mag": 100, "Weight": 8, "FireMode": 2, - "semi": 0, - "burst": 0, - "auto": 1, + "Auto": 1, "NormalReloadTime": 114, "EmptyReloadTime": 133, "BypassesArmor": 0.25, diff --git a/src/main/resources/data/superbwarfare/guns/m_870.json b/src/main/resources/data/superbwarfare/guns/m_870.json index 9b782d4c1..17f61294d 100644 --- a/src/main/resources/data/superbwarfare/guns/m_870.json +++ b/src/main/resources/data/superbwarfare/guns/m_870.json @@ -10,9 +10,7 @@ "ProjectileAmount": 12, "Weight": 4, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "prepare_time": 7, "prepare_load_time": 36, "iterative_time": 16, diff --git a/src/main/resources/data/superbwarfare/guns/m_98b.json b/src/main/resources/data/superbwarfare/guns/m_98b.json index 547caaab7..85f4284ec 100644 --- a/src/main/resources/data/superbwarfare/guns/m_98b.json +++ b/src/main/resources/data/superbwarfare/guns/m_98b.json @@ -12,9 +12,7 @@ "bolt_action_time": 18, "Weight": 7, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 60, "EmptyReloadTime": 78, "BypassesArmor": 0.6, diff --git a/src/main/resources/data/superbwarfare/guns/marlin.json b/src/main/resources/data/superbwarfare/guns/marlin.json index a701e9745..35d9392ba 100644 --- a/src/main/resources/data/superbwarfare/guns/marlin.json +++ b/src/main/resources/data/superbwarfare/guns/marlin.json @@ -9,9 +9,7 @@ "force_stop_reloading": 1, "Weight": 3, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "prepare_time": 7, "iterative_time": 16, "finish_time": 19, diff --git a/src/main/resources/data/superbwarfare/guns/mk_14.json b/src/main/resources/data/superbwarfare/guns/mk_14.json index be9530d43..f7e925350 100644 --- a/src/main/resources/data/superbwarfare/guns/mk_14.json +++ b/src/main/resources/data/superbwarfare/guns/mk_14.json @@ -10,9 +10,8 @@ "mag": 20, "Weight": 5, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 54, "EmptyReloadTime": 71, "BypassesArmor": 0.4, diff --git a/src/main/resources/data/superbwarfare/guns/mosin_nagant.json b/src/main/resources/data/superbwarfare/guns/mosin_nagant.json index fd3fabfd0..dae5b564a 100644 --- a/src/main/resources/data/superbwarfare/guns/mosin_nagant.json +++ b/src/main/resources/data/superbwarfare/guns/mosin_nagant.json @@ -10,9 +10,7 @@ "bolt_action_time": 22, "Weight": 5, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "prepare_time": 29, "prepare_empty": 16, "iterative_time": 11, diff --git a/src/main/resources/data/superbwarfare/guns/ntw_20.json b/src/main/resources/data/superbwarfare/guns/ntw_20.json index 91fd6422e..17fe7b3e1 100644 --- a/src/main/resources/data/superbwarfare/guns/ntw_20.json +++ b/src/main/resources/data/superbwarfare/guns/ntw_20.json @@ -10,9 +10,7 @@ "bolt_action_time": 37, "Weight": 10, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 63, "EmptyReloadTime": 92, "BypassesArmor": 1, diff --git a/src/main/resources/data/superbwarfare/guns/qbz_95.json b/src/main/resources/data/superbwarfare/guns/qbz_95.json index d2b028cb6..906dfe530 100644 --- a/src/main/resources/data/superbwarfare/guns/qbz_95.json +++ b/src/main/resources/data/superbwarfare/guns/qbz_95.json @@ -10,9 +10,8 @@ "mag": 30, "Weight": 4, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 60, "EmptyReloadTime": 74, "BypassesArmor": 0.28, diff --git a/src/main/resources/data/superbwarfare/guns/rpk.json b/src/main/resources/data/superbwarfare/guns/rpk.json index 09dd40b20..be800ef97 100644 --- a/src/main/resources/data/superbwarfare/guns/rpk.json +++ b/src/main/resources/data/superbwarfare/guns/rpk.json @@ -8,9 +8,8 @@ "mag": 75, "Weight": 6, "FireMode": 2, - "semi": 1, - "burst": 0, - "auto": 1, + "Semi": 1, + "Auto": 1, "NormalReloadTime": 73, "EmptyReloadTime": 95, "BypassesArmor": 0.23, diff --git a/src/main/resources/data/superbwarfare/guns/sentinel.json b/src/main/resources/data/superbwarfare/guns/sentinel.json index 9357010a5..f2deae6f0 100644 --- a/src/main/resources/data/superbwarfare/guns/sentinel.json +++ b/src/main/resources/data/superbwarfare/guns/sentinel.json @@ -10,9 +10,7 @@ "bolt_action_time": 22, "Weight": 7, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 59, "EmptyReloadTime": 89, "BypassesArmor": 0.8, diff --git a/src/main/resources/data/superbwarfare/guns/sks.json b/src/main/resources/data/superbwarfare/guns/sks.json index dcceba4f8..42b2b5546 100644 --- a/src/main/resources/data/superbwarfare/guns/sks.json +++ b/src/main/resources/data/superbwarfare/guns/sks.json @@ -8,9 +8,7 @@ "mag": 20, "Weight": 4, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 54, "EmptyReloadTime": 75, "BypassesArmor": 0.23, diff --git a/src/main/resources/data/superbwarfare/guns/svd.json b/src/main/resources/data/superbwarfare/guns/svd.json index 834e9fffa..d5c012826 100644 --- a/src/main/resources/data/superbwarfare/guns/svd.json +++ b/src/main/resources/data/superbwarfare/guns/svd.json @@ -9,9 +9,7 @@ "mag": 10, "Weight": 5, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "NormalReloadTime": 56, "EmptyReloadTime": 70, "BypassesArmor": 0.45, diff --git a/src/main/resources/data/superbwarfare/guns/trachelium.json b/src/main/resources/data/superbwarfare/guns/trachelium.json index e79a050d8..664183823 100644 --- a/src/main/resources/data/superbwarfare/guns/trachelium.json +++ b/src/main/resources/data/superbwarfare/guns/trachelium.json @@ -8,9 +8,7 @@ "mag": 6, "Weight": 2, "FireMode": 0, - "semi": 1, - "burst": 0, - "auto": 0, + "Semi": 1, "EmptyReloadTime": 65, "BypassesArmor": 0.3, "SoundRadius": 10, diff --git a/src/main/resources/data/superbwarfare/guns/vector.json b/src/main/resources/data/superbwarfare/guns/vector.json index 18f574c9d..33a147f1a 100644 --- a/src/main/resources/data/superbwarfare/guns/vector.json +++ b/src/main/resources/data/superbwarfare/guns/vector.json @@ -8,9 +8,9 @@ "mag": 13, "Weight": 3, "FireMode": 2, - "semi": 1, - "burst": 1, - "auto": 1, + "Semi": 1, + "Burst": 1, + "Auto": 1, "BurstSize": 3, "NormalReloadTime": 46, "EmptyReloadTime": 64,