在重载数据包时正确清空对应缓存

This commit is contained in:
Light_Quanta 2025-05-20 05:49:34 +08:00
parent 8ffada46d8
commit 97bab5e46d
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
5 changed files with 10 additions and 1 deletions

View file

@ -39,7 +39,7 @@ public class GunData {
public final CompoundTag attachmentTag; public final CompoundTag attachmentTag;
public final String id; public final String id;
private static final LoadingCache<ItemStack, GunData> dataCache = CacheBuilder.newBuilder() public static final LoadingCache<ItemStack, GunData> dataCache = CacheBuilder.newBuilder()
.weakKeys() .weakKeys()
.build(new CacheLoader<>() { .build(new CacheLoader<>() {
public @NotNull GunData load(@NotNull ItemStack stack) { public @NotNull GunData load(@NotNull ItemStack stack) {

View file

@ -25,6 +25,7 @@ public class LaunchableEntityTool {
*/ */
public static void initJsonData(ResourceManager manager) { public static void initJsonData(ResourceManager manager) {
launchableEntitiesData.clear(); launchableEntitiesData.clear();
for (var entry : manager.listResources("launchable", file -> file.getPath().endsWith(".json")).entrySet()) { for (var entry : manager.listResources("launchable", file -> file.getPath().endsWith(".json")).entrySet()) {
var attribute = entry.getValue(); var attribute = entry.getValue();
try { try {

View file

@ -19,6 +19,8 @@ public class VehicleDataTool {
public static void initJsonData(ResourceManager manager) { public static void initJsonData(ResourceManager manager) {
vehicleData.clear(); vehicleData.clear();
VehicleData.dataCache.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

@ -15,6 +15,7 @@ public abstract class EnergyVehicleEntity extends VehicleEntity {
public static final EntityDataAccessor<Integer> ENERGY = SynchedEntityData.defineId(EnergyVehicleEntity.class, EntityDataSerializers.INT); public static final EntityDataAccessor<Integer> ENERGY = SynchedEntityData.defineId(EnergyVehicleEntity.class, EntityDataSerializers.INT);
// TODO 在数据更新时修改能量相关属性
protected final IEnergyStorage energyStorage = new SyncedEntityEnergyStorage(this.getMaxEnergy(), this.entityData, ENERGY); protected final IEnergyStorage energyStorage = new SyncedEntityEnergyStorage(this.getMaxEnergy(), this.entityData, ENERGY);
public EnergyVehicleEntity(EntityType<?> pEntityType, Level pLevel) { public EnergyVehicleEntity(EntityType<?> pEntityType, Level pLevel) {

View file

@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.tools;
import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.data.gun.DefaultGunData; import com.atsuishio.superbwarfare.data.gun.DefaultGunData;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.network.message.receive.GunsDataMessage; import com.atsuishio.superbwarfare.network.message.receive.GunsDataMessage;
import com.google.gson.Gson; import com.google.gson.Gson;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -28,6 +29,10 @@ public class GunsTool {
* 初始化数据从data中读取数据json文件 * 初始化数据从data中读取数据json文件
*/ */
public static void initJsonData(ResourceManager manager) { public static void initJsonData(ResourceManager manager) {
gunsData.clear();
GunData.dataCache.invalidateAll();
// TODO 将枪械ID挪至JSON数据内
for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) { for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) {
var id = entry.getKey(); var id = entry.getKey();
var attribute = entry.getValue(); var attribute = entry.getValue();