From 4b46e33b0fb29680860728905cd24f2b3689a101 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sun, 25 May 2025 23:49:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=81=E8=AE=B8=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E8=BD=BD=E5=85=B7=E8=87=AA=E5=8A=A8=E6=89=A3=E8=A1=80=E6=AF=94?= =?UTF-8?q?=E4=BE=8B=E5=92=8C=E6=89=A3=E8=A1=80=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/vehicle/DefaultVehicleData.java | 15 +++++++++++++++ .../superbwarfare/data/vehicle/VehicleData.java | 9 +++++++++ .../entity/vehicle/base/VehicleEntity.java | 5 +++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/DefaultVehicleData.java b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/DefaultVehicleData.java index 87371c3d8..16e5b4ffc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/DefaultVehicleData.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/DefaultVehicleData.java @@ -30,6 +30,21 @@ public class DefaultVehicleData { @SerializedName("RepairMaterialHealAmount") public float repairMaterialHealAmount = 50; + /** + * 开始自动扣血时的血量比例 + */ + @ServerOnly + @SerializedName("SelfHurtPercent") + public float selfHurtPercent = 0.1F; + + /** + * 自动扣血每tick扣血量 + */ + @ServerOnly + @SerializedName("SelfHurtAmount") + public float selfHurtAmount = 0.1F; + + @SerializedName("MaxEnergy") public int maxEnergy = 100000; diff --git a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java index c76dede9a..a62a8e5fc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java @@ -9,6 +9,7 @@ import com.google.common.cache.LoadingCache; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.ItemStack; @@ -85,6 +86,14 @@ public class VehicleData { } } + public float selfHurtPercent() { + return Mth.clamp(data.selfHurtPercent, 0, 1); + } + + public float selfHurtAmount() { + return data.selfHurtAmount; + } + public int maxEnergy() { return data.maxEnergy; } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java index 66fafaa8c..cee49ec87 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java @@ -617,9 +617,10 @@ public abstract class VehicleEntity extends Entity { Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID)); - if (this.getHealth() <= 0.1 * this.getMaxHealth()) { + var data = data(); + if (this.getHealth() <= data.selfHurtPercent() * this.getMaxHealth()) { // 血量过低时自动扣血 - this.onHurt(0.1f, attacker, false); + this.onHurt(data.selfHurtAmount(), attacker, false); } else { // 呼吸回血 if (repairCoolDown == 0) {