From 12163042f532e630e6ff9747447f3cee85e286bb Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Thu, 20 Apr 2023 13:03:47 +0200 Subject: [PATCH] load Classic stuff after Minecraft --- .../de/florianmichael/viafabricplus/ViaFabricPlus.java | 5 +++-- .../definition/ChatLengthCalculation.java | 4 +++- .../v1_19_2/storage/AbstractChatSession.java | 6 ------ .../minecraft/screen/MixinCreativeInventoryScreen.java | 2 ++ .../protocolhack/netty/ViaFabricPlusVLBPipeline.java | 4 ++-- .../{DisconnectHandle.java => DisconnectAdapter.java} | 2 +- .../netty/viabedrock/RakNetClientConnection.java | 9 +++------ .../ViaFabricPlusVLBBaseVersionProvider.java | 10 ++-------- 8 files changed, 16 insertions(+), 26 deletions(-) rename src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/{DisconnectHandle.java => DisconnectAdapter.java} (95%) diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index f4abdc59..2be9ea15 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -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(); diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java b/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java index bec4271e..4cd4ff35 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java +++ b/src/main/java/de/florianmichael/viafabricplus/definition/ChatLengthCalculation.java @@ -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; + } } }); diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/v1_19_2/storage/AbstractChatSession.java b/src/main/java/de/florianmichael/viafabricplus/definition/v1_19_2/storage/AbstractChatSession.java index 7defcebe..bab29a6d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/v1_19_2/storage/AbstractChatSession.java +++ b/src/main/java/de/florianmichael/viafabricplus/definition/v1_19_2/storage/AbstractChatSession.java @@ -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; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java index b59aba50..4cdf75d5 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java @@ -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); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLBPipeline.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLBPipeline.java index efc7a81f..d06aa270 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLBPipeline.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLBPipeline.java @@ -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()); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectHandle.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectAdapter.java similarity index 95% rename from src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectHandle.java rename to src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectAdapter.java index 8daafffc..0e9bd8b1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectHandle.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/DisconnectAdapter.java @@ -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 diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/RakNetClientConnection.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/RakNetClientConnection.java index 89de552c..428f3886 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/RakNetClientConnection.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/viabedrock/RakNetClientConnection.java @@ -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(); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialoadingbase/ViaFabricPlusVLBBaseVersionProvider.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialoadingbase/ViaFabricPlusVLBBaseVersionProvider.java index 04ec8659..637c8549 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialoadingbase/ViaFabricPlusVLBBaseVersionProvider.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialoadingbase/ViaFabricPlusVLBBaseVersionProvider.java @@ -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()) {