Skip to content

Commit 154328c

Browse files
Move away from ViaLoader loading library
1 parent bf57975 commit 154328c

14 files changed

+184
-80
lines changed

build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ dependencies {
5656
includeInJar "net.raphimc:ViaLegacy:3.0.13-SNAPSHOT"
5757
includeInJar "com.viaversion:viaaprilfools-common:4.0.8-SNAPSHOT"
5858
includeInJar "net.raphimc:ViaBedrock:0.0.25-SNAPSHOT"
59-
includeInJar("com.viaversion:vialoader:4.0.7-SNAPSHOT") {
60-
exclude group: "org.slf4j", module: "slf4j-api"
61-
}
6259

60+
includeInJar "com.google.guava:guava:33.5.0-jre"
6361
includeInJar "com.google.code.gson:gson:2.13.2"
6462
includeInJar "com.formdev:flatlaf:3.7"
6563
includeInJar "com.formdev:flatlaf-extras:3.7"

src/main/java/net/raphimc/viaproxy/protocoltranslator/ProtocolTranslator.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,18 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator;
1919

20-
import com.viaversion.vialoader.ViaLoader;
21-
import com.viaversion.vialoader.impl.platform.ViaAprilFoolsPlatformImpl;
22-
import com.viaversion.vialoader.impl.platform.ViaBackwardsPlatformImpl;
23-
import com.viaversion.vialoader.impl.platform.ViaBedrockPlatformImpl;
24-
import com.viaversion.vialoader.impl.platform.ViaRewindPlatformImpl;
20+
import com.viaversion.viaaprilfools.ViaAprilFoolsPlatformImpl;
21+
import com.viaversion.viabackwards.ViaBackwardsPlatformImpl;
22+
import com.viaversion.viarewind.ViaRewindPlatformImpl;
23+
import com.viaversion.viaversion.ViaManagerImpl;
2524
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
2625
import com.viaversion.viaversion.api.protocol.version.VersionType;
26+
import com.viaversion.viaversion.commands.ViaCommandHandler;
2727
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5;
28+
import net.raphimc.viabedrock.ViaBedrockPlatformImpl;
2829
import net.raphimc.viaproxy.ViaProxy;
2930
import net.raphimc.viaproxy.plugins.events.ProtocolTranslatorInitEvent;
30-
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyVLLoader;
31-
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyViaLegacyPlatformImpl;
32-
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyViaVersionPlatformImpl;
31+
import net.raphimc.viaproxy.protocoltranslator.impl.*;
3332

3433
import java.io.File;
3534
import java.nio.file.FileAlreadyExistsException;
@@ -63,7 +62,11 @@ public boolean isKnown() {
6362
public static void init() {
6463
patchConfigs();
6564
final Supplier<?>[] platformSuppliers = ViaProxy.EVENT_MANAGER.call(new ProtocolTranslatorInitEvent(ViaBackwardsPlatformImpl::new, ViaRewindPlatformImpl::new, ViaProxyViaLegacyPlatformImpl::new, ViaAprilFoolsPlatformImpl::new, ViaBedrockPlatformImpl::new)).getPlatformSuppliers().toArray(new Supplier[0]);
66-
ViaLoader.init(new ViaProxyViaVersionPlatformImpl(), new ViaProxyVLLoader(), null, null, platformSuppliers);
65+
ViaManagerImpl.initAndLoad(new ViaProxyViaVersionPlatformImpl(), new ViaProxyInjector(), new ViaCommandHandler(), new ViaProxyLoader(), () -> {
66+
for (Supplier<?> platformSupplier : platformSuppliers) {
67+
platformSupplier.get();
68+
}
69+
});
6770
Protocol1_20_3To1_20_5.strictErrorHandling = false;
6871
ProtocolVersion.register(AUTO_DETECT_PROTOCOL);
6972
}

src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyVLPipeline.java renamed to src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyInjector.java

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,18 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator.impl;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
21-
import com.viaversion.viaversion.api.connection.UserConnection;
22-
import io.netty.channel.ChannelHandler;
23-
import net.raphimc.netminecraft.constants.MCPipeline;
20+
import com.viaversion.viaversion.platform.NoopInjector;
2421

25-
public class ViaProxyVLPipeline extends VLPipeline {
26-
27-
public ViaProxyVLPipeline(final UserConnection user) {
28-
super(user);
29-
}
30-
31-
@Override
32-
public ChannelHandler createViaCodec() {
33-
return new ViaProxyViaCodec(this.connection);
34-
}
35-
36-
@Override
37-
protected String compressionCodecName() {
38-
return MCPipeline.COMPRESSION_HANDLER_NAME;
39-
}
22+
public class ViaProxyInjector extends NoopInjector {
4023

4124
@Override
42-
protected String packetCodecName() {
43-
return MCPipeline.PACKET_CODEC_HANDLER_NAME;
25+
public String getEncoderName() {
26+
return ViaProxyViaCodec.NAME;
4427
}
4528

4629
@Override
47-
protected String lengthCodecName() {
48-
return MCPipeline.SIZER_HANDLER_NAME;
30+
public String getDecoderName() {
31+
return ViaProxyViaCodec.NAME;
4932
}
5033

5134
}

src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyVLLoader.java renamed to src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyLoader.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
package net.raphimc.viaproxy.protocoltranslator.impl;
1919

2020
import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.provider.TransferProvider;
21-
import com.viaversion.vialoader.impl.viaversion.VLLoader;
2221
import com.viaversion.viaversion.api.Via;
22+
import com.viaversion.viaversion.api.platform.ViaPlatformLoader;
2323
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
2424
import com.viaversion.viaversion.protocols.v1_8to1_9.provider.CompressionProvider;
2525
import net.raphimc.viabedrock.protocol.provider.NettyPipelineProvider;
@@ -33,12 +33,10 @@
3333
import net.raphimc.viaproxy.plugins.events.ViaLoadingEvent;
3434
import net.raphimc.viaproxy.protocoltranslator.providers.*;
3535

36-
public class ViaProxyVLLoader extends VLLoader {
36+
public class ViaProxyLoader implements ViaPlatformLoader {
3737

3838
@Override
3939
public void load() {
40-
super.load();
41-
4240
// ViaVersion
4341
Via.getManager().getProviders().use(CompressionProvider.class, new ViaProxyCompressionProvider());
4442
Via.getManager().getProviders().use(VersionProvider.class, new ViaProxyVersionProvider());
@@ -61,4 +59,8 @@ public void load() {
6159
ViaProxy.EVENT_MANAGER.call(new ViaLoadingEvent());
6260
}
6361

62+
@Override
63+
public void unload() {
64+
}
65+
6466
}

src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyViaCodec.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,42 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator.impl;
1919

20-
import com.viaversion.vialoader.netty.ViaCodec;
2120
import com.viaversion.viaversion.api.connection.UserConnection;
21+
import com.viaversion.viaversion.exception.CancelCodecException;
22+
import com.viaversion.viaversion.platform.ViaCodecHandler;
23+
import com.viaversion.viaversion.util.PipelineUtil;
2224
import io.netty.channel.ChannelHandlerContext;
25+
import io.netty.channel.ChannelPromise;
2326
import net.raphimc.viaproxy.ViaProxy;
2427
import net.raphimc.viaproxy.util.logging.Logger;
2528

26-
public class ViaProxyViaCodec extends ViaCodec {
29+
public class ViaProxyViaCodec extends ViaCodecHandler {
2730

2831
public ViaProxyViaCodec(UserConnection user) {
2932
super(user);
3033
}
3134

3235
@Override
33-
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
34-
if (ViaProxy.getConfig().shouldIgnoreProtocolTranslationErrors()) {
35-
try {
36-
super.channelRead(ctx, msg);
37-
} catch (Throwable e) {
38-
Logger.LOGGER.error("ProtocolTranslator packet translation error occurred", e);
36+
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
37+
try {
38+
super.write(ctx, msg, promise);
39+
} catch (Throwable e) {
40+
if (!(e instanceof CancelCodecException)) {
41+
throw e;
42+
} else {
43+
promise.setSuccess();
3944
}
40-
} else {
41-
super.channelRead(ctx, msg);
4245
}
4346
}
4447

48+
@Override
49+
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
50+
try {
51+
super.channelRead(ctx, msg);
52+
} catch (Throwable e) {
53+
if (!(e instanceof CancelCodecException)) {
54+
throw e;
55+
}
56+
}
57+
}
4558
}

src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyViaLegacyPlatformImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator.impl;
1919

20-
import com.viaversion.vialoader.impl.platform.ViaLegacyPlatformImpl;
2120
import com.viaversion.viaversion.api.Via;
21+
import net.raphimc.vialegacy.ViaLegacyPlatformImpl;
2222

2323
public class ViaProxyViaLegacyPlatformImpl extends ViaLegacyPlatformImpl {
2424

src/main/java/net/raphimc/viaproxy/protocoltranslator/impl/ViaProxyViaVersionPlatformImpl.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,30 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator.impl;
1919

20-
import com.viaversion.vialoader.impl.platform.ViaVersionPlatformImpl;
2120
import com.viaversion.viaversion.api.connection.UserConnection;
2221
import com.viaversion.viaversion.libs.gson.JsonArray;
2322
import com.viaversion.viaversion.libs.gson.JsonObject;
23+
import com.viaversion.viaversion.platform.UserConnectionViaVersionPlatform;
2424
import net.raphimc.viaproxy.ViaProxy;
2525
import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
2626
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
2727
import net.raphimc.viaproxy.proxy.util.CloseAndReturn;
28+
import net.raphimc.viaproxy.util.logging.JLoggerToSLF4J;
29+
import org.slf4j.LoggerFactory;
2830

29-
public class ViaProxyViaVersionPlatformImpl extends ViaVersionPlatformImpl {
31+
import java.util.logging.Logger;
32+
33+
public class ViaProxyViaVersionPlatformImpl extends UserConnectionViaVersionPlatform {
3034

3135
public ViaProxyViaVersionPlatformImpl() {
3236
super(ViaProxy.getCwd());
3337
}
3438

39+
@Override
40+
public Logger createLogger(String name) {
41+
return new JLoggerToSLF4J(LoggerFactory.getLogger(name));
42+
}
43+
3544
@Override
3645
public String getPlatformName() {
3746
return "ViaProxy";

src/main/java/net/raphimc/viaproxy/protocoltranslator/providers/ViaProxyNettyPipelineProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
*/
1818
package net.raphimc.viaproxy.protocoltranslator.providers;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
2120
import com.viaversion.viaversion.api.connection.UserConnection;
2221
import io.netty.channel.Channel;
2322
import net.lenni0451.commons.unchecked.Sneaky;
2423
import net.raphimc.netminecraft.constants.MCPipeline;
2524
import net.raphimc.viabedrock.api.io.compression.ProtocolCompression;
2625
import net.raphimc.viabedrock.netty.CompressionCodec;
2726
import net.raphimc.viabedrock.netty.raknet.AesEncryptionCodec;
27+
import net.raphimc.viabedrock.netty.raknet.MessageCodec;
2828
import net.raphimc.viabedrock.protocol.provider.NettyPipelineProvider;
2929
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
3030

@@ -53,9 +53,9 @@ public void enableEncryption(UserConnection user, SecretKey key) {
5353
throw new IllegalStateException("Encryption already enabled");
5454
}
5555

56-
if (channel.pipeline().get(VLPipeline.VIABEDROCK_RAKNET_MESSAGE_CODEC_NAME) != null) { // Only enable encryption for RakNet connections
56+
if (channel.pipeline().get(MessageCodec.NAME) != null) { // Only enable encryption for RakNet connections
5757
try {
58-
channel.pipeline().addAfter(VLPipeline.VIABEDROCK_RAKNET_MESSAGE_CODEC_NAME, MCPipeline.ENCRYPTION_HANDLER_NAME, new AesEncryptionCodec(key));
58+
channel.pipeline().addAfter(MessageCodec.NAME, MCPipeline.ENCRYPTION_HANDLER_NAME, new AesEncryptionCodec(key));
5959
} catch (Throwable e) {
6060
Sneaky.sneakyThrow(e);
6161
}

src/main/java/net/raphimc/viaproxy/proxy/client2proxy/Client2ProxyChannelInitializer.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@
1717
*/
1818
package net.raphimc.viaproxy.proxy.client2proxy;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
2120
import com.viaversion.viaversion.api.connection.UserConnection;
22-
import com.viaversion.viaversion.connection.UserConnectionImpl;
23-
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
21+
import com.viaversion.viaversion.platform.ViaChannelInitializer;
2422
import io.netty.channel.Channel;
2523
import io.netty.channel.ChannelHandler;
2624
import io.netty.handler.codec.haproxy.HAProxyMessageDecoder;
@@ -31,7 +29,7 @@
3129
import net.raphimc.viaproxy.ViaProxy;
3230
import net.raphimc.viaproxy.plugins.events.Client2ProxyChannelInitializeEvent;
3331
import net.raphimc.viaproxy.plugins.events.types.ITyped;
34-
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyVLPipeline;
32+
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyViaCodec;
3533
import net.raphimc.viaproxy.proxy.client2proxy.passthrough.LegacyPassthroughInitialHandler;
3634

3735
import java.util.function.Supplier;
@@ -64,10 +62,9 @@ protected void initChannel(Channel channel) {
6462
super.initChannel(channel);
6563
channel.attr(MCPipeline.PACKET_REGISTRY_ATTRIBUTE_KEY).set(new DefaultPacketRegistry(false, -1));
6664

67-
final UserConnection user = new UserConnectionImpl(channel, false);
68-
new ProtocolPipelineImpl(user);
69-
channel.pipeline().addLast(new ViaProxyVLPipeline(user));
70-
channel.pipeline().addAfter(VLPipeline.VIA_CODEC_NAME, "via-" + MCPipeline.FLOW_CONTROL_HANDLER_NAME, new NoReadFlowControlHandler());
65+
final UserConnection user = ViaChannelInitializer.createUserConnection(channel, false);
66+
channel.pipeline().addBefore(MCPipeline.PACKET_CODEC_HANDLER_NAME, ViaProxyViaCodec.NAME, new ViaProxyViaCodec(user));
67+
channel.pipeline().addAfter(ViaProxyViaCodec.NAME, "via-" + MCPipeline.FLOW_CONTROL_HANDLER_NAME, new NoReadFlowControlHandler());
7168

7269
if (ViaProxy.EVENT_MANAGER.call(new Client2ProxyChannelInitializeEvent(ITyped.Type.POST, channel, false)).isCancelled()) {
7370
channel.close();

src/main/java/net/raphimc/viaproxy/proxy/proxy2server/Proxy2ServerChannelInitializer.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@
1717
*/
1818
package net.raphimc.viaproxy.proxy.proxy2server;
1919

20-
import com.viaversion.vialoader.netty.VLPipeline;
2120
import com.viaversion.viaversion.api.connection.UserConnection;
22-
import com.viaversion.viaversion.connection.UserConnectionImpl;
23-
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
21+
import com.viaversion.viaversion.platform.ViaChannelInitializer;
2422
import io.netty.channel.Channel;
2523
import io.netty.channel.ChannelHandler;
2624
import io.netty.handler.codec.haproxy.HAProxyMessageEncoder;
@@ -30,13 +28,19 @@
3028
import net.raphimc.netminecraft.netty.connection.MinecraftChannelInitializer;
3129
import net.raphimc.netminecraft.packet.registry.DefaultPacketRegistry;
3230
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
31+
import net.raphimc.viabedrock.netty.BatchLengthCodec;
32+
import net.raphimc.viabedrock.netty.DisconnectHandler;
33+
import net.raphimc.viabedrock.netty.PacketCodec;
34+
import net.raphimc.viabedrock.netty.raknet.MessageCodec;
3335
import net.raphimc.viabedrock.netty.util.DatagramCodec;
3436
import net.raphimc.viabedrock.protocol.NetherNetStatusProtocol;
3537
import net.raphimc.viabedrock.protocol.RakNetStatusProtocol;
38+
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
39+
import net.raphimc.vialegacy.netty.PreNettyLengthCodec;
3640
import net.raphimc.viaproxy.ViaProxy;
3741
import net.raphimc.viaproxy.plugins.events.Proxy2ServerChannelInitializeEvent;
3842
import net.raphimc.viaproxy.plugins.events.types.ITyped;
39-
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyVLPipeline;
43+
import net.raphimc.viaproxy.protocoltranslator.impl.ViaProxyViaCodec;
4044
import net.raphimc.viaproxy.proxy.session.ProxyConnection;
4145
import net.raphimc.viaproxy.util.NetherNetInetSocketAddress;
4246

@@ -71,19 +75,26 @@ protected void initChannel(Channel channel) {
7175
super.initChannel(channel);
7276
channel.attr(MCPipeline.PACKET_REGISTRY_ATTRIBUTE_KEY).set(new DefaultPacketRegistry(true, proxyConnection.getClientVersion().getVersion()));
7377

74-
final UserConnection user = new UserConnectionImpl(channel, true);
75-
new ProtocolPipelineImpl(user);
78+
final UserConnection user = ViaChannelInitializer.createUserConnection(channel, true);
7679
proxyConnection.setUserConnection(user);
77-
channel.pipeline().addLast(new ViaProxyVLPipeline(user));
78-
channel.pipeline().addAfter(VLPipeline.VIA_CODEC_NAME, "via-" + MCPipeline.FLOW_CONTROL_HANDLER_NAME, new NoReadFlowControlHandler());
79-
if (proxyConnection.getServerVersion().equals(BedrockProtocolVersion.bedrockLatest)) {
80+
81+
channel.pipeline().addBefore(MCPipeline.PACKET_CODEC_HANDLER_NAME, ViaProxyViaCodec.NAME, new ViaProxyViaCodec(user));
82+
channel.pipeline().addAfter(ViaProxyViaCodec.NAME, "via-" + MCPipeline.FLOW_CONTROL_HANDLER_NAME, new NoReadFlowControlHandler());
83+
if (proxyConnection.getServerVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_6_4)) {
84+
channel.pipeline().addBefore(MCPipeline.SIZER_HANDLER_NAME, PreNettyLengthCodec.NAME, new PreNettyLengthCodec(user));
85+
} else if (proxyConnection.getServerVersion().equals(BedrockProtocolVersion.bedrockLatest)) {
86+
channel.pipeline().addBefore(MCPipeline.SIZER_HANDLER_NAME, DisconnectHandler.NAME, new DisconnectHandler());
87+
channel.pipeline().addBefore(MCPipeline.SIZER_HANDLER_NAME, MessageCodec.NAME, new MessageCodec());
88+
channel.pipeline().replace(MCPipeline.SIZER_HANDLER_NAME, MCPipeline.SIZER_HANDLER_NAME, new BatchLengthCodec());
89+
channel.pipeline().addBefore(ViaProxyViaCodec.NAME, PacketCodec.NAME, new PacketCodec());
90+
8091
channel.pipeline().remove(MCPipeline.COMPRESSION_HANDLER_NAME);
8192
channel.pipeline().remove(MCPipeline.ENCRYPTION_HANDLER_NAME);
8293

8394
if (proxyConnection.getC2pConnectionState() == ConnectionState.STATUS) {
8495
channel.pipeline().remove(MCPipeline.SIZER_HANDLER_NAME);
85-
channel.pipeline().remove(VLPipeline.VIABEDROCK_PACKET_CODEC_NAME);
86-
channel.pipeline().replace(VLPipeline.VIABEDROCK_RAKNET_MESSAGE_CODEC_NAME, "viabedrock-datagram-codec", new DatagramCodec());
96+
channel.pipeline().remove(PacketCodec.NAME);
97+
channel.pipeline().replace(MessageCodec.NAME, "viabedrock-datagram-codec", new DatagramCodec());
8798
if (proxyConnection.getServerAddress() instanceof NetherNetInetSocketAddress) {
8899
user.getProtocolInfo().getPipeline().add(NetherNetStatusProtocol.INSTANCE);
89100
} else if (proxyConnection.getServerAddress() instanceof InetSocketAddress) {

0 commit comments

Comments
 (0)