删除damage modifier的缓存
This commit is contained in:
parent
5a31860b59
commit
1cf17468c3
3 changed files with 24 additions and 28 deletions
|
@ -62,29 +62,20 @@ public class VehicleData {
|
|||
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() {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue