Class DualStackUtils

java.lang.Object
net.neoforged.neoforge.network.DualStackUtils

public class DualStackUtils extends Object
  • Field Details

    • INITIAL_PREFER_IPv4_STACK

      private static final String INITIAL_PREFER_IPv4_STACK
    • INITIAL_PREFER_IPv6_ADDRESSES

      private static final String INITIAL_PREFER_IPv6_ADDRESSES
    • LOGGER

      private static final org.slf4j.Logger LOGGER
  • Constructor Details

    • DualStackUtils

      public DualStackUtils()
  • Method Details

    • initialise

      @Internal public static void initialise()
      Called by NeoForge to load this class so that the initial network property constants are set before any of the other methods in this class are called. This is so we can distinguish what Java's read once on JVM start vs what we've set for Netty.
    • checkIPv6

      public static boolean checkIPv6(String hostAddress)
      Resolve the address and see if Java and the OS return an IPv6 or IPv4 one, then let Netty know accordingly (it doesn't understand the java.net.preferIPv6Addresses=system property).
      Parameters:
      hostAddress - The address you want to check
      Returns:
      true if IPv6, false if IPv4
    • checkIPv6

      public static boolean checkIPv6(InetAddress inetAddress)
      Checks if an address is an IPv6 one or an IPv4 one, lets Netty know accordingly and returns the result.
      Parameters:
      inetAddress - The address you want to check
      Returns:
      true if IPv6, false if IPv4
    • getLocalAddress

      @Nullable public static @Nullable InetAddress getLocalAddress()
      Get the device's local IP address, taking into account scenarios where the client's network adapter supports IPv6 and has it enabled but the router's LAN does not.
      Returns:
      the client's local IP address or null if unable to determine it
    • getMulticastGroup

      public static String getMulticastGroup()
      Used for the "Open to LAN" feature.
      Returns:
      The multicast group to use for LAN discovery - IPv6 if available, IPv4 otherwise.
    • logInitialPreferences

      public static void logInitialPreferences()
      Logs the initial values of the java.net.preferIPv4Stack and java.net.preferIPv6Addresses system properties that Java has read on JVM start. Useful for debugging hostname lookup failures.
    • getAddressString

      public static String getAddressString(SocketAddress address)
      Object.toString() but with IPv6 address compression support