diff options
Diffstat (limited to 'src/main/java/gq/malwarefight/nosession/mixin/client')
-rw-r--r-- | src/main/java/gq/malwarefight/nosession/mixin/client/YggdrasilSessionMixin.java | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/src/main/java/gq/malwarefight/nosession/mixin/client/YggdrasilSessionMixin.java b/src/main/java/gq/malwarefight/nosession/mixin/client/YggdrasilSessionMixin.java index 440ca17..48327fe 100644 --- a/src/main/java/gq/malwarefight/nosession/mixin/client/YggdrasilSessionMixin.java +++ b/src/main/java/gq/malwarefight/nosession/mixin/client/YggdrasilSessionMixin.java @@ -3,40 +3,29 @@ package gq.malwarefight.nosession.mixin.client; import com.mojang.authlib.GameProfile; import com.mojang.authlib.exceptions.AuthenticationException; import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService; +import gq.malwarefight.nosession.mixin.Utils; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.Objects; -import java.util.Scanner; @Mixin(YggdrasilMinecraftSessionService.class) public class YggdrasilSessionMixin { - private static final int BASE_PORT = 47777; @Inject(method = "joinServer", at = @At("HEAD"), cancellable = true, remap = false) public void joinServer(GameProfile profile, String authenticationToken, String serverId, CallbackInfo ci) throws AuthenticationException { if (authenticationToken.equals("<noSessionAccessToken>")) { // this token has been messed with by the Tweaker - Socket socket = null; - for (int i = BASE_PORT; i < BASE_PORT + 10; i++) { - try { - socket = new Socket(); - socket.connect(new InetSocketAddress(InetAddress.getLoopbackAddress(), i)); - break; - } catch (Exception ignored) {} - } + Socket socket = Utils.getProperSocket(); try { assert socket != null; socket.getOutputStream().write(("login " + serverId + "\n").getBytes(StandardCharsets.UTF_8)); socket.getOutputStream().flush(); - Scanner result = new Scanner(socket.getInputStream(), StandardCharsets.UTF_8.name()); - String line = result.nextLine(); + String line = Utils.readString(socket.getInputStream(), '\n'); String[] parts = line.split(" "); if (Objects.equals(parts[0], "200")) { ci.cancel(); @@ -52,7 +41,7 @@ public class YggdrasilSessionMixin { } try { - socket.getOutputStream().write("disconnect".getBytes(StandardCharsets.UTF_8)); + socket.getOutputStream().write("disconnect\n".getBytes(StandardCharsets.UTF_8)); socket.close(); } catch (IOException ignored) {} } |