优化NBT#Semi & Burst & Auto

This commit is contained in:
17146 2024-12-24 15:12:10 +08:00
parent 6f578f8d65
commit dc20318309
28 changed files with 62 additions and 86 deletions

View file

@ -62,12 +62,12 @@ public class FireModeMessage {
CompoundTag tag = stack.getOrCreateTag(); CompoundTag tag = stack.getOrCreateTag();
if (fireMode == 0) { if (fireMode == 0) {
if (tag.getBoolean("burst")) { if (GunsTool.getGunBooleanTag(stack, "Burst", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 1); GunsTool.setGunIntTag(stack, "FireMode", 1);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
} }
if (tag.getBoolean("auto")) { if (GunsTool.getGunBooleanTag(stack, "Auto", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 2); GunsTool.setGunIntTag(stack, "FireMode", 2);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
@ -75,12 +75,12 @@ public class FireModeMessage {
} }
if (fireMode == 1) { if (fireMode == 1) {
if (tag.getBoolean("auto")) { if (GunsTool.getGunBooleanTag(stack, "Auto", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 2); GunsTool.setGunIntTag(stack, "FireMode", 2);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
} }
if (tag.getBoolean("semi")) { if (GunsTool.getGunBooleanTag(stack, "Semi", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 0); GunsTool.setGunIntTag(stack, "FireMode", 0);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
@ -88,12 +88,12 @@ public class FireModeMessage {
} }
if (fireMode == 2) { if (fireMode == 2) {
if (tag.getBoolean("semi")) { if (GunsTool.getGunBooleanTag(stack, "Semi", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 0); GunsTool.setGunIntTag(stack, "FireMode", 0);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
} }
if (tag.getBoolean("burst")) { if (GunsTool.getGunBooleanTag(stack, "Burst", false)) {
GunsTool.setGunIntTag(stack, "FireMode", 1); GunsTool.setGunIntTag(stack, "FireMode", 1);
playChangeModeSound(player); playChangeModeSound(player);
return; return;
@ -116,7 +116,6 @@ public class FireModeMessage {
if (flag.get()) { if (flag.get()) {
tag.putBoolean("start_sentinel_charge", true); tag.putBoolean("start_sentinel_charge", true);
} }
} }
} }
} }

View file

@ -55,7 +55,7 @@ public class GunsTool {
// TODO 临时使用移植完毕后删除 // TODO 临时使用移植完毕后删除
private static final Set<String> STRING_SET = Set.of("EmptyReloadTime", "FireMode", "Weight", "SoundRadius", "BurstSize", "ProjectileAmount", private static final Set<String> 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) { public static void initGun(Level level, ItemStack stack, String location) {
if (level.getServer() == null) return; if (level.getServer() == null) return;
@ -248,4 +248,22 @@ public class GunsTool {
if (!data.contains(name)) return defaultValue; if (!data.contains(name)) return defaultValue;
return data.getDouble(name); 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);
}
} }

View file

@ -9,9 +9,8 @@
"ProjectileAmount": 12, "ProjectileAmount": 12,
"Weight": 7, "Weight": 7,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 64, "NormalReloadTime": 64,
"EmptyReloadTime": 85, "EmptyReloadTime": 85,
"BypassesArmor": 0.05, "BypassesArmor": 0.05,

View file

@ -9,9 +9,7 @@
"ProjectileAmount": 12, "ProjectileAmount": 12,
"Weight": 1, "Weight": 1,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 66, "NormalReloadTime": 66,
"EmptyReloadTime": 83, "EmptyReloadTime": 83,
"BypassesArmor": 0.01, "BypassesArmor": 0.01,

View file

@ -10,9 +10,8 @@
"mag": 30, "mag": 30,
"Weight": 4, "Weight": 4,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 52, "NormalReloadTime": 52,
"EmptyReloadTime": 58, "EmptyReloadTime": 58,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,

View file

@ -10,9 +10,8 @@
"mag": 30, "mag": 30,
"Weight": 5, "Weight": 5,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 52, "NormalReloadTime": 52,
"EmptyReloadTime": 65, "EmptyReloadTime": 65,
"BypassesArmor": 0.2, "BypassesArmor": 0.2,

View file

@ -9,9 +9,7 @@
"mag": 55, "mag": 55,
"Weight": 6, "Weight": 6,
"FireMode": 2, "FireMode": 2,
"semi": 0, "Auto": 1,
"burst": 0,
"auto": 1,
"NormalReloadTime": 73, "NormalReloadTime": 73,
"EmptyReloadTime": 95, "EmptyReloadTime": 95,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,

View file

@ -8,9 +8,7 @@
"mag": 17, "mag": 17,
"Weight": 1, "Weight": 1,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 30, "NormalReloadTime": 30,
"EmptyReloadTime": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.15, "BypassesArmor": 0.15,

View file

@ -8,9 +8,8 @@
"mag": 17, "mag": 17,
"Weight": 1, "Weight": 1,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 30, "NormalReloadTime": 30,
"EmptyReloadTime": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.15, "BypassesArmor": 0.15,

View file

@ -10,9 +10,8 @@
"mag": 30, "mag": 30,
"Weight": 4, "Weight": 4,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 56, "NormalReloadTime": 56,
"EmptyReloadTime": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,

View file

@ -8,9 +8,7 @@
"mag": 1, "mag": 1,
"Weight": 5, "Weight": 5,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"EmptyReloadTime": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.7, "BypassesArmor": 0.7,
"SoundRadius": 20 "SoundRadius": 20

View file

@ -9,9 +9,7 @@
"bolt_action_time": 22, "bolt_action_time": 22,
"Weight": 5, "Weight": 5,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"EmptyReloadTime": 59, "EmptyReloadTime": 59,
"clipLoad": 1, "clipLoad": 1,
"prepare_time": 29, "prepare_time": 29,

View file

@ -8,9 +8,7 @@
"mag": 7, "mag": 7,
"Weight": 2, "Weight": 2,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 30, "NormalReloadTime": 30,
"EmptyReloadTime": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.2, "BypassesArmor": 0.2,

View file

@ -10,9 +10,8 @@
"mag": 30, "mag": 30,
"Weight": 4, "Weight": 4,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 56, "NormalReloadTime": 56,
"EmptyReloadTime": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,

View file

@ -8,9 +8,7 @@
"mag": 100, "mag": 100,
"Weight": 8, "Weight": 8,
"FireMode": 2, "FireMode": 2,
"semi": 0, "Auto": 1,
"burst": 0,
"auto": 1,
"NormalReloadTime": 114, "NormalReloadTime": 114,
"EmptyReloadTime": 133, "EmptyReloadTime": 133,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,

View file

@ -10,9 +10,7 @@
"ProjectileAmount": 12, "ProjectileAmount": 12,
"Weight": 4, "Weight": 4,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"prepare_time": 7, "prepare_time": 7,
"prepare_load_time": 36, "prepare_load_time": 36,
"iterative_time": 16, "iterative_time": 16,

View file

@ -12,9 +12,7 @@
"bolt_action_time": 18, "bolt_action_time": 18,
"Weight": 7, "Weight": 7,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 60, "NormalReloadTime": 60,
"EmptyReloadTime": 78, "EmptyReloadTime": 78,
"BypassesArmor": 0.6, "BypassesArmor": 0.6,

View file

@ -9,9 +9,7 @@
"force_stop_reloading": 1, "force_stop_reloading": 1,
"Weight": 3, "Weight": 3,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"prepare_time": 7, "prepare_time": 7,
"iterative_time": 16, "iterative_time": 16,
"finish_time": 19, "finish_time": 19,

View file

@ -10,9 +10,8 @@
"mag": 20, "mag": 20,
"Weight": 5, "Weight": 5,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 54, "NormalReloadTime": 54,
"EmptyReloadTime": 71, "EmptyReloadTime": 71,
"BypassesArmor": 0.4, "BypassesArmor": 0.4,

View file

@ -10,9 +10,7 @@
"bolt_action_time": 22, "bolt_action_time": 22,
"Weight": 5, "Weight": 5,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"prepare_time": 29, "prepare_time": 29,
"prepare_empty": 16, "prepare_empty": 16,
"iterative_time": 11, "iterative_time": 11,

View file

@ -10,9 +10,7 @@
"bolt_action_time": 37, "bolt_action_time": 37,
"Weight": 10, "Weight": 10,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 63, "NormalReloadTime": 63,
"EmptyReloadTime": 92, "EmptyReloadTime": 92,
"BypassesArmor": 1, "BypassesArmor": 1,

View file

@ -10,9 +10,8 @@
"mag": 30, "mag": 30,
"Weight": 4, "Weight": 4,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 60, "NormalReloadTime": 60,
"EmptyReloadTime": 74, "EmptyReloadTime": 74,
"BypassesArmor": 0.28, "BypassesArmor": 0.28,

View file

@ -8,9 +8,8 @@
"mag": 75, "mag": 75,
"Weight": 6, "Weight": 6,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 0, "Auto": 1,
"auto": 1,
"NormalReloadTime": 73, "NormalReloadTime": 73,
"EmptyReloadTime": 95, "EmptyReloadTime": 95,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,

View file

@ -10,9 +10,7 @@
"bolt_action_time": 22, "bolt_action_time": 22,
"Weight": 7, "Weight": 7,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 59, "NormalReloadTime": 59,
"EmptyReloadTime": 89, "EmptyReloadTime": 89,
"BypassesArmor": 0.8, "BypassesArmor": 0.8,

View file

@ -8,9 +8,7 @@
"mag": 20, "mag": 20,
"Weight": 4, "Weight": 4,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 54, "NormalReloadTime": 54,
"EmptyReloadTime": 75, "EmptyReloadTime": 75,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,

View file

@ -9,9 +9,7 @@
"mag": 10, "mag": 10,
"Weight": 5, "Weight": 5,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"NormalReloadTime": 56, "NormalReloadTime": 56,
"EmptyReloadTime": 70, "EmptyReloadTime": 70,
"BypassesArmor": 0.45, "BypassesArmor": 0.45,

View file

@ -8,9 +8,7 @@
"mag": 6, "mag": 6,
"Weight": 2, "Weight": 2,
"FireMode": 0, "FireMode": 0,
"semi": 1, "Semi": 1,
"burst": 0,
"auto": 0,
"EmptyReloadTime": 65, "EmptyReloadTime": 65,
"BypassesArmor": 0.3, "BypassesArmor": 0.3,
"SoundRadius": 10, "SoundRadius": 10,

View file

@ -8,9 +8,9 @@
"mag": 13, "mag": 13,
"Weight": 3, "Weight": 3,
"FireMode": 2, "FireMode": 2,
"semi": 1, "Semi": 1,
"burst": 1, "Burst": 1,
"auto": 1, "Auto": 1,
"BurstSize": 3, "BurstSize": 3,
"NormalReloadTime": 46, "NormalReloadTime": 46,
"EmptyReloadTime": 64, "EmptyReloadTime": 64,