删除damage modifier的缓存

This commit is contained in:
17146 2025-05-24 20:52:40 +08:00 committed by Light_Quanta
parent 5a31860b59
commit 1cf17468c3
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
3 changed files with 24 additions and 28 deletions

View file

@ -62,29 +62,20 @@ public class VehicleData {
return data.mass; return data.mass;
} }
public static final LoadingCache<String, DamageModifier> 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() { 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);
}
} }

View file

@ -24,7 +24,6 @@ public class VehicleDataTool {
public static void initJsonData(ResourceManager manager) { public static void initJsonData(ResourceManager manager) {
vehicleData.clear(); vehicleData.clear();
VehicleData.dataCache.invalidateAll(); VehicleData.dataCache.invalidateAll();
VehicleData.damageModifiers.invalidateAll();
for (var entry : manager.listResources(VEHICLE_DATA_FOLDER, file -> file.getPath().endsWith(".json")).entrySet()) { for (var entry : manager.listResources(VEHICLE_DATA_FOLDER, file -> file.getPath().endsWith(".json")).entrySet()) {
var attribute = entry.getValue(); var attribute = entry.getValue();

View file

@ -58,6 +58,7 @@ public class DamageModifier {
/** /**
* 免疫指定类型的伤害 * 免疫指定类型的伤害
*
* @param entityId 伤害来源实体ID * @param entityId 伤害来源实体ID
*/ */
public DamageModifier immuneTo(String entityId) { public DamageModifier immuneTo(String entityId) {
@ -67,6 +68,7 @@ public class DamageModifier {
/** /**
* 免疫指定类型的伤害 * 免疫指定类型的伤害
*
* @param type 伤害来源实体类型 * @param type 伤害来源实体类型
*/ */
public DamageModifier immuneTo(EntityType<?> type) { public DamageModifier immuneTo(EntityType<?> type) {
@ -118,7 +120,8 @@ public class DamageModifier {
/** /**
* 固定减少指定类型的伤害一定数值 * 固定减少指定类型的伤害一定数值
* @param value 要减少的数值 *
* @param value 要减少的数值
* @param entityId 伤害来源实体ID * @param entityId 伤害来源实体ID
*/ */
public DamageModifier reduce(float value, String entityId) { public DamageModifier reduce(float value, String entityId) {
@ -128,8 +131,9 @@ public class DamageModifier {
/** /**
* 固定减少指定类型的伤害一定数值 * 固定减少指定类型的伤害一定数值
*
* @param value 要减少的数值 * @param value 要减少的数值
* @param type 伤害来源实体类型 * @param type 伤害来源实体类型
*/ */
public DamageModifier reduce(float value, EntityType<?> type) { public DamageModifier reduce(float value, EntityType<?> type) {
return reduce(value, EntityType.getKey(type).toString()); return reduce(value, EntityType.getKey(type).toString());
@ -180,7 +184,8 @@ public class DamageModifier {
/** /**
* 将指定类型的伤害值乘以指定数值 * 将指定类型的伤害值乘以指定数值
* @param value 要乘以的数值 *
* @param value 要乘以的数值
* @param entityId 伤害来源实体ID * @param entityId 伤害来源实体ID
*/ */
public DamageModifier multiply(float value, String entityId) { public DamageModifier multiply(float value, String entityId) {
@ -190,8 +195,9 @@ public class DamageModifier {
/** /**
* 将指定类型的伤害值乘以指定数值 * 将指定类型的伤害值乘以指定数值
*
* @param value 要乘以的数值 * @param value 要乘以的数值
* @param type 伤害来源实体类型 * @param type 伤害来源实体类型
*/ */
public DamageModifier multiply(float value, EntityType<?> type) { public DamageModifier multiply(float value, EntityType<?> type) {
return multiply(value, EntityType.getKey(type).toString()); return multiply(value, EntityType.getKey(type).toString());