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 b76ed7412..6c1ace7a3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/data/vehicle/VehicleDataTool.java @@ -1,7 +1,6 @@ package com.atsuishio.superbwarfare.data.vehicle; import com.atsuishio.superbwarfare.Mod; -import com.atsuishio.superbwarfare.network.message.receive.GunsDataMessage; import com.atsuishio.superbwarfare.network.message.receive.VehiclesDataMessage; import com.google.gson.Gson; import net.minecraft.server.level.ServerPlayer; @@ -33,8 +32,17 @@ public class VehicleDataTool { Gson gson = new Gson(); var data = gson.fromJson(new InputStreamReader(attribute.open()), DefaultVehicleData.class); - if (!vehicleData.containsKey(data.id)) { - vehicleData.put(data.id, data); + String id; + if (!data.id.isEmpty()) { + id = data.id; + } else { + var path = entry.getKey().getPath(); + id = Mod.MODID + ":" + path.substring(VEHICLE_DATA_FOLDER.length() + 1, path.length() - VEHICLE_DATA_FOLDER.length() - 1); + Mod.LOGGER.warn("Vehicle ID for {} is empty, try using {} as id", id, path); + } + + if (!vehicleData.containsKey(id)) { + vehicleData.put(id, data); } } catch (Exception e) { Mod.LOGGER.error(e.getMessage()); diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index 7f221d500..33d41c6e1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -25,6 +25,8 @@ public class GunsTool { public static HashMap gunsData = new HashMap<>(); + public static final String GUN_DATA_FOLDER = "guns"; + /** * 初始化数据,从data中读取数据json文件 */ @@ -32,15 +34,24 @@ public class GunsTool { gunsData.clear(); GunData.dataCache.invalidateAll(); - for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) { + for (var entry : manager.listResources(GUN_DATA_FOLDER, file -> file.getPath().endsWith(".json")).entrySet()) { var attribute = entry.getValue(); try { Gson gson = new Gson(); var data = gson.fromJson(new InputStreamReader(attribute.open()), DefaultGunData.class); - if (!gunsData.containsKey(data.id)) { - gunsData.put(data.id, data); + String id; + if (!data.id.trim().isEmpty()) { + id = data.id; + } else { + var path = entry.getKey().getPath(); + id = Mod.MODID + ":" + path.substring(GUN_DATA_FOLDER.length() + 1, path.length() - GUN_DATA_FOLDER.length() - 1); + Mod.LOGGER.warn("Gun ID for {} is empty, try using {} as id", path, id); + } + + if (!gunsData.containsKey(id)) { + gunsData.put(id, data); } } catch (Exception e) { Mod.LOGGER.error(e.getMessage());