From 2f9e8a40adaa624d4c31c8d52a88cdea3122f6d4 Mon Sep 17 00:00:00 2001 From: RaphiMC <50594595+RaphiMC@users.noreply.github.com> Date: Sat, 7 Oct 2023 18:51:12 +0200 Subject: [PATCH] Made <= 1.6.4 protocols stateless (Finished Via 4.8.1 update) --- .../protocol}/EmptyBaseProtocol.java | 2 +- .../protocol}/PreNettyBaseProtocol.java | 2 +- .../api/protocol/StatelessProtocol.java | 34 ++ .../protocol/StatelessTransitionProtocol.java | 67 ++++ .../vialegacy/platform/ViaLegacyPlatform.java | 2 +- .../Protocola1_0_16_2toa1_0_15.java | 8 +- .../Protocola1_0_17_1_0_17_4toa1_0_16_2.java | 4 +- ...tocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java | 4 +- ...rotocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java | 7 +- .../Protocola1_2_2toa1_2_0_1_2_1_1.java | 4 +- .../Protocola1_2_3_1_2_3_4toa1_2_2.java | 4 +- ...rotocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java | 4 +- .../Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java | 4 +- .../Protocol1_0_0_1tob1_8_0_1.java | 4 +- .../Protocolb1_1_2tob1_0_1_1.java | 4 +- .../Protocolb1_2_0_2tob1_1_2.java | 4 +- .../Protocolb1_3_0_1tob1_2_0_2.java | 4 +- .../Protocolb1_4_0_1tob1_3_0_1.java | 4 +- .../Protocolb1_5_0_2tob1_4_0_1.java | 23 +- .../Protocolb1_6_0_6tob1_5_0_2.java | 4 +- .../Protocolb1_7_0_3tob1_6_0_6.java | 4 +- .../Protocolb1_8_0_1tob1_7_0_3.java | 9 +- .../Protocola1_0_15toc0_30.java | 14 +- .../Protocolc0_0_16a_02to0_0_15a_1.java | 7 +- .../Protocolc0_0_18a_02toc0_0_16a_02.java | 4 +- .../Protocolc0_0_19a_06toc0_0_18a_02.java | 4 +- .../Protocolc0_27toc0_0_19a_06.java | 7 +- .../Protocolc0_30toc0_27.java | 4 +- .../Protocolc0_30toc0_30cpe.java | 10 +- .../Protocol1_1to1_0_0_1.java | 7 +- .../Protocol1_2_1_3to1_1.java | 9 +- .../Protocol1_2_4_5to1_2_1_3.java | 4 +- .../Protocol1_3_1_2to1_2_4_5.java | 88 +++-- .../Protocol1_4_2to1_3_1_2.java | 9 +- .../Protocol1_4_4_5to1_4_2.java | 4 +- .../Protocol1_4_6_7to1_4_4_5.java | 4 +- .../Protocol1_5_0_1to1_4_6_7.java | 4 +- .../Protocol1_5_2to1_5_0_1.java | 4 +- .../Protocol1_6_1to1_5_2.java | 7 +- .../Protocol1_6_2to1_6_1.java | 7 +- .../Protocol1_6_4to1_6_2.java | 4 +- .../Protocol1_7_2_5to1_6_4.java | 302 +++++++++--------- 42 files changed, 386 insertions(+), 323 deletions(-) rename src/main/java/net/raphimc/vialegacy/{protocols/release/protocol1_7_2_5to1_6_4/baseprotocols => api/protocol}/EmptyBaseProtocol.java (92%) rename src/main/java/net/raphimc/vialegacy/{protocols/release/protocol1_7_2_5to1_6_4/baseprotocols => api/protocol}/PreNettyBaseProtocol.java (97%) create mode 100644 src/main/java/net/raphimc/vialegacy/api/protocol/StatelessProtocol.java create mode 100644 src/main/java/net/raphimc/vialegacy/api/protocol/StatelessTransitionProtocol.java diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java b/src/main/java/net/raphimc/vialegacy/api/protocol/EmptyBaseProtocol.java similarity index 92% rename from src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java rename to src/main/java/net/raphimc/vialegacy/api/protocol/EmptyBaseProtocol.java index ca31c08..c27cb6c 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java +++ b/src/main/java/net/raphimc/vialegacy/api/protocol/EmptyBaseProtocol.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols; +package net.raphimc.vialegacy.api.protocol; import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol; diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java b/src/main/java/net/raphimc/vialegacy/api/protocol/PreNettyBaseProtocol.java similarity index 97% rename from src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java rename to src/main/java/net/raphimc/vialegacy/api/protocol/PreNettyBaseProtocol.java index f41e71d..cef9a78 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java +++ b/src/main/java/net/raphimc/vialegacy/api/protocol/PreNettyBaseProtocol.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols; +package net.raphimc.vialegacy.api.protocol; import com.viaversion.viaversion.api.connection.ProtocolInfo; import com.viaversion.viaversion.api.connection.UserConnection; diff --git a/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessProtocol.java b/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessProtocol.java new file mode 100644 index 0000000..79acf37 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessProtocol.java @@ -0,0 +1,34 @@ +/* + * This file is part of ViaLegacy - https://github.com/RaphiMC/ViaLegacy + * Copyright (C) 2023 RK_01/RaphiMC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package net.raphimc.vialegacy.api.protocol; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.*; + +public abstract class StatelessProtocol extends AbstractProtocol { + + public StatelessProtocol(final Class unmappedClientboundPacketType, final Class mappedClientboundPacketType, final Class mappedServerboundPacketType, final Class unmappedServerboundPacketType) { + super(unmappedClientboundPacketType, mappedClientboundPacketType, mappedServerboundPacketType, unmappedServerboundPacketType); + } + + @Override + public void transform(Direction direction, State state, PacketWrapper packetWrapper) throws Exception { + super.transform(direction, direction == Direction.SERVERBOUND ? state : State.PLAY, packetWrapper); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessTransitionProtocol.java b/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessTransitionProtocol.java new file mode 100644 index 0000000..74c5035 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/protocol/StatelessTransitionProtocol.java @@ -0,0 +1,67 @@ +/* + * This file is part of ViaLegacy - https://github.com/RaphiMC/ViaLegacy + * Copyright (C) 2023 RK_01/RaphiMC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package net.raphimc.vialegacy.api.protocol; + +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; + +public abstract class StatelessTransitionProtocol extends StatelessProtocol { + + public StatelessTransitionProtocol(final Class unmappedClientboundPacketType, final Class mappedClientboundPacketType, final Class mappedServerboundPacketType, final Class unmappedServerboundPacketType) { + super(unmappedClientboundPacketType, mappedClientboundPacketType, mappedServerboundPacketType, unmappedServerboundPacketType); + } + + public void registerServerboundTransition(final ServerboundPacketType unmappedPacketType, final SM mappedPacketType, final PacketHandler handler) { + this.registerServerbound(unmappedPacketType.state(), unmappedPacketType.getId(), mappedPacketType != null ? mappedPacketType.getId() : -1, wrapper -> { + wrapper.setPacketType(mappedPacketType); + if (handler != null) { + handler.handle(wrapper); + } + }); + } + + public void registerClientboundTransition(final CU unmappedPacketType, final Object... handlers) { + if (handlers.length % 2 != 0) throw new IllegalArgumentException("handlers.length % 2 != 0"); + + this.registerClientbound(unmappedPacketType.state(), unmappedPacketType.getId(), -1, wrapper -> { + final State currentState = wrapper.user().getProtocolInfo().getServerState(); + + for (int i = 0; i < handlers.length; i += 2) { + if (handlers[i] instanceof State) { + final State state = (State) handlers[i]; + if (state != currentState) continue; + } else { + final ClientboundPacketType mappedPacketType = (ClientboundPacketType) handlers[i]; + if (mappedPacketType.state() != currentState) continue; + wrapper.setPacketType(mappedPacketType); + } + + final PacketHandler handler = (PacketHandler) handlers[i + 1]; + if (handler != null) { + handler.handle(wrapper); + } + return; + } + + throw new IllegalStateException("No handler found for packet " + unmappedPacketType + " in state " + currentState); + }); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java index 12ce286..fcfb23c 100644 --- a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java +++ b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java @@ -24,6 +24,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import net.raphimc.vialegacy.ViaLegacy; import net.raphimc.vialegacy.ViaLegacyConfig; import net.raphimc.vialegacy.api.LegacyProtocolVersion; +import net.raphimc.vialegacy.api.protocol.EmptyBaseProtocol; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.Protocola1_0_16_2toa1_0_15; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.Protocola1_0_17_1_0_17_4toa1_0_16_2; import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; @@ -61,7 +62,6 @@ import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.Protocol1_6_ import net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1.Protocol1_6_2to1_6_1; import net.raphimc.vialegacy.protocols.release.protocol1_6_4to1_6_2.Protocol1_6_4to1_6_2; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.Protocol1_7_2_5to1_6_4; -import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols.EmptyBaseProtocol; import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.Protocol1_7_6_10to1_7_2_5; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java index 8bd0a2e..9f4aef3 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java @@ -18,16 +18,15 @@ package net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.ClientboundPacketsa1_0_16; import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ServerboundPacketsa1_0_17; import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; -public class Protocola1_0_16_2toa1_0_15 extends AbstractProtocol { +public class Protocola1_0_16_2toa1_0_15 extends StatelessProtocol { public Protocola1_0_16_2toa1_0_15() { super(ClientboundPacketsa1_0_15.class, ClientboundPacketsa1_0_16.class, ServerboundPacketsa1_0_15.class, ServerboundPacketsa1_0_17.class); @@ -35,7 +34,7 @@ public class Protocola1_0_16_2toa1_0_15 extends AbstractProtocol { @@ -46,7 +45,6 @@ public class Protocola1_0_16_2toa1_0_15 extends AbstractProtocol { +public class Protocola1_0_17_1_0_17_4toa1_0_16_2 extends StatelessProtocol { public Protocola1_0_17_1_0_17_4toa1_0_16_2() { super(ClientboundPacketsa1_0_16.class, ClientboundPacketsa1_0_17.class, ServerboundPacketsa1_0_17.class, ServerboundPacketsa1_0_17.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java index 7984155..6eebdbd 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java @@ -18,12 +18,12 @@ package net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.ClientboundPacketsa1_1_0; import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.ServerboundPacketsa1_1_0; -public class Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4 extends AbstractProtocol { +public class Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4 extends StatelessProtocol { public Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4() { super(ClientboundPacketsa1_0_17.class, ClientboundPacketsa1_1_0.class, ServerboundPacketsa1_0_17.class, ServerboundPacketsa1_1_0.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java index c720e66..ca56b9a 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java @@ -18,16 +18,15 @@ package net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1.ClientboundPacketsa1_2_0; import net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1.ServerboundPacketsa1_2_0; import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; -public class Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1 extends AbstractProtocol { +public class Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1 extends StatelessProtocol { public Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1() { super(ClientboundPacketsa1_1_0.class, ClientboundPacketsa1_2_0.class, ServerboundPacketsa1_1_0.class, ServerboundPacketsa1_2_0.class); @@ -46,7 +45,7 @@ public class Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1 extends AbstractProtocol { +public class Protocola1_2_2toa1_2_0_1_2_1_1 extends StatelessProtocol { public Protocola1_2_2toa1_2_0_1_2_1_1() { super(ClientboundPacketsa1_2_0.class, ClientboundPacketsa1_2_2.class, ServerboundPacketsa1_2_0.class, ServerboundPacketsa1_2_2.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java index 2f6e738..0a997d8 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java @@ -18,15 +18,15 @@ package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.ClientboundPacketsa1_2_3; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ServerboundPacketsa1_2_6; -public class Protocola1_2_3_1_2_3_4toa1_2_2 extends AbstractProtocol { +public class Protocola1_2_3_1_2_3_4toa1_2_2 extends StatelessProtocol { public Protocola1_2_3_1_2_3_4toa1_2_2() { super(ClientboundPacketsa1_2_2.class, ClientboundPacketsa1_2_3.class, ServerboundPacketsa1_2_2.class, ServerboundPacketsa1_2_6.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java index 3d86600..c046bb6 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java @@ -18,14 +18,14 @@ package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ClientboundPacketsa1_2_6; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ServerboundPacketsa1_2_6; -public class Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4 extends AbstractProtocol { +public class Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4 extends StatelessProtocol { public Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4() { super(ClientboundPacketsa1_2_3.class, ClientboundPacketsa1_2_6.class, ServerboundPacketsa1_2_6.class, ServerboundPacketsa1_2_6.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java index bdf1608..0fabad9 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; @@ -32,6 +31,7 @@ import net.raphimc.vialegacy.ViaLegacy; import net.raphimc.vialegacy.api.data.BlockList1_6; import net.raphimc.vialegacy.api.data.ItemList1_6; import net.raphimc.vialegacy.api.model.IdAndData; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data.AlphaItems; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers.AlphaInventoryProvider; @@ -56,7 +56,7 @@ import java.util.Arrays; import java.util.Objects; import java.util.concurrent.ThreadLocalRandom; -public class Protocolb1_0_1_1_1toa1_2_3_5_1_2_6 extends AbstractProtocol { +public class Protocolb1_0_1_1_1toa1_2_3_5_1_2_6 extends StatelessProtocol { public Protocolb1_0_1_1_1toa1_2_3_5_1_2_6() { super(ClientboundPacketsa1_2_6.class, ClientboundPacketsb1_1.class, ServerboundPacketsa1_2_6.class, ServerboundPacketsb1_1.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java index edbd5cb..149016a 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java @@ -20,9 +20,9 @@ package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.rewriter.ItemRewriter; @@ -35,7 +35,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types.Ty import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; -public class Protocol1_0_0_1tob1_8_0_1 extends AbstractProtocol { +public class Protocol1_0_0_1tob1_8_0_1 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java index a6791e5..22214a6 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java @@ -17,11 +17,11 @@ */ package net.raphimc.vialegacy.protocols.beta.protocolb1_1_2tob1_0_1_1; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ClientboundPacketsb1_1; import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ServerboundPacketsb1_1; -public class Protocolb1_1_2tob1_0_1_1 extends AbstractProtocol { +public class Protocolb1_1_2tob1_0_1_1 extends StatelessProtocol { public Protocolb1_1_2tob1_0_1_1() { super(ClientboundPacketsb1_1.class, ClientboundPacketsb1_1.class, ServerboundPacketsb1_1.class, ServerboundPacketsb1_1.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java index aa23f41..16d7f30 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java @@ -21,12 +21,12 @@ import com.google.common.collect.Lists; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import net.raphimc.vialegacy.api.model.IdAndData; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.rewriter.BlockDataRewriter; import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.storage.EntityFlagStorage; @@ -40,7 +40,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Type import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; -public class Protocolb1_2_0_2tob1_1_2 extends AbstractProtocol { +public class Protocolb1_2_0_2tob1_1_2 extends StatelessProtocol { private final BlockDataRewriter BLOCK_DATA_REWRITER = new BlockDataRewriter(); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java index 49d2603..dc66e3e 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java @@ -22,11 +22,11 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import net.raphimc.vialegacy.api.model.IdAndData; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.data.BlockHardnessList; import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.storage.BlockDigStorage; @@ -41,7 +41,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.util.List; -public class Protocolb1_3_0_1tob1_2_0_2 extends AbstractProtocol { +public class Protocolb1_3_0_1tob1_2_0_2 extends StatelessProtocol { public Protocolb1_3_0_1tob1_2_0_2() { super(ClientboundPacketsb1_2.class, ClientboundPacketsb1_3.class, ServerboundPacketsb1_2.class, ServerboundPacketsb1_4.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java index 0d2af06..98583c9 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java @@ -18,12 +18,12 @@ package net.raphimc.vialegacy.protocols.beta.protocolb1_4_0_1tob1_3_0_1; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.ClientboundPacketsb1_4; import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.ServerboundPacketsb1_4; -public class Protocolb1_4_0_1tob1_3_0_1 extends AbstractProtocol { +public class Protocolb1_4_0_1tob1_3_0_1 extends StatelessProtocol { public Protocolb1_4_0_1tob1_3_0_1() { super(ClientboundPacketsb1_3.class, ClientboundPacketsb1_4.class, ServerboundPacketsb1_4.class, ServerboundPacketsb1_4.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java index 97ef01d..bb88989 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java @@ -19,10 +19,9 @@ package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types.Typesb1_4; import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.ClientboundPacketsb1_5; @@ -36,7 +35,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.util.List; -public class Protocolb1_5_0_2tob1_4_0_1 extends AbstractProtocol { +public class Protocolb1_5_0_2tob1_4_0_1 extends StatelessProtocol { public Protocolb1_5_0_2tob1_4_0_1() { super(ClientboundPacketsb1_4.class, ClientboundPacketsb1_5.class, ServerboundPacketsb1_4.class, ServerboundPacketsb1_5.class); @@ -44,24 +43,12 @@ public class Protocolb1_5_0_2tob1_4_0_1 extends AbstractProtocol { +public class Protocolb1_6_0_6tob1_5_0_2 extends StatelessProtocol { public Protocolb1_6_0_6tob1_5_0_2() { super(ClientboundPacketsb1_5.class, ClientboundPacketsb1_7.class, ServerboundPacketsb1_5.class, ServerboundPacketsb1_7.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java index 1291606..1aef59f 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java @@ -17,11 +17,11 @@ */ package net.raphimc.vialegacy.protocols.beta.protocolb1_7_0_3tob1_6_0_6; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ClientboundPacketsb1_7; import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ServerboundPacketsb1_7; -public class Protocolb1_7_0_3tob1_6_0_6 extends AbstractProtocol { +public class Protocolb1_7_0_3tob1_6_0_6 extends StatelessProtocol { public Protocolb1_7_0_3tob1_6_0_6() { super(ClientboundPacketsb1_7.class, ClientboundPacketsb1_7.class, ServerboundPacketsb1_7.class, ServerboundPacketsb1_7.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java index b0994a2..5cff9f5 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java @@ -23,13 +23,13 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import net.raphimc.vialegacy.api.data.BlockList1_6; import net.raphimc.vialegacy.api.data.ItemList1_6; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.AlphaInventoryTracker; import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.ClientboundPacketsb1_8; @@ -51,7 +51,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.util.concurrent.ThreadLocalRandom; -public class Protocolb1_8_0_1tob1_7_0_3 extends AbstractProtocol { +public class Protocolb1_8_0_1tob1_7_0_3 extends StatelessProtocol { public Protocolb1_8_0_1tob1_7_0_3() { super(ClientboundPacketsb1_7.class, ClientboundPacketsb1_8.class, ServerboundPacketsb1_7.class, ServerboundPacketsb1_8.class); @@ -228,7 +228,7 @@ public class Protocolb1_8_0_1tob1_7_0_3 extends AbstractProtocol { @@ -247,8 +247,7 @@ public class Protocolb1_8_0_1tob1_7_0_3 extends AbstractProtocol { +public class Protocola1_0_15toc0_30 extends StatelessProtocol { public Protocola1_0_15toc0_30() { super(ClientboundPacketsc0_28.class, ClientboundPacketsa1_0_15.class, ServerboundPacketsc0_28.class, ServerboundPacketsa1_0_15.class); @@ -68,13 +67,6 @@ public class Protocola1_0_15toc0_30 extends AbstractProtocol s.replace("&", "ยง")); // reason - } - }); - this.registerClientbound(ClientboundPacketsc0_28.JOIN_GAME, new PacketHandlers() { @Override public void register() { @@ -365,7 +357,7 @@ public class Protocola1_0_15toc0_30 extends AbstractProtocol { +public class Protocolc0_0_16a_02to0_0_15a_1 extends StatelessProtocol { public Protocolc0_0_16a_02to0_0_15a_1() { super(ClientboundPacketsc0_15a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_15a.class, ServerboundPacketsc0_19a.class); @@ -74,7 +73,7 @@ public class Protocolc0_0_16a_02to0_0_15a_1 extends AbstractProtocol { diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java index 9eb5dbe..2ce8217 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java @@ -17,11 +17,11 @@ */ package net.raphimc.vialegacy.protocols.classic.protocolc0_0_18a_02toc0_0_16a_02; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ClientboundPacketsc0_19a; import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ServerboundPacketsc0_19a; -public class Protocolc0_0_18a_02toc0_0_16a_02 extends AbstractProtocol { +public class Protocolc0_0_18a_02toc0_0_16a_02 extends StatelessProtocol { public Protocolc0_0_18a_02toc0_0_16a_02() { super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java index 34a8853..dddcedc 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java @@ -18,13 +18,13 @@ package net.raphimc.vialegacy.protocols.classic.protocolc0_0_19a_06toc0_0_18a_02; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.ClassicBlockRemapper; import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ClientboundPacketsc0_19a; import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ServerboundPacketsc0_19a; -public class Protocolc0_0_19a_06toc0_0_18a_02 extends AbstractProtocol { +public class Protocolc0_0_19a_06toc0_0_18a_02 extends StatelessProtocol { public Protocolc0_0_19a_06toc0_0_18a_02() { super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java index 991796d..1ba4d22 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java @@ -18,10 +18,9 @@ package net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ServerboundPacketsc0_28; import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; @@ -30,7 +29,7 @@ import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types.T import net.raphimc.vialegacy.protocols.classic.protocolc0_0_19a_06toc0_0_18a_02.Protocolc0_0_19a_06toc0_0_18a_02; import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_0_20a_27.ClientboundPacketsc0_20a; -public class Protocolc0_27toc0_0_19a_06 extends AbstractProtocol { +public class Protocolc0_27toc0_0_19a_06 extends StatelessProtocol { public Protocolc0_27toc0_0_19a_06() { super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_20a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_28.class); @@ -48,7 +47,7 @@ public class Protocolc0_27toc0_0_19a_06 extends AbstractProtocol { +public class Protocolc0_30toc0_27 extends StatelessProtocol { public Protocolc0_30toc0_27() { super(ClientboundPacketsc0_20a.class, ClientboundPacketsc0_28.class, ServerboundPacketsc0_28.class, ServerboundPacketsc0_28.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java index 933ca0c..bff12b5 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java @@ -23,16 +23,16 @@ import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.CustomByteType; +import io.netty.buffer.Unpooled; import net.raphimc.vialegacy.ViaLegacy; import net.raphimc.vialegacy.api.data.BlockList1_6; import net.raphimc.vialegacy.api.model.ChunkCoord; import net.raphimc.vialegacy.api.model.IdAndData; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ClientboundPacketsa1_0_15; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.Protocola1_0_16_2toa1_0_15; @@ -61,7 +61,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class Protocolc0_30toc0_30cpe extends AbstractProtocol { +public class Protocolc0_30toc0_30cpe extends StatelessProtocol { public Protocolc0_30toc0_30cpe() { super(ClientboundPacketsc0_30cpe.class, ClientboundPacketsc0_28.class, ServerboundPacketsc0_30cpe.class, ServerboundPacketsc0_28.class); @@ -75,7 +75,7 @@ public class Protocolc0_30toc0_30cpe extends AbstractProtocol { if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_6_2to1_6_1.class)) { final ExtensionProtocolMetadataStorage protocolMetadataStorage = wrapper.user().get(ExtensionProtocolMetadataStorage.class); - final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, wrapper.user()); + final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, Unpooled.buffer(), wrapper.user()); brand.write(Types1_6_4.STRING, "MC|Brand"); final byte[] brandBytes = protocolMetadataStorage.getServerSoftwareName().getBytes(StandardCharsets.UTF_8); brand.write(Type.SHORT, (short) brandBytes.length); // data length @@ -264,7 +264,7 @@ public class Protocolc0_30toc0_30cpe extends AbstractProtocol { +public class Protocol1_1to1_0_0_1 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -43,7 +42,7 @@ public class Protocol1_1to1_0_0_1 extends AbstractProtocol { +public class Protocol1_2_1_3to1_1 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -287,13 +286,13 @@ public class Protocol1_2_1_3to1_1 extends AbstractProtocol s.split(";")[0]); // info } }); - this.registerServerbound(State.LOGIN, ServerboundPackets1_2_1.LOGIN.getId(), ServerboundPackets1_1.LOGIN.getId(), new PacketHandlers() { + this.registerServerbound(ServerboundPackets1_2_1.LOGIN, new PacketHandlers() { @Override public void register() { map(Type.INT); // protocol id diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java index e42f345..ef2cddc 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java @@ -18,14 +18,14 @@ package net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3; import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.rewriter.ItemRewriter; import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.ClientboundPackets1_2_4; import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.ServerboundPackets1_2_4; -public class Protocol1_2_4_5to1_2_1_3 extends AbstractProtocol { +public class Protocol1_2_4_5to1_2_1_3 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java index 6004efb..57ef9e3 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; @@ -43,6 +42,7 @@ import net.raphimc.vialegacy.api.LegacyProtocolVersion; import net.raphimc.vialegacy.api.data.BlockList1_6; import net.raphimc.vialegacy.api.model.IdAndData; import net.raphimc.vialegacy.api.model.Location; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data.EntityList; @@ -76,7 +76,7 @@ import java.util.List; import java.util.Optional; import java.util.logging.Level; -public class Protocol1_3_1_2to1_2_4_5 extends AbstractProtocol { +public class Protocol1_3_1_2to1_2_4_5 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -88,23 +88,44 @@ public class Protocol1_3_1_2to1_2_4_5 extends AbstractProtocol { - handleHandshake(wrapper); - wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); - wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); - wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; - }); - } - }); - this.registerClientbound(ClientboundPackets1_2_4.HANDSHAKE, null, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - handleHandshake(wrapper); // Very hacky but some servers expect the client to send back a Packet1Login - wrapper.cancel(); + final String serverHash = wrapper.read(Types1_6_4.STRING); // server hash + if (!serverHash.trim().isEmpty() && !serverHash.equalsIgnoreCase("-")) { + try { + Via.getManager().getProviders().get(OldAuthProvider.class).sendAuthRequest(wrapper.user(), serverHash); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not authenticate with mojang for joinserver request!", e); + wrapper.cancel(); + final PacketWrapper kick = PacketWrapper.create(ClientboundPackets1_3_1.DISCONNECT, wrapper.user()); + kick.write(Types1_6_4.STRING, "Failed to log in: Invalid session (Try restarting your game and the launcher)"); // reason + kick.send(Protocol1_3_1_2to1_2_4_5.class); + return; + } + } + + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final PacketWrapper login = PacketWrapper.create(ServerboundPackets1_2_4.LOGIN, wrapper.user()); + login.write(Type.INT, LegacyProtocolVersion.getRealProtocolVersion(info.getServerProtocolVersion())); // protocol id + login.write(Types1_6_4.STRING, info.getUsername()); // username + login.write(Types1_6_4.STRING, ""); // level type + login.write(Type.INT, 0); // game mode + login.write(Type.INT, 0); // dimension id + login.write(Type.BYTE, (byte) 0); // difficulty + login.write(Type.BYTE, (byte) 0); // world height + login.write(Type.BYTE, (byte) 0); // max players + login.sendToServer(Protocol1_3_1_2to1_2_4_5.class); + + final State currentState = wrapper.user().getProtocolInfo().getServerState(); + if (currentState != State.LOGIN) { // Very hacky but some servers expect the client to send back a Packet1Login + wrapper.cancel(); + } else { + wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; + } }); } }); @@ -645,7 +666,7 @@ public class Protocol1_3_1_2to1_2_4_5 extends AbstractProtocol { @@ -657,7 +678,6 @@ public class Protocol1_3_1_2to1_2_4_5 extends AbstractProtocol { +public class Protocol1_4_2to1_3_1_2 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -62,7 +61,7 @@ public class Protocol1_4_2to1_3_1_2 extends AbstractProtocol { @@ -296,7 +295,7 @@ public class Protocol1_4_2to1_3_1_2 extends AbstractProtocol { +public class Protocol1_4_4_5to1_4_2 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java index 1fc6a60..7ef219b 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java @@ -22,11 +22,11 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.rewriter.ItemRewriter; @@ -39,7 +39,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.Me import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulk1_7_6Type; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; -public class Protocol1_4_6_7to1_4_4_5 extends AbstractProtocol { +public class Protocol1_4_6_7to1_4_4_5 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java index 1fea4e9..7ba6340 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java @@ -20,10 +20,10 @@ package net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; import com.viaversion.viaversion.api.minecraft.item.DataItem; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7.rewriter.ItemRewriter; @@ -32,7 +32,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundP import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; -public class Protocol1_5_0_1to1_4_6_7 extends AbstractProtocol { +public class Protocol1_5_0_1to1_4_6_7 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java index d8895b6..c257ebd 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java @@ -17,11 +17,11 @@ */ package net.raphimc.vialegacy.protocols.release.protocol1_5_2to1_5_0_1; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ClientboundPackets1_5_2; import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; -public class Protocol1_5_2to1_5_0_1 extends AbstractProtocol { +public class Protocol1_5_2to1_5_0_1 extends StatelessProtocol { public Protocol1_5_2to1_5_0_1() { super(ClientboundPackets1_5_2.class, ClientboundPackets1_5_2.class, ServerboundPackets1_5_2.class, ServerboundPackets1_5_2.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java index f2e1a90..153ea4c 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java @@ -20,14 +20,13 @@ package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import net.lenni0451.mcstructs.text.components.StringComponent; import net.lenni0451.mcstructs.text.serializer.TextComponentSerializer; import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata.MetadataRewriter; @@ -43,7 +42,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.util.List; -public class Protocol1_6_1to1_5_2 extends AbstractProtocol { +public class Protocol1_6_1to1_5_2 extends StatelessProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -297,7 +296,7 @@ public class Protocol1_6_1to1_5_2 extends AbstractProtocol { diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java index 1221f4c..76117c9 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java @@ -20,11 +20,12 @@ package net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.Unpooled; import net.raphimc.vialegacy.api.data.ItemList1_6; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.api.util.BlockFaceUtil; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ClientboundPackets1_6_4; @@ -34,7 +35,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.nio.charset.StandardCharsets; -public class Protocol1_6_2to1_6_1 extends AbstractProtocol { +public class Protocol1_6_2to1_6_1 extends StatelessProtocol { public Protocol1_6_2to1_6_1() { super(ClientboundPackets1_6_1.class, ClientboundPackets1_6_4.class, ServerboundPackets1_6_4.class, ServerboundPackets1_6_4.class); @@ -46,7 +47,7 @@ public class Protocol1_6_2to1_6_1 extends AbstractProtocol { - final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, wrapper.user()); + final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, Unpooled.buffer(), wrapper.user()); brand.write(Types1_6_4.STRING, "MC|Brand"); final byte[] brandBytes = "legacy".getBytes(StandardCharsets.UTF_8); brand.write(Type.SHORT, (short) brandBytes.length); // data length diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java index f891082..93de197 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java @@ -17,11 +17,11 @@ */ package net.raphimc.vialegacy.protocols.release.protocol1_6_4to1_6_2; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.api.protocol.StatelessProtocol; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ClientboundPackets1_6_4; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ServerboundPackets1_6_4; -public class Protocol1_6_4to1_6_2 extends AbstractProtocol { +public class Protocol1_6_4to1_6_2 extends StatelessProtocol { public Protocol1_6_4to1_6_2() { super(ClientboundPackets1_6_4.class, ClientboundPackets1_6_4.class, ServerboundPackets1_6_4.class, ServerboundPackets1_6_4.class); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java index 05f8633..5229f83 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java @@ -29,9 +29,9 @@ import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.platform.providers.ViaProviders; -import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.type.Type; @@ -39,7 +39,10 @@ import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.protocols.base.*; +import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; +import com.viaversion.viaversion.protocols.base.ClientboundStatusPackets; +import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; +import com.viaversion.viaversion.protocols.base.ServerboundStatusPackets; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import io.netty.buffer.ByteBuf; @@ -50,6 +53,7 @@ import io.netty.channel.ChannelPromise; import net.raphimc.vialegacy.ViaLegacy; import net.raphimc.vialegacy.api.LegacyProtocolVersion; import net.raphimc.vialegacy.api.model.IdAndData; +import net.raphimc.vialegacy.api.protocol.StatelessTransitionProtocol; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.splitter.PreNettySplitter; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.providers.EncryptionProvider; @@ -70,7 +74,7 @@ import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types import java.util.List; import java.util.logging.Level; -public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { +public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol { private final LegacyItemRewriter itemRewriter = new ItemRewriter(this); @@ -82,135 +86,52 @@ public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { - final String reason = wrapper.read(Types1_6_4.STRING); // reason - try { - final String[] motdParts = reason.split("\0"); - final JsonObject rootObject = new JsonObject(); - final JsonObject descriptionObject = new JsonObject(); - final JsonObject playersObject = new JsonObject(); - final JsonObject versionObject = new JsonObject(); + this.registerClientboundTransition(ClientboundPackets1_6_4.JOIN_GAME, + ClientboundPackets1_7_2.JOIN_GAME, new PacketHandlers() { + @Override + public void register() { + map(Type.INT); // entity id + handler(wrapper -> { + wrapper.user().get(PlayerInfoStorage.class).entityId = wrapper.get(Type.INT, 0); + final String terrainType = wrapper.read(Types1_6_4.STRING); // level type + final short gameType = wrapper.read(Type.BYTE); // game mode + final byte dimension = wrapper.read(Type.BYTE); // dimension id + final short difficulty = wrapper.read(Type.BYTE); // difficulty + wrapper.read(Type.BYTE); // world height + final short maxPlayers = wrapper.read(Type.BYTE); // max players - descriptionObject.addProperty("text", motdParts[3]); - playersObject.addProperty("max", Integer.parseInt(motdParts[5])); - playersObject.addProperty("online", Integer.parseInt(motdParts[4])); - versionObject.addProperty("name", motdParts[2]); - versionObject.addProperty("protocol", Integer.parseInt(motdParts[1])); - rootObject.add("description", descriptionObject); - rootObject.add("players", playersObject); - rootObject.add("version", versionObject); + wrapper.write(Type.UNSIGNED_BYTE, gameType); + wrapper.write(Type.BYTE, dimension); + wrapper.write(Type.UNSIGNED_BYTE, difficulty); + wrapper.write(Type.UNSIGNED_BYTE, maxPlayers); + wrapper.write(Type.STRING, terrainType); + }); + handler(wrapper -> { + final byte dimensionId = wrapper.get(Type.BYTE, 0); + wrapper.user().get(DimensionTracker.class).setDimension(dimensionId); + wrapper.user().get(ClientWorld.class).setEnvironment(dimensionId); - wrapper.write(Type.STRING, rootObject.toString()); - } catch (Throwable e) { - ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not parse 1.6.4 ping: " + reason, e); - wrapper.cancel(); + wrapper.user().put(new ChunkTracker(wrapper.user())); + }); } - }); - } - }); - this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.SHARED_KEY.getId(), ClientboundLoginPackets.GAME_PROFILE.getId(), new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final ProtocolInfo info = wrapper.user().getProtocolInfo(); - final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); - wrapper.read(Type.SHORT_BYTE_ARRAY); // shared secret - wrapper.read(Type.SHORT_BYTE_ARRAY); // verify token - wrapper.write(Type.STRING, info.getUuid().toString().replace("-", "")); // uuid - wrapper.write(Type.STRING, info.getUsername()); // user name + }, State.LOGIN, new PacketHandlers() { + @Override + protected void register() { + handler(wrapper -> { + ViaLegacy.getPlatform().getLogger().warning("Server skipped LOGIN state"); + final PacketWrapper sharedKey = PacketWrapper.create(ClientboundPackets1_6_4.SHARED_KEY, wrapper.user()); + sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; + sharedKey.send(Protocol1_7_2_5to1_6_4.class, false); // switch to play state + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = false; - if (!protocolMetadata.skipEncryption) { - Via.getManager().getProviders().get(EncryptionProvider.class).enableDecryption(wrapper.user()); + wrapper.send(Protocol1_7_2_5to1_6_4.class, false); + wrapper.cancel(); + }); } - - // Parts of BaseProtocol1_7 GAME_PROFILE handler - if (info.getProtocolVersion() < ProtocolVersion.v1_20_2.getVersion()) { - info.setState(State.PLAY); - } - Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user()); - if (!info.getPipeline().hasNonBaseProtocols()) { - wrapper.user().setActive(false); - } - if (Via.getManager().isDebug()) { - ViaLegacy.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}", new Object[]{info.getUsername(), info.getProtocolVersion(), Joiner.on(", ").join(info.getPipeline().pipes(), ", ")}); - } - - final PacketWrapper respawn = PacketWrapper.create(ServerboundPackets1_6_4.CLIENT_STATUS, wrapper.user()); - respawn.write(Type.BYTE, (byte) 0); // force respawn - respawn.sendToServer(Protocol1_7_2_5to1_6_4.class); - }); - } - }); - this.cancelClientbound(ClientboundPackets1_6_4.SHARED_KEY); - this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.SERVER_AUTH_DATA.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketHandlers() { - @Override - public void register() { - map(Types1_6_4.STRING, Type.STRING); // server hash - map(Type.SHORT_BYTE_ARRAY); // public key - map(Type.SHORT_BYTE_ARRAY); // verify token - handler(wrapper -> { - final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); - final String serverHash = wrapper.get(Type.STRING, 0); - protocolMetadata.authenticate = !serverHash.equals("-"); - }); - } - }); - this.cancelClientbound(ClientboundPackets1_6_4.SERVER_AUTH_DATA); - this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.DISCONNECT.getId(), ClientboundLoginPackets.LOGIN_DISCONNECT.getId(), new PacketHandlers() { - @Override - public void register() { - map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClientDisconnect); // reason - } - }); - this.cancelClientbound(State.LOGIN, ClientboundPackets1_6_4.PLUGIN_MESSAGE.getId()); - this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.JOIN_GAME.getId(), ClientboundPackets1_6_4.JOIN_GAME.getId(), new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - ViaLegacy.getPlatform().getLogger().warning("Server skipped LOGIN state"); - final PacketWrapper sharedKey = PacketWrapper.create(ClientboundPackets1_6_4.SHARED_KEY, wrapper.user()); - sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); - sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); - wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; - sharedKey.send(BaseProtocol.class); // switch to play state - wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = false; - - wrapper.send(BaseProtocol.class); - wrapper.cancel(); - }); - } - }); - this.registerClientbound(ClientboundPackets1_6_4.JOIN_GAME, new PacketHandlers() { - @Override - public void register() { - map(Type.INT); // entity id - handler(wrapper -> { - wrapper.user().get(PlayerInfoStorage.class).entityId = wrapper.get(Type.INT, 0); - final String terrainType = wrapper.read(Types1_6_4.STRING); // level type - final short gameType = wrapper.read(Type.BYTE); // game mode - final byte dimension = wrapper.read(Type.BYTE); // dimension id - final short difficulty = wrapper.read(Type.BYTE); // difficulty - wrapper.read(Type.BYTE); // world height - final short maxPlayers = wrapper.read(Type.BYTE); // max players - - wrapper.write(Type.UNSIGNED_BYTE, gameType); - wrapper.write(Type.BYTE, dimension); - wrapper.write(Type.UNSIGNED_BYTE, difficulty); - wrapper.write(Type.UNSIGNED_BYTE, maxPlayers); - wrapper.write(Type.STRING, terrainType); - }); - handler(wrapper -> { - final byte dimensionId = wrapper.get(Type.BYTE, 0); - wrapper.user().get(DimensionTracker.class).setDimension(dimensionId); - wrapper.user().get(ClientWorld.class).setEnvironment(dimensionId); - - wrapper.user().put(new ChunkTracker(wrapper.user())); - }); - } - }); + } + ); this.registerClientbound(ClientboundPackets1_6_4.CHAT_MESSAGE, new PacketHandlers() { @Override public void register() { @@ -865,37 +786,120 @@ public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { + final String channel = wrapper.get(Type.STRING, 0); + wrapper.passthrough(Type.SHORT); // length + if (channel.equals("MC|TrList")) { + wrapper.passthrough(Type.INT); // window id + final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count + for (int i = 0; i < count; i++) { + itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 1 + itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 3 + if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items + itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 2 + } + wrapper.passthrough(Type.BOOLEAN); // unavailable + } + } + }); + } + }, State.LOGIN, (PacketHandler) PacketWrapper::cancel + ); + this.registerClientboundTransition(ClientboundPackets1_6_4.SHARED_KEY, ClientboundLoginPackets.GAME_PROFILE, new PacketHandlers() { @Override public void register() { - map(Types1_6_4.STRING, Type.STRING); // channel handler(wrapper -> { - final String channel = wrapper.get(Type.STRING, 0); - wrapper.passthrough(Type.SHORT); // length - if (channel.equals("MC|TrList")) { - wrapper.passthrough(Type.INT); // window id - final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count - for (int i = 0; i < count; i++) { - itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 1 - itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 3 - if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items - itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 2 - } - wrapper.passthrough(Type.BOOLEAN); // unavailable - } + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); + wrapper.read(Type.SHORT_BYTE_ARRAY); // shared secret + wrapper.read(Type.SHORT_BYTE_ARRAY); // verify token + wrapper.write(Type.STRING, info.getUuid().toString().replace("-", "")); // uuid + wrapper.write(Type.STRING, info.getUsername()); // user name + + if (!protocolMetadata.skipEncryption) { + Via.getManager().getProviders().get(EncryptionProvider.class).enableDecryption(wrapper.user()); } + + // Parts of BaseProtocol1_7 GAME_PROFILE handler + if (info.getProtocolVersion() < ProtocolVersion.v1_20_2.getVersion()) { + info.setState(State.PLAY); + } + Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user()); + if (!info.getPipeline().hasNonBaseProtocols()) { + wrapper.user().setActive(false); + } + if (Via.getManager().isDebug()) { + ViaLegacy.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}", new Object[]{info.getUsername(), info.getProtocolVersion(), Joiner.on(", ").join(info.getPipeline().pipes(), ", ")}); + } + + final PacketWrapper respawn = PacketWrapper.create(ServerboundPackets1_6_4.CLIENT_STATUS, wrapper.user()); + respawn.write(Type.BYTE, (byte) 0); // force respawn + respawn.sendToServer(Protocol1_7_2_5to1_6_4.class); }); } }); - this.registerClientbound(ClientboundPackets1_6_4.DISCONNECT, new PacketHandlers() { + this.registerClientboundTransition(ClientboundPackets1_6_4.SERVER_AUTH_DATA, ClientboundLoginPackets.HELLO, new PacketHandlers() { @Override public void register() { - map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClientDisconnect); // reason + map(Types1_6_4.STRING, Type.STRING); // server hash + map(Type.SHORT_BYTE_ARRAY); // public key + map(Type.SHORT_BYTE_ARRAY); // verify token + handler(wrapper -> { + final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); + final String serverHash = wrapper.get(Type.STRING, 0); + protocolMetadata.authenticate = !serverHash.equals("-"); + }); } }); + this.registerClientboundTransition(ClientboundPackets1_6_4.DISCONNECT, + ClientboundStatusPackets.STATUS_RESPONSE, new PacketHandlers() { + @Override + protected void register() { + handler(wrapper -> { + final String reason = wrapper.read(Types1_6_4.STRING); // reason + try { + final String[] motdParts = reason.split("\0"); + final JsonObject rootObject = new JsonObject(); + final JsonObject descriptionObject = new JsonObject(); + final JsonObject playersObject = new JsonObject(); + final JsonObject versionObject = new JsonObject(); + + descriptionObject.addProperty("text", motdParts[3]); + playersObject.addProperty("max", Integer.parseInt(motdParts[5])); + playersObject.addProperty("online", Integer.parseInt(motdParts[4])); + versionObject.addProperty("name", motdParts[2]); + versionObject.addProperty("protocol", Integer.parseInt(motdParts[1])); + rootObject.add("description", descriptionObject); + rootObject.add("players", playersObject); + rootObject.add("version", versionObject); + + wrapper.write(Type.STRING, rootObject.toString()); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not parse 1.6.4 ping: " + reason, e); + wrapper.cancel(); + } + }); + } + }, ClientboundLoginPackets.LOGIN_DISCONNECT, new PacketHandlers() { + @Override + protected void register() { + map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClientDisconnect); // reason + } + }, ClientboundPackets1_7_2.DISCONNECT, new PacketHandlers() { + @Override + public void register() { + map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClientDisconnect); // reason + } + } + ); this.cancelClientbound(ClientboundPackets1_6_4.CREATIVE_INVENTORY_ACTION); - this.registerServerbound(State.STATUS, ServerboundStatusPackets.STATUS_REQUEST.getId(), ServerboundPackets1_6_4.SERVER_PING.getId(), new PacketHandlers() { + this.registerServerboundTransition(ServerboundStatusPackets.STATUS_REQUEST, ServerboundPackets1_6_4.SERVER_PING, new PacketHandlers() { @Override public void register() { handler(wrapper -> { @@ -903,7 +907,7 @@ public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { @@ -923,7 +927,7 @@ public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { @@ -940,7 +944,7 @@ public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol