优化NBT#Damage

This commit is contained in:
17146 2024-12-24 15:40:11 +08:00
parent 676d825f2e
commit ec4e956572
42 changed files with 59 additions and 56 deletions

View file

@ -1,11 +1,11 @@
package com.atsuishio.superbwarfare.client.tooltip;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ItemNBTTool;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.TooltipTool;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
@ -26,7 +26,7 @@ public class ClientBocekImageTooltip extends ClientGunImageTooltip {
slug = true;
}
double total = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
double total = GunsTool.getGunDoubleTag(stack, "Damage", 0) * TooltipTool.perkDamage(stack);
if (slug) {
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)

View file

@ -89,7 +89,7 @@ public class ClientGunImageTooltip implements ClientTooltipComponent {
* 获取武器伤害的文本组件
*/
protected Component getDamageComponent() {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
double damage = GunsTool.getGunDoubleTag(stack, "Damage", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (TooltipTool.heBullet(stack) ? " + "

View file

@ -1,6 +1,7 @@
package com.atsuishio.superbwarfare.client.tooltip;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.ItemNBTTool;
import com.atsuishio.superbwarfare.tools.TooltipTool;
import net.minecraft.ChatFormatting;
@ -16,7 +17,7 @@ public class ClientLauncherImageTooltip extends ClientGunImageTooltip {
@Override
protected Component getDamageComponent() {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
double damage = GunsTool.getGunDoubleTag(stack, "Damage", 0) * TooltipTool.perkDamage(stack);
double explosionDamage = ItemNBTTool.getDouble(stack, "ExplosionDamage", 0);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)

View file

@ -1,8 +1,9 @@
package com.atsuishio.superbwarfare.client.tooltip;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.ItemNBTTool;
import com.atsuishio.superbwarfare.tools.TooltipTool;
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
@ -25,7 +26,7 @@ public class ClientSentinelImageTooltip extends ClientEnergyImageTooltip {
);
if (flag.get()) {
double damage = (ItemNBTTool.getDouble(stack, "damage", 0) +
double damage = (GunsTool.getGunDoubleTag(stack, "Damage", 0) +
ItemNBTTool.getDouble(stack, "sentinelChargeDamage", 0))
* TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
@ -34,7 +35,7 @@ public class ClientSentinelImageTooltip extends ClientEnergyImageTooltip {
.format(0.8 * damage * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : ""))
.withStyle(ChatFormatting.AQUA).withStyle(ChatFormatting.BOLD));
} else {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
double damage = GunsTool.getGunDoubleTag(stack, "Damage", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (TooltipTool.heBullet(stack) ? new DecimalFormat("##.#")

View file

@ -5,7 +5,6 @@ import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.ItemNBTTool;
import com.atsuishio.superbwarfare.tools.TooltipTool;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
@ -28,13 +27,13 @@ public class ClientShotgunImageTooltip extends ClientGunImageTooltip {
}
if (slug) {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * GunsTool.getGunIntTag(stack, "ProjectileAmount", 1) * TooltipTool.perkDamage(stack);
double damage = GunsTool.getGunDoubleTag(stack, "Damage", 0) * GunsTool.getGunIntTag(stack, "ProjectileAmount", 1) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (TooltipTool.heBullet(stack) ? " + " + new DecimalFormat("##.#")
.format(0.8 * damage * (1 + 0.1 * TooltipTool.heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN));
} else {
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * TooltipTool.perkDamage(stack);
double damage = GunsTool.getGunDoubleTag(stack, "Damage", 0) * TooltipTool.perkDamage(stack);
return Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
.append(Component.literal("").withStyle(ChatFormatting.RESET))
.append(Component.literal(new DecimalFormat("##.#").format(damage) + " * " + new DecimalFormat("##").format(GunsTool.getGunIntTag(stack, "ProjectileAmount", 1))).withStyle(ChatFormatting.GREEN));

View file

@ -186,7 +186,7 @@ public class GunEventHandler {
if (!player.level().isClientSide()) {
float headshot = (float) GunsTool.getGunDoubleTag(heldItem, "Headshot", 0);
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) perkDamage(heldItem);
float damage = (float) (GunsTool.getGunDoubleTag(heldItem, "Damage", 0) + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) perkDamage(heldItem);
float velocity = (float) ((GunsTool.getGunDoubleTag(heldItem, "Velocity", 0) + heldItem.getOrCreateTag().getDouble("CustomVelocity")) * perkSpeed(heldItem));
int projectileAmount = GunsTool.getGunIntTag(heldItem, "ProjectileAmount", 1);
float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor");

View file

@ -277,12 +277,12 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
if (scopeType > 0 || gripType > 0) {
tag.putDouble("CustomVelocity", 15);
tag.putDouble("BypassesArmor", 0.4);
tag.putDouble("damage", 21);
GunsTool.setGunDoubleTag(stack, "Damage", 21);
GunsTool.setGunDoubleTag(stack, "Headshot", 2.5);
} else {
tag.putDouble("CustomVelocity", 0);
tag.putDouble("BypassesArmor", 0.3);
tag.putDouble("damage", 19);
GunsTool.setGunDoubleTag(stack, "Damage", 19);
GunsTool.setGunDoubleTag(stack, "Headshot", 2);
}

View file

@ -186,7 +186,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
int energyStored = energy.getEnergyStored();
if (energyStored > 0) {
energy.extractEnergy(1, false);
tag.putDouble("sentinelChargeDamage", 0.2857142857142857 * tag.getDouble("damage"));
tag.putDouble("sentinelChargeDamage", 0.2857142857142857 * GunsTool.getGunDoubleTag(itemStack, "Damage", 0));
} else {
tag.putDouble("sentinelChargeDamage", 0);
}

View file

@ -248,10 +248,11 @@ public class FireMessage {
if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) {
spread = 0.01f;
damage = 0.08333333 * tag.getDouble("damage") * tag.getDouble("speed") * perkDamage(heldItem);
damage = 0.08333333 * GunsTool.getGunDoubleTag(heldItem, "Damage", 0) * tag.getDouble("speed") * perkDamage(heldItem);
} else {
spread = perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.5f : 2.5f;
damage = (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.08333333 : 0.008333333) * tag.getDouble("damage") * tag.getDouble("speed") * perkDamage(heldItem);
damage = (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.08333333 : 0.008333333) *
GunsTool.getGunDoubleTag(heldItem, "Damage", 0) * tag.getDouble("speed") * perkDamage(heldItem);
}
ProjectileEntity projectile = new ProjectileEntity(player.level())
@ -337,7 +338,8 @@ public class FireMessage {
Level level = player.level();
if (!level.isClientSide()) {
TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"), volt, wireLength);
TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level,
(float) GunsTool.getGunDoubleTag(stack, "Damage", 0), volt, wireLength);
taserBulletProjectile.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ());
taserBulletProjectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) GunsTool.getGunDoubleTag(stack, "Velocity", 0),
@ -371,7 +373,7 @@ public class FireMessage {
Level level = player.level();
if (!level.isClientSide()) {
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level,
(float) stack.getOrCreateTag().getDouble("damage"), (float) stack.getOrCreateTag().getDouble("ExplosionDamage"), (float) stack.getOrCreateTag().getDouble("ExplosionRadius"));
(float) GunsTool.getGunDoubleTag(stack, "Damage", 0), (float) stack.getOrCreateTag().getDouble("ExplosionDamage"), (float) stack.getOrCreateTag().getDouble("ExplosionRadius"));
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
@ -422,7 +424,7 @@ public class FireMessage {
if (!level.isClientSide()) {
RpgRocketEntity rocketEntity = new RpgRocketEntity(player, level,
(float) tag.getDouble("damage"), (float) tag.getDouble("ExplosionDamage"), (float) tag.getDouble("ExplosionRadius"));
(float) GunsTool.getGunDoubleTag(stack, "Damage", 0), (float) tag.getDouble("ExplosionDamage"), (float) tag.getDouble("ExplosionRadius"));
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
@ -486,7 +488,7 @@ public class FireMessage {
if (!level.isClientSide()) {
JavelinMissileEntity missileEntity = new JavelinMissileEntity(player, level,
(float) tag.getDouble("damage"), (float) tag.getDouble("ExplosionDamage"), (float) tag.getDouble("ExplosionRadius"));
(float) GunsTool.getGunDoubleTag(stack, "Damage", 0), (float) tag.getDouble("ExplosionDamage"), (float) tag.getDouble("ExplosionRadius"));
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {

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", "Semi", "Burst", "Auto", "RecoilX", "RecoilY", "Velocity");
"Spread", "NormalReloadTime", "Headshot", "Semi", "Burst", "Auto", "RecoilX", "RecoilY", "Velocity", "Damage");
public static void initGun(Level level, ItemStack stack, String location) {
if (level.getServer() == null) return;

View file

@ -2,7 +2,7 @@
"Spread": 3.5,
"RecoilX": 0.006,
"RecoilY": 0.018,
"damage": 2.5,
"Damage": 2.5,
"Headshot": 1.5,
"Velocity": 17,
"mag": 25,

View file

@ -2,7 +2,7 @@
"Spread": 4,
"RecoilX": 0.005,
"RecoilY": 0.026,
"damage": 5,
"Damage": 5,
"Headshot": 1.5,
"Velocity": 15,
"mag": 2,

View file

@ -4,7 +4,7 @@
"Spread": 3.5,
"RecoilX": 0.0015,
"RecoilY": 0.01,
"damage": 7.7,
"Damage": 7.7,
"Headshot": 2,
"Velocity": 44.5,
"mag": 30,

View file

@ -4,7 +4,7 @@
"Spread": 4,
"RecoilX": 0.002,
"RecoilY": 0.012,
"damage": 8.5,
"Damage": 8.5,
"Headshot": 2,
"Velocity": 36,
"mag": 30,

View file

@ -2,7 +2,7 @@
"CustomZoom": 0.75,
"Spread": 4,
"Headshot": 2.5,
"damage": 48,
"Damage": 48,
"Weight": 3,
"BypassesArmor": 0.25
}

View file

@ -3,7 +3,7 @@
"Spread": 5,
"RecoilX": 0.0018,
"RecoilY": 0.01,
"damage": 9.5,
"Damage": 9.5,
"Headshot": 2,
"Velocity": 40,
"mag": 55,

View file

@ -2,7 +2,7 @@
"Spread": 2.5,
"RecoilX": 0.004,
"RecoilY": 0.013,
"damage": 5.5,
"Damage": 5.5,
"Headshot": 1.5,
"Velocity": 17,
"mag": 17,

View file

@ -2,7 +2,7 @@
"Spread": 2.5,
"RecoilX": 0.004,
"RecoilY": 0.013,
"damage": 5.5,
"Damage": 5.5,
"Headshot": 1.5,
"Velocity": 17,
"mag": 17,

View file

@ -4,7 +4,7 @@
"Spread": 3.5,
"RecoilX": 0.0016,
"RecoilY": 0.009,
"damage": 7.5,
"Damage": 7.5,
"Headshot": 2,
"Velocity": 44,
"mag": 30,

View file

@ -2,7 +2,7 @@
"Spread": 7,
"RecoilX": 0.004,
"RecoilY": 0.04,
"damage": 65,
"Damage": 65,
"Headshot": 3,
"Velocity": 38,
"mag": 1,

View file

@ -5,7 +5,7 @@
"mag": 1,
"Weight": 10,
"EmptyReloadTime": 78,
"damage": 300,
"Damage": 300,
"ExplosionDamage": 100,
"ExplosionRadius": 6
}

View file

@ -2,7 +2,7 @@
"Spread": 5,
"RecoilX": 0.002,
"RecoilY": 0.063,
"damage": 35,
"Damage": 35,
"Headshot": 3,
"Velocity": 37.75,
"mag": 5,

View file

@ -2,7 +2,7 @@
"Spread": 2.5,
"RecoilX": 0.006,
"RecoilY": 0.018,
"damage": 9.5,
"Damage": 9.5,
"Headshot": 1.5,
"Velocity": 15,
"mag": 7,

View file

@ -4,7 +4,7 @@
"Spread": 4,
"RecoilX": 0.0015,
"RecoilY": 0.011,
"damage": 7,
"Damage": 7,
"Headshot": 2,
"Velocity": 44,
"mag": 30,

View file

@ -2,7 +2,7 @@
"Spread": 5,
"RecoilX": 0.004,
"RecoilY": 0.014,
"damage": 9,
"Damage": 9,
"Headshot": 2,
"Velocity": 43,
"mag": 100,

View file

@ -2,7 +2,7 @@
"Spread": 1.5,
"RecoilX": 0.004,
"RecoilY": 0.023,
"damage": 40,
"Damage": 40,
"ExplosionDamage": 80,
"ExplosionRadius": 5,
"Velocity": 3.75,

View file

@ -2,7 +2,7 @@
"Spread": 3,
"RecoilX": 0.009,
"RecoilY": 0.04,
"damage": 3,
"Damage": 3,
"Headshot": 1.5,
"Velocity": 17,
"mag": 8,

View file

@ -5,7 +5,7 @@
"Spread": 6,
"RecoilX": 0.007,
"RecoilY": 0.013,
"damage": 38,
"Damage": 38,
"Headshot": 3,
"Velocity": 47.2,
"mag": 5,

View file

@ -2,7 +2,7 @@
"Spread": 2,
"RecoilX": 0.004,
"RecoilY": 0.031,
"damage": 16,
"Damage": 16,
"Headshot": 2.5,
"Velocity": 38,
"mag": 8,

View file

@ -2,7 +2,7 @@
"Spread": 1.5,
"RecoilX": 0.003,
"RecoilY": 0.02,
"damage": 8,
"Damage": 8,
"Headshot": 2,
"Velocity": 46,
"Weight": 10,

View file

@ -4,7 +4,7 @@
"Spread": 5,
"RecoilX": 0.006,
"RecoilY": 0.014,
"damage": 12,
"Damage": 12,
"Headshot": 2.5,
"Velocity": 42.5,
"mag": 20,

View file

@ -3,7 +3,7 @@
"Spread": 4.8,
"RecoilX": 0.002,
"RecoilY": 0.063,
"damage": 33,
"Damage": 33,
"Headshot": 3,
"Velocity": 42,
"mag": 5,

View file

@ -3,7 +3,7 @@
"Spread": 8,
"RecoilX": 0.01,
"RecoilY": 0.038,
"damage": 140,
"Damage": 140,
"Headshot": 3,
"Velocity": 36,
"mag": 3,

View file

@ -4,7 +4,7 @@
"Spread": 3.7,
"RecoilX": 0.0013,
"RecoilY": 0.009,
"damage": 8.25,
"Damage": 8.25,
"Headshot": 2,
"Velocity": 46,
"mag": 30,

View file

@ -2,7 +2,7 @@
"Spread": 5,
"RecoilX": 0.008,
"RecoilY": 0.018,
"damage": 200,
"Damage": 200,
"ExplosionDamage": 150,
"ExplosionRadius": 10,
"Velocity": 4,

View file

@ -2,7 +2,7 @@
"Spread": 5.5,
"RecoilX": 0.0018,
"RecoilY": 0.012,
"damage": 8.75,
"Damage": 8.75,
"Headshot": 2,
"Velocity": 38,
"mag": 75,

View file

@ -3,7 +3,7 @@
"Spread": 6,
"RecoilX": 0.007,
"RecoilY": 0.018,
"damage": 35,
"Damage": 35,
"mag": 5,
"Headshot": 3,
"Velocity": 70,

View file

@ -2,7 +2,7 @@
"Spread": 4.5,
"RecoilX": 0.004,
"RecoilY": 0.015,
"damage": 9.5,
"Damage": 9.5,
"Headshot": 2,
"Velocity": 36,
"mag": 20,

View file

@ -3,7 +3,7 @@
"Spread": 5.5,
"RecoilX": 0.004,
"RecoilY": 0.009,
"damage": 18,
"Damage": 18,
"Headshot": 2,
"Velocity": 42,
"mag": 10,

View file

@ -2,7 +2,7 @@
"Spread": 2,
"RecoilX": 0.0001,
"RecoilY": 0.002,
"damage": 5,
"Damage": 5,
"Velocity": 3,
"mag": 1,
"Weight": 1,

View file

@ -2,7 +2,7 @@
"Spread": 3,
"RecoilX": 0.005,
"RecoilY": 0.032,
"damage": 19,
"Damage": 19,
"Headshot": 2,
"Velocity": 24,
"mag": 6,

View file

@ -2,7 +2,7 @@
"Spread": 2.3,
"RecoilX": 0.002,
"RecoilY": 0.007,
"damage": 6,
"Damage": 6,
"Headshot": 1.5,
"Velocity": 16,
"mag": 13,