diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java index b3ed499cd..6830132b8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/multiplayer/MultiplayerManager.java @@ -215,6 +215,7 @@ public final class MultiplayerManager { public static class HiperSession extends ManagedProcess { private final EventManager onExit = new EventManager<>(); private final EventManager onIPAllocated = new EventManager<>(); + private final EventManager onValidAt = new EventManager<>(); private final BufferedWriter writer; private int error = 0; @@ -251,6 +252,10 @@ public final class MultiplayerManager { if (msg.contains("Failed to load certificate from config")) { error = HiperExitEvent.FAILED_LOAD_CONFIG; } + if (msg.contains("Validity of client certificate")) { + Optional validAt = tryCast(logJson.get("valid"), String.class); + validAt.ifPresent(s -> onValidAt.fireEvent(new HiperShowValidAtEvent(this, s))); + } } if (logJson.containsKey("network")) { @@ -295,6 +300,10 @@ public final class MultiplayerManager { return onIPAllocated; } + public EventManager onValidAt() { + return onValidAt; + } + } public static class HiperExitEvent extends Event { @@ -329,6 +338,19 @@ public final class MultiplayerManager { } } + public static class HiperShowValidAtEvent extends Event { + private final String validAt; + + public HiperShowValidAtEvent(Object source, String validAt) { + super(source); + this.validAt = validAt; + } + + public String getValidAt() { + return validAt; + } + } + public static class HiperExitException extends RuntimeException { private final int exitCode; private final boolean ready;