Fix incompatibility with "Fast IP Ping"

Inject in a different place to prevent the mixin from failing to
apply. It looks like we do essentially the same logic anyways.
This commit is contained in:
Spottedleaf
2025-06-20 14:46:00 -07:00
parent 0ea5e4dcf5
commit 724b8ef20a
2 changed files with 17 additions and 15 deletions

View File

@@ -10,7 +10,7 @@ loader_version=0.16.14
supported_minecraft_versions=1.21.6 supported_minecraft_versions=1.21.6
neoforge_version=21.6.11-beta neoforge_version=21.6.11-beta
neoform_version=1.21.6-20250617.151856 neoform_version=1.21.6-20250617.151856
fabric_api_version=0.127.0+1.21.6 fabric_api_version=0.127.1+1.21.6
snakeyaml_version=2.3 snakeyaml_version=2.3
concurrentutil_version=0.0.3 concurrentutil_version=0.0.3
yamlconfig_version=1.0.2 yamlconfig_version=1.0.2

View File

@@ -1,10 +1,13 @@
package ca.spottedleaf.moonrise.mixin.serverlist; package ca.spottedleaf.moonrise.mixin.serverlist;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.multiplayer.resolver.ServerAddress;
import net.minecraft.client.multiplayer.resolver.ServerAddressResolver; import net.minecraft.client.multiplayer.resolver.ServerAddressResolver;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Redirect;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
@Mixin(ServerAddressResolver.class) @Mixin(ServerAddressResolver.class)
@@ -20,19 +23,18 @@ interface ServerAddressResolverMixin {
"lambda$static$0" "lambda$static$0"
}, },
at = @At( at = @At(
value = "INVOKE", value = "NEW",
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;" target = "(Ljava/net/InetAddress;I)Ljava/net/InetSocketAddress;"
) )
) )
private static InetAddress eliminateRDNS(final String name) throws UnknownHostException { private static InetSocketAddress eliminateRDNS(InetAddress addr, final int port,
final InetAddress ret = InetAddress.getByName(name); @Local(ordinal = 0, argsOnly = true) final ServerAddress serverAddress) throws UnknownHostException {
final byte[] address = addr.getAddress();
final byte[] address = ret.getAddress();
if (address != null) { if (address != null) {
// pass name to prevent rDNS // pass name to prevent rDNS
return InetAddress.getByAddress(name, address); addr = InetAddress.getByAddress(serverAddress.getHost(), address);
} }
return ret; return new InetSocketAddress(addr, port);
} }
} }