1use std::net::SocketAddr;
2
3use azalea_protocol::{address::ServerAddr, connect::Proxy};
4
5#[derive(Clone, Debug, Default)]
7#[non_exhaustive]
8pub struct JoinOpts {
9 pub server_proxy: Option<Proxy>,
12 pub sessionserver_proxy: Option<Proxy>,
21 #[doc(alias = "custom_address")]
24 pub custom_server_addr: Option<ServerAddr>,
25 #[doc(alias = "custom_resolved_address")]
28 pub custom_socket_addr: Option<SocketAddr>,
29}
30
31impl JoinOpts {
32 pub fn new() -> Self {
33 Self::default()
34 }
35
36 pub fn update(&mut self, other: &Self) {
37 if let Some(proxy) = other.server_proxy.clone() {
38 self.server_proxy = Some(proxy);
39 }
40 if let Some(proxy) = other.sessionserver_proxy.clone() {
41 self.sessionserver_proxy = Some(proxy);
42 }
43 if let Some(custom_server_addr) = other.custom_server_addr.clone() {
44 self.custom_server_addr = Some(custom_server_addr);
45 }
46 if let Some(custom_socket_addr) = other.custom_socket_addr {
47 self.custom_socket_addr = Some(custom_socket_addr);
48 }
49 }
50
51 #[must_use]
58 pub fn proxy(self, proxy: Proxy) -> Self {
59 self.server_proxy(proxy.clone()).sessionserver_proxy(proxy)
60 }
61 #[must_use]
69 pub fn server_proxy(mut self, proxy: Proxy) -> Self {
70 self.server_proxy = Some(proxy);
71 self
72 }
73 #[must_use]
78 pub fn sessionserver_proxy(mut self, proxy: Proxy) -> Self {
79 self.sessionserver_proxy = Some(proxy);
80 self
81 }
82
83 #[must_use]
85 pub fn custom_server_addr(mut self, server_addr: ServerAddr) -> Self {
86 self.custom_server_addr = Some(server_addr);
87 self
88 }
89 #[must_use]
92 pub fn custom_socket_addr(mut self, socket_addr: SocketAddr) -> Self {
93 self.custom_socket_addr = Some(socket_addr);
94 self
95 }
96
97 #[doc(hidden)]
98 #[deprecated = "renamed to `custom_server_addr`."]
99 pub fn custom_address(self, server_addr: ServerAddr) -> Self {
100 self.custom_server_addr(server_addr)
101 }
102 #[doc(hidden)]
103 #[deprecated = "renamed to `custom_socket_addr`."]
104 pub fn custom_resolved_address(self, socket_addr: SocketAddr) -> Self {
105 self.custom_socket_addr(socket_addr)
106 }
107}