From 937f8340e92fa9f391e37946fcb0b58ae9726615 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Thu, 20 Mar 2025 14:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E4=BC=A4=E5=AE=B3=E5=80=BC=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/damage/DamageModifier.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/damage/DamageModifier.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/damage/DamageModifier.java index 01dd61ed6..f92973c0b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/damage/DamageModifier.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/damage/DamageModifier.java @@ -7,6 +7,7 @@ import net.minecraft.world.damagesource.DamageType; import java.util.ArrayList; import java.util.List; +import java.util.function.BiFunction; import java.util.function.Function; public class DamageModifier { @@ -14,6 +15,7 @@ public class DamageModifier { private final List immuneList = new ArrayList<>(); private final List reduceList = new ArrayList<>(); private final List multiplyList = new ArrayList<>(); + private final List> customList = new ArrayList<>(); /** * 免疫所有伤害 @@ -139,6 +141,16 @@ public class DamageModifier { return this; } + /** + * 自定义伤害值计算 + * + * @param damageModifyFunction 自定义伤害值计算函数 + */ + public DamageModifier custom(BiFunction damageModifyFunction) { + customList.add(damageModifyFunction); + return this; + } + private final List combinedList = new ArrayList<>(); /** @@ -163,6 +175,12 @@ public class DamageModifier { if (damage <= 0) return 0; } } + + // 最后计算自定义伤害 + for (var func : customList) { + damage = func.apply(source, damage); + } + return damage; } }