Skip to content

Commit

Permalink
Fixed crash from #28
Browse files Browse the repository at this point in the history
  • Loading branch information
HttpRafa committed Apr 9, 2024
1 parent 4bdf5c5 commit cd2fe64
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,31 @@
import de.rafael.modflared.Modflared;
import de.rafael.modflared.interfaces.mixin.IConnectScreen;
import de.rafael.modflared.tunnel.TunnelStatus;
import io.netty.channel.ChannelFuture;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.multiplayer.ConnectScreen;
import net.minecraft.client.gui.screen.ConnectScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.network.ClientConnection;
import org.jetbrains.annotations.NotNull;

import java.net.InetAddress;
import java.net.InetSocketAddress;

public class ConnectScreenMethods {

public static ChannelFuture connect(@NotNull InetSocketAddress address, boolean useEpoll, ClientConnection connection) {
var status = Modflared.TUNNEL_MANAGER.handleConnect(address);
Modflared.TUNNEL_MANAGER.prepareConnection(status, connection);
public static @NotNull ClientConnection connect(InetAddress inetAddress, int port, boolean shouldUseNativeTransport) {
InetSocketAddress address = new InetSocketAddress(inetAddress, port);
TunnelStatus status = Modflared.TUNNEL_MANAGER.handleConnect(address);

var currentScreen = MinecraftClient.getInstance().currentScreen;
if (currentScreen instanceof ConnectScreen connectScreen) {
((IConnectScreen) connectScreen).setStatus(status);
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
if (currentScreen instanceof ConnectScreen) {
((IConnectScreen) currentScreen).setStatus(status);
}

return ClientConnection.connect(status.state() == TunnelStatus.State.USE ? status.runningTunnel().access().tunnelAddress() : address, useEpoll, connection);
InetSocketAddress targetAddress = status.state() == TunnelStatus.State.USE ? status.runningTunnel().access().tunnelAddress() : address;
ClientConnection connection = ClientConnection.connect(targetAddress.getAddress(), targetAddress.getPort(), shouldUseNativeTransport);
Modflared.TUNNEL_MANAGER.prepareConnection(status, connection);

return connection;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@

import de.rafael.modflared.interfaces.mixin.IConnectScreen;
import de.rafael.modflared.tunnel.TunnelStatus;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ConnectScreen;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.network.ClientConnection;
import net.minecraft.client.gui.screen.multiplayer.ConnectScreen;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package de.rafael.modflared.mixin;

import de.rafael.modflared.methods.ConnectScreenMethods;
import net.minecraft.network.ClientConnection;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

import java.net.InetAddress;

@Mixin(targets = "net.minecraft.client.gui.screen.ConnectScreen$1")
public abstract class ConnectScreenThreadRunMixin implements Runnable {

@Redirect(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;connect(Ljava/net/InetAddress;IZ)Lnet/minecraft/network/ClientConnection;"))
private @NotNull ClientConnection connect(InetAddress inetAddress, int port, boolean shouldUseNativeTransport) {
return ConnectScreenMethods.connect(inetAddress, port, shouldUseNativeTransport);
}

}
3 changes: 2 additions & 1 deletion common/src/main/resources/modflared-common.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
],
"mixins": [
"ClientConnectionMixin",
"ConnectScreenMixin"
"ConnectScreenMixin",
"ConnectScreenThreadRunMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion fabric/src/main/resources/modflared.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
"client": [
],
"mixins": [
"ConnectScreenThreadRunMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down
1 change: 0 additions & 1 deletion forge/src/main/resources/modflared.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
"client": [
],
"mixins": [
"ConnectScreenThreadRunMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

This file was deleted.

0 comments on commit cd2fe64

Please sign in to comment.