From 1cf17468c3a2cd592dfdefb741fbb42421cd6792 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 24 May 2025 20:52:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4damage=20modifier=E7=9A=84?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/vehicle/VehicleData.java | 37 +++++++------------ .../data/vehicle/VehicleDataTool.java | 1 - .../entity/vehicle/damage/DamageModifier.java | 14 +++++-- 3 files changed, 24 insertions(+), 28 deletions(-) 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 e64e53e13..975a39633 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleData.java @@ -62,29 +62,20 @@ public class VehicleData { return data.mass; } - public static final LoadingCache damageModifiers = CacheBuilder.newBuilder() - .build(new CacheLoader<>() { - public @NotNull DamageModifier load(@NotNull String id) { - var data = VehicleDataTool.vehicleData.getOrDefault(id, new DefaultVehicleData()); - var modifier = new DamageModifier(); - - if (data.applyDefaultDamageModifiers) { - modifier.immuneTo(EntityType.POTION) - .immuneTo(EntityType.AREA_EFFECT_CLOUD) - .immuneTo(DamageTypes.FALL) - .immuneTo(DamageTypes.DROWN) - .immuneTo(DamageTypes.DRAGON_BREATH) - .immuneTo(DamageTypes.WITHER) - .immuneTo(DamageTypes.WITHER_SKULL) - .reduce(5, ModDamageTypes.VEHICLE_STRIKE); - } - - return modifier.addAll(data.damageModifiers); - } - }); - public DamageModifier damageModifier() { - return damageModifiers.getUnchecked(id); - } + var modifier = new DamageModifier(); + if (data.applyDefaultDamageModifiers) { + modifier.immuneTo(EntityType.POTION) + .immuneTo(EntityType.AREA_EFFECT_CLOUD) + .immuneTo(DamageTypes.FALL) + .immuneTo(DamageTypes.DROWN) + .immuneTo(DamageTypes.DRAGON_BREATH) + .immuneTo(DamageTypes.WITHER) + .immuneTo(DamageTypes.WITHER_SKULL) + .reduce(5, ModDamageTypes.VEHICLE_STRIKE); + } + + return modifier.addAll(data.damageModifiers); + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java index 4c6dbb6f6..09ed13778 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java @@ -24,7 +24,6 @@ public class VehicleDataTool { public static void initJsonData(ResourceManager manager) { vehicleData.clear(); VehicleData.dataCache.invalidateAll(); - VehicleData.damageModifiers.invalidateAll(); for (var entry : manager.listResources(VEHICLE_DATA_FOLDER, file -> file.getPath().endsWith(".json")).entrySet()) { var attribute = entry.getValue(); 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 a6c95deb1..58003ba61 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 @@ -58,6 +58,7 @@ public class DamageModifier { /** * 免疫指定类型的伤害 + * * @param entityId 伤害来源实体ID */ public DamageModifier immuneTo(String entityId) { @@ -67,6 +68,7 @@ public class DamageModifier { /** * 免疫指定类型的伤害 + * * @param type 伤害来源实体类型 */ public DamageModifier immuneTo(EntityType type) { @@ -118,7 +120,8 @@ public class DamageModifier { /** * 固定减少指定类型的伤害一定数值 - * @param value 要减少的数值 + * + * @param value 要减少的数值 * @param entityId 伤害来源实体ID */ public DamageModifier reduce(float value, String entityId) { @@ -128,8 +131,9 @@ public class DamageModifier { /** * 固定减少指定类型的伤害一定数值 + * * @param value 要减少的数值 - * @param type 伤害来源实体类型 + * @param type 伤害来源实体类型 */ public DamageModifier reduce(float value, EntityType type) { return reduce(value, EntityType.getKey(type).toString()); @@ -180,7 +184,8 @@ public class DamageModifier { /** * 将指定类型的伤害值乘以指定数值 - * @param value 要乘以的数值 + * + * @param value 要乘以的数值 * @param entityId 伤害来源实体ID */ public DamageModifier multiply(float value, String entityId) { @@ -190,8 +195,9 @@ public class DamageModifier { /** * 将指定类型的伤害值乘以指定数值 + * * @param value 要乘以的数值 - * @param type 伤害来源实体类型 + * @param type 伤害来源实体类型 */ public DamageModifier multiply(float value, EntityType type) { return multiply(value, EntityType.getKey(type).toString());