优化空仓换弹nbt

This commit is contained in:
17146 2024-11-02 23:34:22 +08:00
parent c2429e4aae
commit b5563dcaa4
30 changed files with 48 additions and 32 deletions

View file

@ -286,7 +286,7 @@ public class GunEventHandler {
MinecraftForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); MinecraftForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack));
if (stack.is(ModTags.Items.OPEN_BOLT)) { if (stack.is(ModTags.Items.OPEN_BOLT)) {
if (tag.getInt("ammo") == 0) { if (tag.getInt("ammo") == 0) {
data.putInt("ReloadTime", (int) tag.getDouble("empty_reload_time") + 2); data.putInt("ReloadTime", data.getInt("EmptyReloadTime") + 2);
stack.getOrCreateTag().putBoolean("is_empty_reloading", true); stack.getOrCreateTag().putBoolean("is_empty_reloading", true);
playGunEmptyReloadSounds(player); playGunEmptyReloadSounds(player);
} else { } else {
@ -295,7 +295,7 @@ public class GunEventHandler {
playGunNormalReloadSounds(player); playGunNormalReloadSounds(player);
} }
} else { } else {
data.putInt("ReloadTime", (int) tag.getDouble("empty_reload_time") + 2); data.putInt("ReloadTime", data.getInt("EmptyReloadTime") + 2);
stack.getOrCreateTag().putBoolean("is_empty_reloading", true); stack.getOrCreateTag().putBoolean("is_empty_reloading", true);
playGunEmptyReloadSounds(player); playGunEmptyReloadSounds(player);
} }

View file

@ -63,7 +63,7 @@ public class ReloadMessage {
CompoundTag tag = stack.getOrCreateTag(); CompoundTag tag = stack.getOrCreateTag();
boolean canSingleReload = tag.getDouble("iterative_time") != 0; boolean canSingleReload = tag.getDouble("iterative_time") != 0;
boolean canReload = (tag.getDouble("normal_reload_time") != 0 || tag.getDouble("empty_reload_time") != 0) && tag.getDouble("clipLoad") != 1; boolean canReload = (tag.getDouble("normal_reload_time") != 0 || GunsTool.getGunIntTag(stack, "EmptyReloadTime") != 0) && tag.getDouble("clipLoad") != 1;
boolean clipLoad = tag.getInt("ammo") == 0 && tag.getDouble("clipLoad") == 1; boolean clipLoad = tag.getInt("ammo") == 0 && tag.getDouble("clipLoad") == 1;
// 检查备弹 // 检查备弹

View file

@ -53,12 +53,28 @@ public class GunsTool {
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;
gunsData.get(location).forEach((k, v) -> stack.getOrCreateTag().putDouble(k, v)); gunsData.get(location).forEach((k, v) -> {
if (k.equals("EmptyReloadTime")) {
CompoundTag data = stack.getOrCreateTag().getCompound("GunData");
data.putDouble(k, v);
stack.addTagElement("GunData", data);
} else {
stack.getOrCreateTag().putDouble(k, v);
}
});
} }
public static void initCreativeGun(ItemStack stack, String location) { public static void initCreativeGun(ItemStack stack, String location) {
if (gunsData != null && gunsData.get(location) != null) { if (gunsData != null && gunsData.get(location) != null) {
gunsData.get(location).forEach((k, v) -> stack.getOrCreateTag().putDouble(k, v)); gunsData.get(location).forEach((k, v) -> {
if (k.equals("EmptyReloadTime")) {
CompoundTag data = stack.getOrCreateTag().getCompound("GunData");
data.putDouble(k, v);
stack.addTagElement("GunData", data);
} else {
stack.getOrCreateTag().putDouble(k, v);
}
});
stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + stack.getOrCreateTag().getInt("customMag")); stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + stack.getOrCreateTag().getInt("customMag"));
} }
} }

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 64, "normal_reload_time": 64,
"empty_reload_time": 85, "EmptyReloadTime": 85,
"BypassesArmor": 0.05, "BypassesArmor": 0.05,
"SoundRadius": 18, "SoundRadius": 18,
"rpm": 360 "rpm": 360

View file

@ -14,7 +14,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 66, "normal_reload_time": 66,
"empty_reload_time": 83, "EmptyReloadTime": 83,
"BypassesArmor": 0.01, "BypassesArmor": 0.01,
"SoundRadius": 16, "SoundRadius": 16,
"rpm": 600 "rpm": 600

View file

@ -16,7 +16,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 52, "normal_reload_time": 52,
"empty_reload_time": 58, "EmptyReloadTime": 58,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,
"SoundRadius": 12, "SoundRadius": 12,
"rpm": 700 "rpm": 700

View file

@ -16,7 +16,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 69, "EmptyReloadTime": 69,
"BypassesArmor": 0.2, "BypassesArmor": 0.2,
"SoundRadius": 14, "SoundRadius": 14,
"rpm": 600 "rpm": 600

View file

@ -15,7 +15,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95, "EmptyReloadTime": 95,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,
"SoundRadius": 13, "SoundRadius": 13,
"rpm": 400 "rpm": 400

View file

@ -14,7 +14,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 30, "normal_reload_time": 30,
"empty_reload_time": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.15, "BypassesArmor": 0.15,
"SoundRadius": 10, "SoundRadius": 10,
"rpm": 400 "rpm": 400

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 30, "normal_reload_time": 30,
"empty_reload_time": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.15, "BypassesArmor": 0.15,
"SoundRadius": 16, "SoundRadius": 16,
"rpm": 1300 "rpm": 1300

View file

@ -16,7 +16,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,
"SoundRadius": 14, "SoundRadius": 14,
"rpm": 900 "rpm": 900

View file

@ -13,7 +13,7 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.7, "BypassesArmor": 0.7,
"SoundRadius": 20, "SoundRadius": 20,
"rpm": 120 "rpm": 120

View file

@ -4,7 +4,7 @@
"zoomSpread": 5, "zoomSpread": 5,
"mag": 1, "mag": 1,
"weight": 10, "weight": 10,
"empty_reload_time": 78, "EmptyReloadTime": 78,
"damage": 300, "damage": 300,
"BypassesArmor": 1 "BypassesArmor": 1
} }

View file

@ -14,7 +14,7 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 59, "EmptyReloadTime": 59,
"clipLoad": 1, "clipLoad": 1,
"prepare_time": 29, "prepare_time": 29,
"iterative_time": 11, "iterative_time": 11,

View file

@ -14,7 +14,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 30, "normal_reload_time": 30,
"empty_reload_time": 35, "EmptyReloadTime": 35,
"BypassesArmor": 0.2, "BypassesArmor": 0.2,
"SoundRadius": 10, "SoundRadius": 10,
"rpm": 400 "rpm": 400

View file

@ -16,7 +16,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,
"SoundRadius": 14, "SoundRadius": 14,
"rpm": 850 "rpm": 850

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 114, "normal_reload_time": 114,
"empty_reload_time": 133, "EmptyReloadTime": 133,
"BypassesArmor": 0.25, "BypassesArmor": 0.25,
"SoundRadius": 15, "SoundRadius": 15,
"rpm": 600 "rpm": 600

View file

@ -6,5 +6,5 @@
"velocity": 3.75, "velocity": 3.75,
"mag": 1, "mag": 1,
"weight": 4, "weight": 4,
"empty_reload_time": 64 "EmptyReloadTime": 64
} }

View file

@ -18,7 +18,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 60, "normal_reload_time": 60,
"empty_reload_time": 78, "EmptyReloadTime": 78,
"BypassesArmor": 0.6, "BypassesArmor": 0.6,
"SoundRadius": 18, "SoundRadius": 18,
"rpm": 180 "rpm": 180

View file

@ -15,7 +15,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 58, "normal_reload_time": 58,
"empty_reload_time": 81, "EmptyReloadTime": 81,
"BypassesArmor": 0.4, "BypassesArmor": 0.4,
"SoundRadius": 16, "SoundRadius": 16,
"rpm": 700 "rpm": 700

View file

@ -16,7 +16,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 63, "normal_reload_time": 63,
"empty_reload_time": 92, "EmptyReloadTime": 92,
"BypassesArmor": 1, "BypassesArmor": 1,
"SoundRadius": 22, "SoundRadius": 22,
"rpm": 90 "rpm": 90

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 58, "normal_reload_time": 58,
"empty_reload_time": 74, "EmptyReloadTime": 74,
"BypassesArmor": 0.28, "BypassesArmor": 0.28,
"SoundRadius": 13, "SoundRadius": 13,
"rpm": 650 "rpm": 650

View file

@ -6,6 +6,6 @@
"velocity": 4, "velocity": 4,
"mag": 1, "mag": 1,
"weight": 7, "weight": 7,
"empty_reload_time": 103, "EmptyReloadTime": 103,
"BypassesArmor": 1 "BypassesArmor": 1
} }

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95, "EmptyReloadTime": 95,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,
"SoundRadius": 14, "SoundRadius": 14,
"rpm": 600 "rpm": 600

View file

@ -16,7 +16,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 59, "normal_reload_time": 59,
"empty_reload_time": 89, "EmptyReloadTime": 89,
"BypassesArmor": 0.8, "BypassesArmor": 0.8,
"SoundRadius": 20, "SoundRadius": 20,
"rpm": 240 "rpm": 240

View file

@ -14,7 +14,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 75, "EmptyReloadTime": 75,
"BypassesArmor": 0.23, "BypassesArmor": 0.23,
"SoundRadius": 16, "SoundRadius": 16,
"rpm": 400 "rpm": 400

View file

@ -15,7 +15,7 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 70, "EmptyReloadTime": 70,
"BypassesArmor": 0.45, "BypassesArmor": 0.45,
"SoundRadius": 17, "SoundRadius": 17,
"rpm": 400 "rpm": 400

View file

@ -6,5 +6,5 @@
"velocity": 3, "velocity": 3,
"mag": 1, "mag": 1,
"weight": 1, "weight": 1,
"empty_reload_time": 58 "EmptyReloadTime": 58
} }

View file

@ -13,7 +13,7 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 65, "EmptyReloadTime": 65,
"BypassesArmor": 0.3, "BypassesArmor": 0.3,
"SoundRadius": 10, "SoundRadius": 10,
"rpm": 300 "rpm": 300

View file

@ -14,7 +14,7 @@
"auto": 1, "auto": 1,
"burst_size": 3, "burst_size": 3,
"normal_reload_time": 46, "normal_reload_time": 46,
"empty_reload_time": 64, "EmptyReloadTime": 64,
"BypassesArmor": 0.15, "BypassesArmor": 0.15,
"SoundRadius": 4, "SoundRadius": 4,
"rpm": 1200 "rpm": 1200