87 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.multiplayer.resolver;
 | |
| 
 | |
| import com.google.common.net.HostAndPort;
 | |
| import com.mojang.logging.LogUtils;
 | |
| import java.net.IDN;
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import org.slf4j.Logger;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public final class ServerAddress {
 | |
| 	private static final Logger LOGGER = LogUtils.getLogger();
 | |
| 	private final HostAndPort hostAndPort;
 | |
| 	private static final ServerAddress INVALID = new ServerAddress(HostAndPort.fromParts("server.invalid", 25565));
 | |
| 
 | |
| 	public ServerAddress(String host, int port) {
 | |
| 		this(HostAndPort.fromParts(host, port));
 | |
| 	}
 | |
| 
 | |
| 	private ServerAddress(HostAndPort hostAndPort) {
 | |
| 		this.hostAndPort = hostAndPort;
 | |
| 	}
 | |
| 
 | |
| 	public String getHost() {
 | |
| 		try {
 | |
| 			return IDN.toASCII(this.hostAndPort.getHost());
 | |
| 		} catch (IllegalArgumentException var2) {
 | |
| 			return "";
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public int getPort() {
 | |
| 		return this.hostAndPort.getPort();
 | |
| 	}
 | |
| 
 | |
| 	public static ServerAddress parseString(String ip) {
 | |
| 		if (ip == null) {
 | |
| 			return INVALID;
 | |
| 		} else {
 | |
| 			try {
 | |
| 				HostAndPort hostAndPort = HostAndPort.fromString(ip).withDefaultPort(25565);
 | |
| 				return hostAndPort.getHost().isEmpty() ? INVALID : new ServerAddress(hostAndPort);
 | |
| 			} catch (IllegalArgumentException var2) {
 | |
| 				LOGGER.info("Failed to parse URL {}", ip, var2);
 | |
| 				return INVALID;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public static boolean isValidAddress(String hostAndPort) {
 | |
| 		try {
 | |
| 			HostAndPort hostAndPort2 = HostAndPort.fromString(hostAndPort);
 | |
| 			String string = hostAndPort2.getHost();
 | |
| 			if (!string.isEmpty()) {
 | |
| 				IDN.toASCII(string);
 | |
| 				return true;
 | |
| 			}
 | |
| 		} catch (IllegalArgumentException var3) {
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	static int parsePort(String port) {
 | |
| 		try {
 | |
| 			return Integer.parseInt(port.trim());
 | |
| 		} catch (Exception var2) {
 | |
| 			return 25565;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public String toString() {
 | |
| 		return this.hostAndPort.toString();
 | |
| 	}
 | |
| 
 | |
| 	public boolean equals(Object object) {
 | |
| 		if (this == object) {
 | |
| 			return true;
 | |
| 		} else {
 | |
| 			return object instanceof ServerAddress ? this.hostAndPort.equals(((ServerAddress)object).hostAndPort) : false;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public int hashCode() {
 | |
| 		return this.hostAndPort.hashCode();
 | |
| 	}
 | |
| }
 |