Skip to content

Commit 519b972

Browse files
committed
Updated ViaProxy API usage
1 parent a3457f1 commit 519b972

7 files changed

Lines changed: 82 additions & 167 deletions

File tree

src/main/java/net/raphimc/raknetproviders/b23r0_rust_raknet/B23R0RustRakNetBedrockProxyConnection.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,9 @@
1818
package net.raphimc.raknetproviders.b23r0_rust_raknet;
1919

2020
import io.netty.bootstrap.Bootstrap;
21-
import io.netty.channel.ChannelOption;
2221
import io.netty.channel.oio.OioEventLoopGroup;
23-
import net.raphimc.netminecraft.constants.ConnectionState;
2422
import net.raphimc.netminecraft.util.TransportType;
25-
import net.raphimc.viaproxy.ViaProxy;
2623
import net.raphimc.viaproxy.proxy.session.BedrockProxyConnection;
27-
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
2824

2925
public class B23R0RustRakNetBedrockProxyConnection extends BedrockProxyConnection {
3026

@@ -33,19 +29,8 @@ public B23R0RustRakNetBedrockProxyConnection(final B23R0RustRakNetBedrockProxyCo
3329
}
3430

3531
@Override
36-
public void initialize(TransportType transportType, Bootstrap bootstrap) {
37-
if (this.getC2pConnectionState() == ConnectionState.LOGIN) {
38-
bootstrap
39-
.group(new OioEventLoopGroup())
40-
.channel(B23R0RustRakNetChannel.class)
41-
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, ViaProxy.getConfig().getConnectTimeout())
42-
.attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY, this)
43-
.handler(this.channelInitializer);
44-
45-
this.channelFuture = bootstrap.register().syncUninterruptibly();
46-
} else {
47-
super.initialize(transportType, bootstrap);
48-
}
32+
public void initializeRakNet(TransportType transportType, Bootstrap bootstrap) {
33+
bootstrap.group(new OioEventLoopGroup()).channel(B23R0RustRakNetChannel.class);
4934
}
5035

5136
}

src/main/java/net/raphimc/raknetproviders/cloudburstmc_network/CloudburstMcNetworkBedrockProxyConnection.java

Lines changed: 45 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,18 @@
1717
*/
1818
package net.raphimc.raknetproviders.cloudburstmc_network;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
2120
import io.netty.bootstrap.Bootstrap;
2221
import io.netty.channel.Channel;
2322
import io.netty.channel.ChannelHandlerContext;
2423
import io.netty.channel.ChannelInitializer;
25-
import io.netty.channel.ChannelOption;
2624
import io.netty.channel.socket.DatagramChannel;
2725
import io.netty.handler.codec.MessageToMessageCodec;
28-
import net.raphimc.netminecraft.constants.ConnectionState;
2926
import net.raphimc.netminecraft.util.EventLoops;
3027
import net.raphimc.netminecraft.util.TransportType;
28+
import net.raphimc.viabedrock.netty.raknet.MessageCodec;
3129
import net.raphimc.viabedrock.protocol.data.ProtocolConstants;
3230
import net.raphimc.viaproxy.ViaProxy;
3331
import net.raphimc.viaproxy.proxy.session.BedrockProxyConnection;
34-
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
3532
import org.cloudburstmc.netty.channel.raknet.RakPriority;
3633
import org.cloudburstmc.netty.channel.raknet.RakReliability;
3734
import org.cloudburstmc.netty.channel.raknet.packet.RakMessage;
@@ -48,65 +45,55 @@ public CloudburstMcNetworkBedrockProxyConnection(final CloudburstMcNetworkBedroc
4845
}
4946

5047
@Override
51-
public void initialize(TransportType transportType, Bootstrap bootstrap) {
52-
if (this.getC2pConnectionState() == ConnectionState.LOGIN) {
53-
if (!DatagramChannel.class.isAssignableFrom(transportType.udpClientChannelClass())) {
54-
throw new IllegalArgumentException("Transport type channel must be a DatagramChannel");
55-
}
56-
if (transportType == TransportType.KQUEUE) transportType = TransportType.NIO; // KQueue doesn't work for Bedrock for some reason
57-
final Class<? extends DatagramChannel> channelClass = (Class<? extends DatagramChannel>) transportType.udpClientChannelClass();
58-
59-
bootstrap
60-
.group(EventLoops.getClientEventLoop(transportType))
61-
.channelFactory(RakChannelFactory.client(channelClass))
62-
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, ViaProxy.getConfig().getConnectTimeout())
63-
.option(RakChannelOption.RAK_PROTOCOL_VERSION, ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION)
64-
.option(RakChannelOption.RAK_COMPATIBILITY_MODE, true)
65-
.option(RakChannelOption.RAK_CLIENT_INTERNAL_ADDRESSES, 20)
66-
.option(RakChannelOption.RAK_TIME_BETWEEN_SEND_CONNECTION_ATTEMPTS_MS, 500)
67-
.option(RakChannelOption.RAK_CONNECT_TIMEOUT, (long) ViaProxy.getConfig().getConnectTimeout())
68-
.option(RakChannelOption.RAK_SESSION_TIMEOUT, 30_000L)
69-
.option(RakChannelOption.RAK_GUID, ThreadLocalRandom.current().nextLong())
70-
.attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY, this)
71-
.handler(new ChannelInitializer<>() {
72-
73-
@Override
74-
protected void initChannel(Channel channel) {
75-
channel.pipeline().addLast(channelInitializer);
48+
public void initializeRakNet(TransportType transportType, Bootstrap bootstrap) {
49+
if (!DatagramChannel.class.isAssignableFrom(transportType.udpClientChannelClass())) {
50+
throw new IllegalArgumentException("Channel type must be a DatagramChannel");
51+
}
52+
if (transportType == TransportType.KQUEUE) {
53+
transportType = TransportType.NIO; // KQueue doesn't work due to requiring the channel to be bound instead of connected
54+
}
55+
final Class<? extends DatagramChannel> channelClass = (Class<? extends DatagramChannel>) transportType.udpClientChannelClass();
7656

77-
channel.pipeline().addBefore(VLPipeline.VIABEDROCK_RAKNET_MESSAGE_CODEC_NAME, "viabedrock-frame-converter", new MessageToMessageCodec<org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage, RakMessage>() {
78-
@Override
79-
protected void encode(ChannelHandlerContext channelHandlerContext, RakMessage rakMessage, List<Object> list) {
80-
list.add(new org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage(
81-
rakMessage.content().retain(),
82-
org.cloudburstmc.upstream.netty.channel.raknet.RakReliability.valueOf(rakMessage.reliability().name()),
83-
org.cloudburstmc.upstream.netty.channel.raknet.RakPriority.valueOf(rakMessage.priority().name()),
84-
rakMessage.channel()
85-
));
86-
}
57+
bootstrap
58+
.group(EventLoops.getClientEventLoop(transportType))
59+
.channelFactory(RakChannelFactory.client(channelClass))
60+
.option(RakChannelOption.RAK_PROTOCOL_VERSION, ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION)
61+
.option(RakChannelOption.RAK_COMPATIBILITY_MODE, true)
62+
.option(RakChannelOption.RAK_CLIENT_INTERNAL_ADDRESSES, 20)
63+
.option(RakChannelOption.RAK_TIME_BETWEEN_SEND_CONNECTION_ATTEMPTS_MS, 500)
64+
.option(RakChannelOption.RAK_CONNECT_TIMEOUT, (long) ViaProxy.getConfig().getConnectTimeout())
65+
.option(RakChannelOption.RAK_SESSION_TIMEOUT, 30_000L)
66+
.option(RakChannelOption.RAK_GUID, ThreadLocalRandom.current().nextLong())
67+
.handler(new ChannelInitializer<>() {
8768

88-
@Override
89-
protected void decode(ChannelHandlerContext channelHandlerContext, org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage rakMessage, List<Object> list) {
90-
list.add(new RakMessage(
91-
rakMessage.content().retain(),
92-
RakReliability.valueOf(rakMessage.reliability().name()),
93-
RakPriority.valueOf(rakMessage.priority().name()),
94-
rakMessage.channel()
95-
));
96-
}
97-
});
98-
}
69+
@Override
70+
protected void initChannel(Channel channel) {
71+
channel.pipeline().addLast(channelInitializer);
9972

100-
});
73+
channel.pipeline().addBefore(MessageCodec.NAME, "viabedrock-frame-converter", new MessageToMessageCodec<org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage, RakMessage>() {
74+
@Override
75+
protected void encode(ChannelHandlerContext channelHandlerContext, RakMessage rakMessage, List<Object> list) {
76+
list.add(new org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage(
77+
rakMessage.content().retain(),
78+
org.cloudburstmc.upstream.netty.channel.raknet.RakReliability.valueOf(rakMessage.reliability().name()),
79+
org.cloudburstmc.upstream.netty.channel.raknet.RakPriority.valueOf(rakMessage.priority().name()),
80+
rakMessage.channel()
81+
));
82+
}
10183

102-
this.channelFuture = bootstrap.register().syncUninterruptibly();
84+
@Override
85+
protected void decode(ChannelHandlerContext channelHandlerContext, org.cloudburstmc.upstream.netty.channel.raknet.packet.RakMessage rakMessage, List<Object> list) {
86+
list.add(new RakMessage(
87+
rakMessage.content().retain(),
88+
RakReliability.valueOf(rakMessage.reliability().name()),
89+
RakPriority.valueOf(rakMessage.priority().name()),
90+
rakMessage.channel()
91+
));
92+
}
93+
});
94+
}
10395

104-
/*if (this.getChannel().config().setOption(RakChannelOption.RAK_IP_DONT_FRAGMENT, true)) {
105-
this.getChannel().config().setOption(RakChannelOption.RAK_MTU_SIZES, new Integer[]{1492, 1200, 576});
106-
}*/
107-
} else {
108-
super.initialize(transportType, bootstrap);
109-
}
96+
});
11097
}
11198

11299
}

src/main/java/net/raphimc/raknetproviders/extremeheat_fb_raknet/ExtremeheatFbRakNetBedrockProxyConnection.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,9 @@
1818
package net.raphimc.raknetproviders.extremeheat_fb_raknet;
1919

2020
import io.netty.bootstrap.Bootstrap;
21-
import io.netty.channel.ChannelOption;
2221
import io.netty.channel.oio.OioEventLoopGroup;
23-
import net.raphimc.netminecraft.constants.ConnectionState;
2422
import net.raphimc.netminecraft.util.TransportType;
25-
import net.raphimc.viaproxy.ViaProxy;
2623
import net.raphimc.viaproxy.proxy.session.BedrockProxyConnection;
27-
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
2824

2925
public class ExtremeheatFbRakNetBedrockProxyConnection extends BedrockProxyConnection {
3026

@@ -33,19 +29,8 @@ public ExtremeheatFbRakNetBedrockProxyConnection(final ExtremeheatFbRakNetBedroc
3329
}
3430

3531
@Override
36-
public void initialize(TransportType transportType, Bootstrap bootstrap) {
37-
if (this.getC2pConnectionState() == ConnectionState.LOGIN) {
38-
bootstrap
39-
.group(new OioEventLoopGroup())
40-
.channel(ExtremeheatFbRakNetChannel.class)
41-
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, ViaProxy.getConfig().getConnectTimeout())
42-
.attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY, this)
43-
.handler(this.channelInitializer);
44-
45-
this.channelFuture = bootstrap.register().syncUninterruptibly();
46-
} else {
47-
super.initialize(transportType, bootstrap);
48-
}
32+
public void initializeRakNet(TransportType transportType, Bootstrap bootstrap) {
33+
bootstrap.group(new OioEventLoopGroup()).channel(ExtremeheatFbRakNetChannel.class);
4934
}
5035

5136
}

src/main/java/net/raphimc/raknetproviders/relativitymc_netty_raknet/RelativityMcNettyRakNetBedrockProxyConnection.java

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,16 @@
1717
*/
1818
package net.raphimc.raknetproviders.relativitymc_netty_raknet;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
2120
import io.netty.bootstrap.Bootstrap;
2221
import io.netty.channel.Channel;
2322
import io.netty.channel.ChannelHandlerContext;
2423
import io.netty.channel.ChannelInitializer;
25-
import io.netty.channel.ChannelOption;
2624
import io.netty.handler.codec.MessageToMessageCodec;
27-
import net.raphimc.netminecraft.constants.ConnectionState;
2825
import net.raphimc.netminecraft.util.EventLoops;
2926
import net.raphimc.netminecraft.util.TransportType;
27+
import net.raphimc.viabedrock.netty.raknet.MessageCodec;
3028
import net.raphimc.viabedrock.protocol.data.ProtocolConstants;
31-
import net.raphimc.viaproxy.ViaProxy;
3229
import net.raphimc.viaproxy.proxy.session.BedrockProxyConnection;
33-
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
3430
import network.ycc.raknet.RakNet;
3531
import network.ycc.raknet.client.RakNetClient;
3632
import network.ycc.raknet.client.channel.RakNetClientThreadedChannel;
@@ -49,45 +45,37 @@ public RelativityMcNettyRakNetBedrockProxyConnection(final RelativityMcNettyRakN
4945
}
5046

5147
@Override
52-
public void initialize(TransportType transportType, Bootstrap bootstrap) {
53-
if (this.getC2pConnectionState() == ConnectionState.LOGIN) {
54-
bootstrap
55-
.group(EventLoops.getClientEventLoop(transportType))
56-
.channel(RakNetClient.THREADED_CHANNEL)
57-
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, ViaProxy.getConfig().getConnectTimeout())
58-
.option(RakNet.PROTOCOL_VERSION, ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION)
59-
.attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY, this)
60-
.handler(new ChannelInitializer<>() {
48+
public void initializeRakNet(TransportType transportType, Bootstrap bootstrap) {
49+
bootstrap
50+
.group(EventLoops.getClientEventLoop(transportType))
51+
.channel(RakNetClient.THREADED_CHANNEL)
52+
.option(RakNet.PROTOCOL_VERSION, ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION)
53+
.handler(new ChannelInitializer<>() {
6154

62-
@Override
63-
protected void initChannel(Channel channel) {
64-
final RakNetClientThreadedChannel rakChannel = (RakNetClientThreadedChannel) channel;
65-
rakChannel.config().setprotocolVersions(new int[]{ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION});
66-
channel.pipeline().addLast(channelInitializer);
55+
@Override
56+
protected void initChannel(Channel channel) {
57+
final RakNetClientThreadedChannel rakChannel = (RakNetClientThreadedChannel) channel;
58+
rakChannel.config().setprotocolVersions(new int[]{ProtocolConstants.BEDROCK_RAKNET_PROTOCOL_VERSION});
59+
channel.pipeline().addLast(channelInitializer);
6760

68-
channel.pipeline().addBefore(VLPipeline.VIABEDROCK_RAKNET_MESSAGE_CODEC_NAME, "viabedrock-frame-converter", new MessageToMessageCodec<FrameData, RakMessage>() {
69-
@Override
70-
protected void encode(ChannelHandlerContext channelHandlerContext, RakMessage rakMessage, List<Object> list) {
71-
final FrameData frameData = FrameData.read(rakMessage.content(), rakMessage.content().readableBytes(), false);
72-
frameData.setReliability(FramedPacket.Reliability.get(rakMessage.reliability().ordinal()));
73-
frameData.setOrderChannel(rakMessage.channel());
74-
list.add(frameData);
75-
}
61+
channel.pipeline().addBefore(MessageCodec.NAME, "viabedrock-frame-converter", new MessageToMessageCodec<FrameData, RakMessage>() {
62+
@Override
63+
protected void encode(ChannelHandlerContext channelHandlerContext, RakMessage rakMessage, List<Object> list) {
64+
final FrameData frameData = FrameData.read(rakMessage.content(), rakMessage.content().readableBytes(), false);
65+
frameData.setReliability(FramedPacket.Reliability.get(rakMessage.reliability().ordinal()));
66+
frameData.setOrderChannel(rakMessage.channel());
67+
list.add(frameData);
68+
}
7669

77-
@Override
78-
protected void decode(ChannelHandlerContext channelHandlerContext, FrameData frameData, List<Object> list) {
79-
final RakReliability reliability = RakReliability.fromId(frameData.getReliability().ordinal());
80-
list.add(new RakMessage(frameData.createData(), reliability, RakPriority.NORMAL, frameData.getOrderChannel()));
81-
}
82-
});
83-
}
70+
@Override
71+
protected void decode(ChannelHandlerContext channelHandlerContext, FrameData frameData, List<Object> list) {
72+
final RakReliability reliability = RakReliability.fromId(frameData.getReliability().ordinal());
73+
list.add(new RakMessage(frameData.createData(), reliability, RakPriority.NORMAL, frameData.getOrderChannel()));
74+
}
75+
});
76+
}
8477

85-
});
86-
87-
this.channelFuture = bootstrap.register().syncUninterruptibly();
88-
} else {
89-
super.initialize(transportType, bootstrap);
90-
}
78+
});
9179
}
9280

9381
}

src/main/java/net/raphimc/raknetproviders/sandertv_go_raknet/SanderTvGoRakNetBedrockProxyConnection.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,9 @@
1818
package net.raphimc.raknetproviders.sandertv_go_raknet;
1919

2020
import io.netty.bootstrap.Bootstrap;
21-
import io.netty.channel.ChannelOption;
2221
import io.netty.channel.oio.OioEventLoopGroup;
23-
import net.raphimc.netminecraft.constants.ConnectionState;
2422
import net.raphimc.netminecraft.util.TransportType;
25-
import net.raphimc.viaproxy.ViaProxy;
2623
import net.raphimc.viaproxy.proxy.session.BedrockProxyConnection;
27-
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
2824

2925
public class SanderTvGoRakNetBedrockProxyConnection extends BedrockProxyConnection {
3026

@@ -33,19 +29,8 @@ public SanderTvGoRakNetBedrockProxyConnection(final SanderTvGoRakNetBedrockProxy
3329
}
3430

3531
@Override
36-
public void initialize(TransportType transportType, Bootstrap bootstrap) {
37-
if (this.getC2pConnectionState() == ConnectionState.LOGIN) {
38-
bootstrap
39-
.group(new OioEventLoopGroup())
40-
.channel(SanderTvGoRakNetChannel.class)
41-
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, ViaProxy.getConfig().getConnectTimeout())
42-
.attr(ProxyConnection.PROXY_CONNECTION_ATTRIBUTE_KEY, this)
43-
.handler(this.channelInitializer);
44-
45-
this.channelFuture = bootstrap.register().syncUninterruptibly();
46-
} else {
47-
super.initialize(transportType, bootstrap);
48-
}
32+
public void initializeRakNet(TransportType transportType, Bootstrap bootstrap) {
33+
bootstrap.group(new OioEventLoopGroup()).channel(SanderTvGoRakNetChannel.class);
4934
}
5035

5136
}

0 commit comments

Comments
 (0)