Skip to content

Commit

Permalink
Merge branch 'refs/heads/multi/latest' into multi/1.16.5
Browse files Browse the repository at this point in the history
# Conflicts:
#	common/src/main/java/de/rafael/modflared/mixin/ConnectScreenMixin.java
#	forge/src/main/resources/modflared.mixins.json
#	gradle.properties
  • Loading branch information
HttpRafa committed Apr 9, 2024
2 parents 7533916 + c120019 commit 4bdf5c5
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 31 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.5-SNAPSHOT" apply false
id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false
}

architectury {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package de.rafael.modflared.methods;

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.network.ClientConnection;
import org.jetbrains.annotations.NotNull;

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);

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

return ClientConnection.connect(status.state() == TunnelStatus.State.USE ? status.runningTunnel().access().tunnelAddress() : address, useEpoll, connection);
}

}
Original file line number Diff line number Diff line change
@@ -1,48 +1,23 @@
package de.rafael.modflared.mixin;

import de.rafael.modflared.Modflared;
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;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

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

@Mixin(targets = "net.minecraft.client.gui.screen.ConnectScreen$1")
abstract class ConnectScreen1Mixin 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) {
InetSocketAddress address = new InetSocketAddress(inetAddress, port);
TunnelStatus status = Modflared.TUNNEL_MANAGER.handleConnect(address);

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

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;
}

}

@Implements(@Interface(iface = IConnectScreen.class, prefix = "connectScreen$"))
@Mixin(ConnectScreen.class)
public abstract class ConnectScreenMixin extends Screen implements IConnectScreen {
Expand Down
1 change: 0 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,6 @@
],
"mixins": [
"ClientConnectionMixin",
"ConnectScreen1Mixin",
"ConnectScreenMixin"
],
"injectors": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.rafael.modflared.fabric.mixin;

import de.rafael.modflared.methods.ConnectScreenMethods;
import io.netty.channel.ChannelFuture;
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.InetSocketAddress;

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

@Redirect(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;connect" +
"(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;"))
private ChannelFuture connect(@NotNull InetSocketAddress address, boolean useEpoll, ClientConnection connection) {
return ConnectScreenMethods.connect(address, useEpoll, connection);
}

}
1 change: 1 addition & 0 deletions fabric/src/main/resources/modflared.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"client": [
],
"mixins": [
"ConnectScreenThreadRunMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down
3 changes: 2 additions & 1 deletion forge/src/main/resources/modflared.mixins.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"required": true,
"package": "net.examplemod.mixin.forge",
"package": "de.rafael.modflared.forge.mixin",
"compatibilityLevel": "JAVA_8",
"minVersion": "0.8",
"client": [
],
"mixins": [
"ConnectScreenThreadRunMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ maven_group=de.rafael
mod_minecraft_version=1.16.5

# Loader Properties
fabric_loader_version=0.15.7
fabric_loader_version=0.15.9
fabric_api_version=0.42.0+1.16
forge_version=1.16.5-36.2.41

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.rafael.modflared.neoforge.mixin;

import de.rafael.modflared.methods.ConnectScreenMethods;
import io.netty.channel.ChannelFuture;
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.InetSocketAddress;

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

@Redirect(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;connect" +
"(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;"))
private ChannelFuture connect(@NotNull InetSocketAddress address, boolean useEpoll, ClientConnection connection) {
return ConnectScreenMethods.connect(address, useEpoll, connection);
}

}

0 comments on commit 4bdf5c5

Please sign in to comment.