From bca8ba3fcecf46bbca3e96d6095cde91ce93e66d Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sat, 24 May 2025 02:06:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E8=BD=BD=E5=85=B7=E5=92=8C=E6=9E=AA?= =?UTF-8?q?=E6=A2=B0ID=E8=AF=BB=E5=8F=96=E6=B7=BB=E5=8A=A0=E5=85=9C?= =?UTF-8?q?=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/vehicle/VehicleDataTool.java | 14 +++++++++++--- .../atsuishio/superbwarfare/tools/GunsTool.java | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) 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());