use of com.viaversion.viaversion.api.connection.UserConnection in project DirtMultiversion by DirtPowered.
the class DetectionHandler method channelRead.
@Override
public void channelRead(ChannelHandlerContext ctx, Object object) {
ByteBuf buffer = (ByteBuf) object;
try {
short packetId = buffer.readUnsignedByte();
if (packetId != 0x02 && packetId != 0xFE) {
ctx.channel().pipeline().addAfter(ChannelConstants.DETECTION_HANDLER, ChannelConstants.NETTY_LENGTH_DECODER, new VarIntFrameDecoder()).addAfter(ChannelConstants.NETTY_LENGTH_DECODER, ChannelConstants.NETTY_LENGTH_ENCODER, new VarIntFrameEncoder()).addAfter(ChannelConstants.NETTY_LENGTH_ENCODER, ChannelConstants.NETTY_PACKET_DECODER, new NettyPacketDecoder(main, userData, PacketDirection.TO_SERVER)).addAfter(ChannelConstants.NETTY_PACKET_DECODER, ChannelConstants.NETTY_PACKET_ENCODER, new NettyPacketEncoder());
if (main.getConfiguration().enableViaVersion()) {
UserConnection userConnection = new UserConnectionImpl(ctx.channel());
new ProtocolPipelineImpl(userConnection);
ctx.channel().pipeline().addBefore(ChannelConstants.NETTY_PACKET_DECODER, ChannelConstants.VIA_DECODER, new ViaDecodeHandler(userConnection));
ctx.channel().pipeline().addBefore(ChannelConstants.NETTY_PACKET_DECODER, ChannelConstants.VIA_ENCODER, new ViaEncodeHandler(userConnection));
}
} else {
ctx.channel().pipeline().addAfter(ChannelConstants.DETECTION_HANDLER, ChannelConstants.LEGACY_PING, new LegacyPingVersionHandler(userData)).addAfter(ChannelConstants.LEGACY_PING, ChannelConstants.LEGACY_DECODER, new PacketDecoder(main, PacketDirection.TO_SERVER, userData)).addAfter(ChannelConstants.LEGACY_DECODER, ChannelConstants.LEGACY_ENCODER, new PacketEncoder());
}
} catch (RuntimeException e) {
e.printStackTrace();
} finally {
buffer.resetReaderIndex();
ctx.channel().pipeline().remove(this);
ctx.fireChannelRead(object);
}
}
use of com.viaversion.viaversion.api.connection.UserConnection in project DirtMultiversion by DirtPowered.
the class ViaPlugin method tick.
@Override
public void tick() {
for (UserData userData : api.getAllConnections()) {
ProtocolStorage s = userData.getProtocolStorage();
if (!s.hasObject(PlayerMovementTracker.class))
return;
PlayerMovementTracker movementTracker = s.get(PlayerMovementTracker.class);
if ((System.currentTimeMillis() - movementTracker.getLastLocationUpdate()) >= 50) {
if (userData.getUniqueId() == null)
return;
UserConnection userConnection = connectionManager.getConnectedClient(userData.getUniqueId());
if (userConnection == null)
return;
ProtocolInfo protocolInfo = userConnection.getProtocolInfo();
if (protocolInfo == null)
return;
if (protocolInfo.getPipeline().contains(Protocol1_9To1_8.class) && protocolInfo.getState() == State.PLAY) {
PacketWrapper wrapper = new PacketWrapperImpl(0x03, null, userConnection);
wrapper.write(Type.BOOLEAN, true);
try {
wrapper.sendToServer(Protocol1_9To1_8.class, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
use of com.viaversion.viaversion.api.connection.UserConnection in project ViaFabric by ViaVersion.
the class MixinServerNetworkIoChInit method onInitChannel.
@Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false)
private void onInitChannel(Channel channel, CallbackInfo ci) {
if (channel instanceof SocketChannel) {
UserConnection user = new UserConnectionImpl(channel);
new ProtocolPipelineImpl(user);
channel.pipeline().addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user));
channel.pipeline().addBefore("decoder", CommonTransformer.HANDLER_DECODER_NAME, new FabricDecodeHandler(user));
}
}
use of com.viaversion.viaversion.api.connection.UserConnection in project ViaFabric by ViaVersion.
the class MixinServerNetworkIoChInit method onInitChannel.
@Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false)
private void onInitChannel(Channel channel, CallbackInfo ci) {
if (channel instanceof SocketChannel) {
UserConnection user = new UserConnectionImpl(channel);
new ProtocolPipelineImpl(user);
channel.pipeline().addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user));
channel.pipeline().addBefore("decoder", CommonTransformer.HANDLER_DECODER_NAME, new FabricDecodeHandler(user));
}
}
use of com.viaversion.viaversion.api.connection.UserConnection in project ViaFabric by ViaVersion.
the class MixinServerNetworkIoChInit method onInitChannel.
@Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false)
private void onInitChannel(Channel channel, CallbackInfo ci) {
if (channel instanceof SocketChannel) {
UserConnection user = new UserConnectionImpl(channel);
new ProtocolPipelineImpl(user);
channel.pipeline().addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user));
channel.pipeline().addBefore("decoder", CommonTransformer.HANDLER_DECODER_NAME, new FabricDecodeHandler(user));
}
}
Aggregations