From 78cff5697e631acf74c3771ef5612bc2a7bafe23 Mon Sep 17 00:00:00 2001 From: YuKun Liu Date: Fri, 19 Dec 2025 14:07:21 -0800 Subject: [PATCH] feat: code --- .../online/mineroo/common/BindRequest.java | 18 +++++++---- .../paper/listeners/PlayerBindListener.java | 31 ++++++++++++++----- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/common/src/main/java/online/mineroo/common/BindRequest.java b/common/src/main/java/online/mineroo/common/BindRequest.java index a86d160..a03b943 100644 --- a/common/src/main/java/online/mineroo/common/BindRequest.java +++ b/common/src/main/java/online/mineroo/common/BindRequest.java @@ -181,7 +181,7 @@ public class BindRequest { public class PlayerBindStatusResponse implements Serializable { @SerializedName("status") private PlayerBindStatusEnum status; - @SerializedName("msg") private String message; + @SerializedName("message") private String message; @SerializedName("cached") private boolean cached; @@ -276,14 +276,18 @@ public class BindRequest { } public CompletableFuture checkPlayerBindStatus( - UUID player_uuid, String user_email + UUID playerUuid, String userEmail ) { String path = "/server/user-bind-status"; Map params = new HashMap<>(); - params.put("web_email", user_email); - params.put("mc_uuid", player_uuid.toString()); + params.put("web_email", userEmail); + + if (playerUuid != null) { + String simpleUuid = playerUuid.toString().replace("-", ""); + params.put("mc_uuid", simpleUuid); + } return networkService.getData(path, params) .thenApply(response -> { @@ -352,14 +356,16 @@ public class BindRequest { } public CompletableFuture PlayerBindRequest( - String webEmail, String playerUuid, String playerUsername + String webEmail, UUID playerUuid, String playerUsername ) { String path = "/server/user-bind"; JsonObject json = new JsonObject(); + String simpleUuid = playerUuid.toString().replace("-", ""); + json.addProperty("web_email", webEmail); - json.addProperty("mc_uuid", playerUuid); + json.addProperty("mc_uuid", simpleUuid); json.addProperty("mc_username", playerUsername); return networkService.postData(path, json) diff --git a/paper/src/main/java/online/mineroo/paper/listeners/PlayerBindListener.java b/paper/src/main/java/online/mineroo/paper/listeners/PlayerBindListener.java index 993f104..7343077 100644 --- a/paper/src/main/java/online/mineroo/paper/listeners/PlayerBindListener.java +++ b/paper/src/main/java/online/mineroo/paper/listeners/PlayerBindListener.java @@ -53,12 +53,11 @@ public class PlayerBindListener implements Listener { return; try { - var response = this.plugin.getBindRequest() - .checkPlayerBindStatus(uuid, event.getConnection().getProfile().getName()) - .join(); + var response = this.plugin.getBindRequest().checkPlayerBindStatus(uuid, null).join(); PlayerBindStatusEnum status = response.getStatus(); + plugin.getSLF4JLogger().info(status.toString()); if (status == PlayerBindStatusEnum.BOUND) { return; } else if (status == PlayerBindStatusEnum.NOT_BOUND) { @@ -85,13 +84,31 @@ public class PlayerBindListener implements Listener { audience.showDialog(dialog); PlayerBindResponse bindResponse = dialogResponse.join(); - if (bindResponse.getStatus() != PlayerBindEnum.BOUND) { + if (bindResponse == null) { + audience.closeDialog(); + connection.disconnect( + Component.text("Operation timed out, please try again.", NamedTextColor.RED) + ); + awaitingResponse.remove(uniqueId); + return; + } + + if (bindResponse.getStatus() == PlayerBindEnum.BOUND) { + return; + } else if (bindResponse.getStatus() == PlayerBindEnum.PENDING) { + audience.closeDialog(); + String msg = "Binding request submitted!\nPlease go to Mineroo.Online to confirm the " + + "binding. After confirmation, please re-enter the server."; + connection.disconnect(Component.text(msg, NamedTextColor.GREEN)); + } else { audience.closeDialog(); - String statusStr = (status != null) ? status.toString() : "UNKNOWN_STATUS"; + String statusStr = (bindResponse.getStatus() != null) + ? bindResponse.getStatus().toString() + : "UNKNOWN_STATUS"; String msg = bindResponse.getMessage(); if (msg == null) - msg = "Unkown"; + msg = "Bind failed."; String kickMessage = statusStr + " : " + msg; @@ -145,7 +162,7 @@ public class PlayerBindListener implements Listener { BindRequest bindRequest = plugin.getBindRequest(); String playerName = conn.getProfile().getName(); - bindRequest.PlayerBindRequest(userEmail, uniqueId.toString(), conn.getProfile().getName()) + bindRequest.PlayerBindRequest(userEmail, uniqueId, conn.getProfile().getName()) .thenAccept(response -> { setConnectionJoinResult(uniqueId, response); }) .exceptionally(ex -> { logger.error("Error occurred during bind request for " + playerName, ex);