From 3f5f2e04a6a948c19e79652af14160bd61bc4f06 Mon Sep 17 00:00:00 2001 From: Leng <110669856+xiaoshaziYA@users.noreply.github.com> Date: Fri, 21 Mar 2025 21:24:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81ipv6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ogcl/fun/PlayerIPadminAPI.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/ogcl/fun/PlayerIPadminAPI.java b/src/main/java/ogcl/fun/PlayerIPadminAPI.java index d92d6ce..a314686 100644 --- a/src/main/java/ogcl/fun/PlayerIPadminAPI.java +++ b/src/main/java/ogcl/fun/PlayerIPadminAPI.java @@ -51,7 +51,7 @@ public void getPlayerLocationAsync(String ip, LocationInfoCallback callback) { * @return 返回地理位置信息,如果失败则返回"未知"。 */ private String getLocationInfo(String ip) { - String apiUrl = "https://www.ip.cn/api/index?ip=" + ip + "&type=1"; + String apiUrl = "http://ip-api.com/json/" + ip + "?lang=zh-CN"; try { URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); @@ -64,11 +64,16 @@ private String getLocationInfo(String ip) { } in.close(); JsonObject jsonResponse = JsonParser.parseString(response.toString()).getAsJsonObject(); - if (jsonResponse.get("code").getAsInt() == 0) { - return jsonResponse.get("address").getAsString(); + if (jsonResponse.get("status").getAsString().equals("success")) { + String country = jsonResponse.get("country").getAsString(); + String regionName = jsonResponse.get("regionName").getAsString(); + String city = jsonResponse.get("city").getAsString(); + return country + ", " + regionName + ", " + city; + } else { + plugin.getLogger().warning("[PlayerIPadmin] IP API 请求失败,错误信息: " + jsonResponse.get("message").getAsString()); } } catch (Exception e) { - Bukkit.getLogger().warning("[PlayerIPadmin] Failed to fetch location for IP: " + ip + " - " + e.getMessage()); + plugin.getLogger().warning("[PlayerIPadmin] Failed to fetch location for IP: " + ip + " - " + e.getMessage()); } return "未知"; }