优化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();
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);
}
}
}
}

View file

@ -55,7 +55,7 @@ public class GunsTool {
// TODO 临时使用移植完毕后删除
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) {
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);
}
}

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,