load Classic stuff after Minecraft

This commit is contained in:
FlorianMichael 2023-04-20 13:03:47 +02:00
parent 8d71d19075
commit 12163042f5
8 changed files with 16 additions and 26 deletions

View File

@ -54,7 +54,6 @@ public class ViaFabricPlus {
// Classic Stuff
CustomClassicProtocolExtensions.create();
ClassicItemSelectionScreen.create();
ClassicProtocolCommands.create();
ClassiCubeAccountHandler.create();
@ -71,7 +70,9 @@ public class ViaFabricPlus {
settingsSystem.init();
informationSystem.init();
// Mappings
// Stuff which requires Minecraft to be initialized
ClassicItemSelectionScreen.create();
PackFormatsMappings.load();
ItemReleaseVersionMappings.create();
ArmorPointsMappings.load();

View File

@ -37,7 +37,9 @@ public class ChatLengthCalculation {
if (protocolVersion.isOlderThanOrEqualTo(ProtocolVersion.v1_10)) {
INSTANCE.maxLength = 100;
if (protocolVersion.isOlderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) INSTANCE.maxLength = 64 - MinecraftClient.getInstance().getSession().getUsername().length() - 2;
if (protocolVersion.isOlderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) {
INSTANCE.maxLength = 64 - MinecraftClient.getInstance().getSession().getUsername().length() - 2;
}
}
});

View File

@ -26,14 +26,12 @@ import java.security.PrivateKey;
public abstract class AbstractChatSession extends StoredObject {
private final ProfileKey profileKey;
private final PrivateKey privateKey;
private final MessageSigner signer;
public AbstractChatSession(UserConnection user, final ProfileKey profileKey, final PrivateKey privateKey) {
super(user);
this.profileKey = profileKey;
this.privateKey = privateKey;
this.signer = MessageSigner.create(privateKey, "SHA256withRSA");
}
@ -42,10 +40,6 @@ public abstract class AbstractChatSession extends StoredObject {
return profileKey;
}
public PrivateKey getPrivateKey() {
return privateKey;
}
public MessageSigner getSigner() {
return signer;
}

View File

@ -32,6 +32,8 @@ public class MixinCreativeInventoryScreen {
@Inject(method = "init", at = @At("RETURN"))
public void replaceCreativeMenu(CallbackInfo ci) {
if (VisualSettings.INSTANCE.replaceCreativeInventory.getValue()) {
if (ClassicItemSelectionScreen.INSTANCE == null) return;
MinecraftClient.getInstance().setScreen(ClassicItemSelectionScreen.INSTANCE);
}
}

View File

@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.protocolhack.netty;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
import de.florianmichael.viafabricplus.protocolhack.netty.viabedrock.DisconnectHandle;
import de.florianmichael.viafabricplus.protocolhack.netty.viabedrock.DisconnectAdapter;
import de.florianmichael.viafabricplus.protocolhack.netty.viabedrock.codec.PingEncapsulationCodec;
import de.florianmichael.viafabricplus.protocolhack.netty.viabedrock.codec.RakMessageEncapsulationCodec;
import de.florianmichael.viafabricplus.protocolhack.netty.viabedrock.codec.library_fix.FixedUnconnectedPingEncoder;
@ -89,7 +89,7 @@ public class ViaFabricPlusVLBPipeline extends VLBPipeline {
pipeline.replace("splitter", VIA_BEDROCK_BATCH_LENGTH_HANDLER_NAME, new BatchLengthCodec());
pipeline.addBefore(VIA_BEDROCK_BATCH_LENGTH_HANDLER_NAME, VIA_BEDROCK_DISCONNECT_HANDLER_NAME, new DisconnectHandle());
pipeline.addBefore(VIA_BEDROCK_BATCH_LENGTH_HANDLER_NAME, VIA_BEDROCK_DISCONNECT_HANDLER_NAME, new DisconnectAdapter());
pipeline.addAfter(VIA_BEDROCK_DISCONNECT_HANDLER_NAME, VIA_BEDROCK_FRAME_ENCAPSULATION_HANDLER_NAME, new RakMessageEncapsulationCodec());
pipeline.addAfter(VIA_BEDROCK_BATCH_LENGTH_HANDLER_NAME, VIA_BEDROCK_PACKET_ENCAPSULATION_HANDLER_NAME, new PacketEncapsulationCodec());

View File

@ -21,7 +21,7 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPromise;
public class DisconnectHandle extends ChannelOutboundHandlerAdapter {
public class DisconnectAdapter extends ChannelOutboundHandlerAdapter {
private boolean calledDisconnect = false;
@Override

View File

@ -36,11 +36,9 @@ import java.util.concurrent.ThreadLocalRandom;
public class RakNetClientConnection {
public static void connectRakNet(final ClientConnection clientConnection, final InetSocketAddress address, final Lazy lazy, final Class channelType) {
Bootstrap nettyBoostrap = new Bootstrap();
nettyBoostrap = nettyBoostrap.group((EventLoopGroup) lazy.get());
nettyBoostrap = nettyBoostrap.handler(new ChannelInitializer<>() {
final Bootstrap nettyBoostrap = new Bootstrap().group((EventLoopGroup) lazy.get()).handler(new ChannelInitializer<>() {
@Override
protected void initChannel(@NotNull Channel channel) throws Exception {
protected void initChannel(@NotNull Channel channel) {
try {
channel.config().setOption(RakChannelOption.RAK_PROTOCOL_VERSION, 11);
channel.config().setOption(RakChannelOption.RAK_CONNECT_TIMEOUT, 4_000L);
@ -55,8 +53,7 @@ public class RakNetClientConnection {
ProtocolHack.injectVLBPipeline(clientConnection, channel, address);
}
});
nettyBoostrap = nettyBoostrap.channelFactory(channelType == EpollSocketChannel.class ? RakChannelFactory.client(EpollDatagramChannel.class) : RakChannelFactory.client(NioDatagramChannel.class));
}).channelFactory(channelType == EpollSocketChannel.class ? RakChannelFactory.client(EpollDatagramChannel.class) : RakChannelFactory.client(NioDatagramChannel.class));
if (ProtocolHack.getRakNetPingSessions().contains(address)) {
nettyBoostrap.bind(new InetSocketAddress(0)).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE).syncUninterruptibly();

View File

@ -35,7 +35,6 @@ import io.netty.channel.epoll.EpollSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.timeout.ReadTimeoutHandler;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ServerAddress;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.NetworkSide;
import net.minecraft.network.NetworkState;
@ -45,10 +44,8 @@ import net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket;
import net.minecraft.network.packet.s2c.query.QueryPongS2CPacket;
import net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket;
import net.minecraft.text.Text;
import net.minecraft.util.Lazy;
import org.jetbrains.annotations.NotNull;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.concurrent.CompletableFuture;
@ -66,10 +63,7 @@ public class ViaFabricPlusVLBBaseVersionProvider extends VLBBaseVersionProvider
final ClientConnection clientConnection = new ClientConnection(NetworkSide.CLIENTBOUND);
final boolean useEpoll = Epoll.isAvailable() && MinecraftClient.getInstance().options.shouldUseNativeTransport();
final Class class_ = useEpoll ? EpollSocketChannel.class : NioSocketChannel.class;
final Lazy lazy = useEpoll ? ClientConnection.EPOLL_CLIENT_IO_GROUP : ClientConnection.CLIENT_IO_GROUP;
final ChannelFuture channelFuture = new Bootstrap().group((EventLoopGroup) lazy.get()).handler(new ChannelInitializer<>() {
final ChannelFuture channelFuture = new Bootstrap().group((useEpoll ? ClientConnection.EPOLL_CLIENT_IO_GROUP : ClientConnection.CLIENT_IO_GROUP).get()).handler(new ChannelInitializer<>() {
protected void initChannel(@NotNull Channel channel) {
try {
channel.config().setOption(ChannelOption.TCP_NODELAY, true);
@ -81,7 +75,7 @@ public class ViaFabricPlusVLBBaseVersionProvider extends VLBBaseVersionProvider
ClientConnection.addHandlers(channelPipeline, NetworkSide.CLIENTBOUND);
channelPipeline.addLast("packet_handler", clientConnection);
}
}).channel(class_).connect(address);
}).channel(useEpoll ? EpollSocketChannel.class : NioSocketChannel.class).connect(address);
channelFuture.addListener(future1 -> {
if (!future1.isSuccess()) {