From e93114b911a517a4c33071e23d42f967e04cb1e4 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Thu, 22 May 2025 14:34:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8F=96=E8=BF=91=E6=88=98=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/gun/DefaultGunData.java | 2 ++ .../superbwarfare/data/gun/GunData.java | 4 ++++ .../superbwarfare/item/gun/GunItem.java | 11 ++++++++++ .../item/gun/launcher/SecondaryCataclysm.java | 20 ------------------- .../guns/secondary_cataclysm.json | 1 + 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/data/gun/DefaultGunData.java b/src/main/java/com/atsuishio/superbwarfare/data/gun/DefaultGunData.java index 7e4757da3..f88252f2e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/gun/DefaultGunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/gun/DefaultGunData.java @@ -25,6 +25,8 @@ public class DefaultGunData { public double spread; @SerializedName("Damage") public double damage; + @SerializedName("MeleeDamage") + public double meleeDamage; @SerializedName("Headshot") public double headshot = 1.5; @SerializedName("Velocity") diff --git a/src/main/java/com/atsuishio/superbwarfare/data/gun/GunData.java b/src/main/java/com/atsuishio/superbwarfare/data/gun/GunData.java index d6a866321..a5fbcab07 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/gun/GunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/gun/GunData.java @@ -160,6 +160,10 @@ public class GunData { return (rawDamage() + item.getCustomDamage(stack)) * perkDamageRate(); } + public double meleeDamage() { + return defaultGunData().meleeDamage; + } + public double explosionDamage() { return defaultGunData().explosionDamage; } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java index f37a15488..bd1a72c3a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -154,12 +154,14 @@ public abstract class GunItem extends Item implements CustomRendererItem { } private static final ResourceLocation SPEED_ID = Mod.loc("gun_movement_speed"); + private static final ResourceLocation DAMAGE_ID = Mod.loc("gun_melee_damage"); @Override public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) { var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers()); var data = GunData.from(stack); + // 移速 list.add(new ItemAttributeModifiers.Entry( Attributes.MOVEMENT_SPEED, new AttributeModifier(SPEED_ID, @@ -169,6 +171,15 @@ public abstract class GunItem extends Item implements CustomRendererItem { EquipmentSlotGroup.MAINHAND )); + // 近战伤害 + if (data.meleeDamage() > 0) { + list.add(new ItemAttributeModifiers.Entry( + Attributes.ATTACK_DAMAGE, + new AttributeModifier(DAMAGE_ID, data.meleeDamage(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND + )); + } + return new ItemAttributeModifiers(list, true); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java index 5d1a1dcf9..8f5f2dc92 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java @@ -20,14 +20,10 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EquipmentSlotGroup; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.ItemAttributeModifiers; import net.minecraft.world.level.Level; import net.neoforged.neoforge.capabilities.Capabilities; import org.jetbrains.annotations.NotNull; @@ -38,7 +34,6 @@ import software.bernie.geckolib.renderer.GeoItemRenderer; import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.ParametersAreNonnullByDefault; -import java.util.ArrayList; import java.util.Optional; import java.util.function.Supplier; @@ -184,21 +179,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag return Optional.of(new SecondaryCataclysmImageComponent(pStack)); } - private static final ResourceLocation DAMAGE_ID = Mod.loc("secondary_cataclysm_attack_damage"); - - @Override - public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) { - var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers()); - - list.add(new ItemAttributeModifiers.Entry( - Attributes.ATTACK_DAMAGE, - new AttributeModifier(DAMAGE_ID, 19, AttributeModifier.Operation.ADD_VALUE), - EquipmentSlotGroup.MAINHAND - )); - - return new ItemAttributeModifiers(list, true); - } - @Override public boolean hasMeleeAttack(ItemStack stack) { return true; diff --git a/src/main/resources/data/superbwarfare/guns/secondary_cataclysm.json b/src/main/resources/data/superbwarfare/guns/secondary_cataclysm.json index 7663ebb48..32f5af6f7 100644 --- a/src/main/resources/data/superbwarfare/guns/secondary_cataclysm.json +++ b/src/main/resources/data/superbwarfare/guns/secondary_cataclysm.json @@ -4,6 +4,7 @@ "RecoilX": 0.004, "RecoilY": 0.023, "Damage": 30, + "MeleeDamage": 19, "ExplosionDamage": 50, "ExplosionRadius": 5, "Velocity": 3.75,