diff --git a/build.gradle.kts b/build.gradle.kts index dabdb61..4798f5d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,8 +60,8 @@ dependencies { implementation(kotlin("stdlib-jdk8")) implementation(kotlin("reflect")) - val vvVer = "4.9.0-23w40a-SNAPSHOT" - val vbVer = "4.9.0-23w40a-SNAPSHOT" + val vvVer = "4.9.0-23w41a-SNAPSHOT" + val vbVer = "4.9.0-23w41a-SNAPSHOT" val vrVer = "3.0.3-SNAPSHOT" implementation("com.viaversion:viaversion:$vvVer") { isTransitive = false } implementation("com.viaversion:viabackwards:$vbVer") { isTransitive = false } @@ -74,19 +74,19 @@ dependencies { implementation("io.netty:netty-resolver-dns:$nettyVer") implementation("io.netty:netty-transport-native-epoll:$nettyVer:linux-aarch_64") implementation("io.netty:netty-transport-native-epoll:$nettyVer:linux-x86_64") - implementation("io.netty:netty-tcnative-boringssl-static:2.0.61.Final:linux-aarch_64") - implementation("io.netty:netty-tcnative-boringssl-static:2.0.61.Final:linux-x86_64") + implementation("io.netty:netty-tcnative-boringssl-static:2.0.62.Final:linux-aarch_64") + implementation("io.netty:netty-tcnative-boringssl-static:2.0.62.Final:linux-x86_64") implementation("io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.23.Final:linux-aarch_64") implementation("io.netty.incubator:netty-incubator-transport-native-io_uring:0.0.23.Final:linux-x86_64") implementation("com.google.guava:guava:32.0.1-jre") implementation("com.velocitypowered:velocity-native:3.2.0-SNAPSHOT") - implementation("net.coobird:thumbnailator:0.4.19") + implementation("net.coobird:thumbnailator:0.4.20") implementation("org.powernukkit.fastutil:fastutil-lite:8.1.1") - implementation("org.yaml:snakeyaml:2.0") + implementation("org.yaml:snakeyaml:2.2") val log4jVer = "2.20.0" - val slf4jVer = "2.0.7" + val slf4jVer = "2.0.9" implementation("com.lmax:disruptor:3.4.4") implementation("net.minecrell:terminalconsoleappender:1.3.0") implementation("org.apache.logging.log4j:log4j-core:$log4jVer") diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a7..7f93135 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37aef8d..3fa8f86 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d4..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationDisconnect.java b/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationDisconnect.java new file mode 100644 index 0000000..5a748b3 --- /dev/null +++ b/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationDisconnect.java @@ -0,0 +1,6 @@ +package com.viaversion.aas.codec.packet.configuration; + +import com.viaversion.aas.codec.packet.common.AbstractSingleJson; + +public class ConfigurationDisconnect extends AbstractSingleJson { +} diff --git a/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationPluginMessage.java b/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationPluginMessage.java new file mode 100644 index 0000000..86dbb84 --- /dev/null +++ b/src/main/java/com/viaversion/aas/codec/packet/configuration/ConfigurationPluginMessage.java @@ -0,0 +1,24 @@ +package com.viaversion.aas.codec.packet.configuration; + +import com.viaversion.aas.UtilKt; +import com.viaversion.aas.codec.packet.Packet; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import org.jetbrains.annotations.NotNull; + +public class ConfigurationPluginMessage implements Packet { + private String channel; + private byte[] data; + + @Override + public void decode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + channel = Type.STRING.read(byteBuf); + data = UtilKt.readRemainingBytes(byteBuf); + } + + @Override + public void encode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + Type.STRING.write(byteBuf, channel); + Type.REMAINING_BYTES.write(byteBuf, data); + } +} diff --git a/src/main/java/com/viaversion/aas/codec/packet/configuration/FinishConfig.java b/src/main/java/com/viaversion/aas/codec/packet/configuration/FinishConfig.java new file mode 100644 index 0000000..0accb46 --- /dev/null +++ b/src/main/java/com/viaversion/aas/codec/packet/configuration/FinishConfig.java @@ -0,0 +1,15 @@ +package com.viaversion.aas.codec.packet.configuration; + +import com.viaversion.aas.codec.packet.Packet; +import io.netty.buffer.ByteBuf; +import org.jetbrains.annotations.NotNull; + +public class FinishConfig implements Packet { + @Override + public void decode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + } + + @Override + public void encode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + } +} diff --git a/src/main/java/com/viaversion/aas/codec/packet/login/LoginStart.java b/src/main/java/com/viaversion/aas/codec/packet/login/LoginStart.java index 1fa8066..ff22371 100644 --- a/src/main/java/com/viaversion/aas/codec/packet/login/LoginStart.java +++ b/src/main/java/com/viaversion/aas/codec/packet/login/LoginStart.java @@ -47,7 +47,9 @@ public class LoginStart implements Packet { profileKey = Type.OPTIONAL_PROFILE_KEY.read(byteBuf); } - if (protocolVersion >= ProtocolVersion.v1_19_1.getVersion()) { + if (protocolVersion >= ProtocolVersion.v1_20_2.getVersion()) { + profileId = Type.UUID.read(byteBuf); + } else if (protocolVersion >= ProtocolVersion.v1_19_1.getVersion()) { profileId = Type.OPTIONAL_UUID.read(byteBuf); } } @@ -59,7 +61,9 @@ public class LoginStart implements Packet { && protocolVersion < ProtocolVersion.v1_19_3.getVersion()) { Type.OPTIONAL_PROFILE_KEY.write(byteBuf, profileKey); } - if (protocolVersion >= ProtocolVersion.v1_19_1.getVersion()) { + if (protocolVersion >= ProtocolVersion.v1_20_2.getVersion()) { + Type.UUID.write(byteBuf, profileId); + } else if (protocolVersion >= ProtocolVersion.v1_19_1.getVersion()) { Type.OPTIONAL_UUID.write(byteBuf, profileId); } } diff --git a/src/main/java/com/viaversion/aas/codec/packet/play/ConfigurationAck.java b/src/main/java/com/viaversion/aas/codec/packet/play/ConfigurationAck.java new file mode 100644 index 0000000..0c04e84 --- /dev/null +++ b/src/main/java/com/viaversion/aas/codec/packet/play/ConfigurationAck.java @@ -0,0 +1,15 @@ +package com.viaversion.aas.codec.packet.play; + +import com.viaversion.aas.codec.packet.Packet; +import io.netty.buffer.ByteBuf; +import org.jetbrains.annotations.NotNull; + +public class ConfigurationAck implements Packet { + @Override + public void decode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + } + + @Override + public void encode(@NotNull ByteBuf byteBuf, int protocolVersion) throws Exception { + } +} diff --git a/src/main/java/com/viaversion/aas/handler/state/ConfigurationState.java b/src/main/java/com/viaversion/aas/handler/state/ConfigurationState.java new file mode 100644 index 0000000..29705f2 --- /dev/null +++ b/src/main/java/com/viaversion/aas/handler/state/ConfigurationState.java @@ -0,0 +1,69 @@ +package com.viaversion.aas.handler.state; + +import com.google.gson.JsonPrimitive; +import com.viaversion.aas.UtilKt; +import com.viaversion.aas.codec.packet.Packet; +import com.viaversion.aas.codec.packet.configuration.ConfigurationDisconnect; +import com.viaversion.aas.codec.packet.configuration.FinishConfig; +import com.viaversion.aas.handler.HandlerUtilKt; +import com.viaversion.aas.handler.MinecraftHandler; +import com.viaversion.viaversion.api.protocol.packet.State; +import io.netty.channel.ChannelHandlerContext; +import io.netty.util.ReferenceCountUtil; +import org.jetbrains.annotations.NotNull; + +public class ConfigurationState implements ConnectionState { + private boolean kickedByServer = false; + @NotNull + @Override + public State getState() { + return State.CONFIGURATION; + } + + @Override + public void handlePacket(@NotNull MinecraftHandler handler, @NotNull ChannelHandlerContext ctx, @NotNull Packet packet) { + if (packet instanceof FinishConfig) handleFinish(handler, (FinishConfig) packet); + if (packet instanceof ConfigurationDisconnect) handleDisconnect(handler, (ConfigurationDisconnect) packet); + HandlerUtilKt.forward(handler, ReferenceCountUtil.retain(packet), false); + } + + private void handleDisconnect(MinecraftHandler handler, ConfigurationDisconnect packet) { + kickedByServer = true; + UtilKt.getMcLogger().debug( + "{} disconnected on config: {}", + handler.endRemoteAddress.toString(), + packet.getMsg() + ); + } + + private void handleFinish(MinecraftHandler handler, FinishConfig packet) { + handler.getData().setState(new PlayState()); + } + + @Override + public boolean getLogDcInfo() { + return true; + } + + @Override + public boolean getKickedByServer() { + return kickedByServer; + } + + @Override + public void disconnect(@NotNull MinecraftHandler handler, @NotNull String msg) { + ConnectionState.DefaultImpls.disconnect(this, handler, msg); + var packet = new ConfigurationDisconnect(); + packet.setMsg(new JsonPrimitive("[VIAaaS] §c$msg")); + UtilKt.writeFlushClose(handler.getData().getFrontChannel(), packet, false); + } + + @Override + public void onInactivated(@NotNull MinecraftHandler handler) { + ConnectionState.DefaultImpls.onInactivated(this, handler); + } + + @Override + public void start(@NotNull MinecraftHandler handler) { + } +} diff --git a/src/main/java/com/viaversion/aas/platform/AspirinAprilFools.java b/src/main/java/com/viaversion/aas/platform/AspirinAprilFools.java index 4fba56e..8a20edf 100644 --- a/src/main/java/com/viaversion/aas/platform/AspirinAprilFools.java +++ b/src/main/java/com/viaversion/aas/platform/AspirinAprilFools.java @@ -13,7 +13,7 @@ public class AspirinAprilFools implements ViaAprilFoolsPlatform { } public void init() { - init(getDataFolder()); + init(new File("config/viaaprilfools.yml")); } @Override diff --git a/src/main/java/com/viaversion/aas/platform/AspirinLegacy.java b/src/main/java/com/viaversion/aas/platform/AspirinLegacy.java index bc8e1c1..336e6ab 100644 --- a/src/main/java/com/viaversion/aas/platform/AspirinLegacy.java +++ b/src/main/java/com/viaversion/aas/platform/AspirinLegacy.java @@ -14,10 +14,10 @@ public class AspirinLegacy implements ViaLegacyPlatform { @Override public File getDataFolder() { - return Via.getPlatform().getDataFolder(); + return new File("config/vialegacy"); } public void init() { - init(getDataFolder()); + init(new File("config/vialegacy.yml")); } } diff --git a/src/main/java/com/viaversion/aas/provider/AspirinCompressionProvider.java b/src/main/java/com/viaversion/aas/provider/AspirinCompressionProvider.java index 7a6cabc..c2c826d 100644 --- a/src/main/java/com/viaversion/aas/provider/AspirinCompressionProvider.java +++ b/src/main/java/com/viaversion/aas/provider/AspirinCompressionProvider.java @@ -1,6 +1,6 @@ package com.viaversion.aas.provider; -import com.viaversion.aas.handler.UtilKt; +import com.viaversion.aas.handler.HandlerUtilKt; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.CompressionProvider; @@ -9,6 +9,6 @@ import java.util.Objects; public class AspirinCompressionProvider extends CompressionProvider { @Override public void handlePlayCompression(UserConnection user, int threshold) { - UtilKt.setCompression(Objects.requireNonNull(user.getChannel()), threshold); + HandlerUtilKt.setCompression(Objects.requireNonNull(user.getChannel()), threshold); } } diff --git a/src/main/kotlin/com/viaversion/aas/codec/packet/PacketRegistry.kt b/src/main/kotlin/com/viaversion/aas/codec/packet/PacketRegistry.kt index e5f8db5..9700922 100644 --- a/src/main/kotlin/com/viaversion/aas/codec/packet/PacketRegistry.kt +++ b/src/main/kotlin/com/viaversion/aas/codec/packet/PacketRegistry.kt @@ -3,8 +3,12 @@ package com.viaversion.aas.codec.packet import com.google.common.collect.Range import com.google.common.collect.RangeMap import com.google.common.collect.TreeRangeMap +import com.viaversion.aas.codec.packet.configuration.ConfigurationDisconnect +import com.viaversion.aas.codec.packet.configuration.ConfigurationPluginMessage +import com.viaversion.aas.codec.packet.configuration.FinishConfig import com.viaversion.aas.codec.packet.handshake.Handshake import com.viaversion.aas.codec.packet.login.* +import com.viaversion.aas.codec.packet.play.ConfigurationAck import com.viaversion.aas.codec.packet.play.Kick import com.viaversion.aas.codec.packet.play.PluginMessage import com.viaversion.aas.codec.packet.play.ServerboundChatCommand @@ -33,6 +37,8 @@ import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPac import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4 import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19 import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPackets1_19 +import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2 +import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2 import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8 import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9 import io.netty.buffer.ByteBuf @@ -77,6 +83,12 @@ object PacketRegistry { register(State.STATUS, Direction.CLIENTBOUND, ::StatusResponse, Range.all(), 0) register(State.STATUS, Direction.CLIENTBOUND, ::StatusPong, Range.all(), 1) + register(State.CONFIGURATION, Direction.CLIENTBOUND, ::ConfigurationPluginMessage, Range.all(), 0) + register(State.CONFIGURATION, Direction.CLIENTBOUND, ::ConfigurationDisconnect, Range.all(), 1) + register(State.CONFIGURATION, Direction.CLIENTBOUND, ::FinishConfig, Range.all(), 2) + register(State.CONFIGURATION, Direction.SERVERBOUND, ::ConfigurationPluginMessage, Range.all(), 1) + register(State.CONFIGURATION, Direction.SERVERBOUND, ::FinishConfig, Range.all(), 2) + register( State.PLAY, Direction.CLIENTBOUND, ::Kick, mapOf( ProtocolVersion.v1_7_1..ProtocolVersion.v1_8 to ClientboundPackets1_8.DISCONNECT.id, @@ -91,8 +103,8 @@ object PacketRegistry { ProtocolVersion.v1_19.singleton to ClientboundPackets1_19.DISCONNECT.id, ProtocolVersion.v1_19_1.singleton to ClientboundPackets1_19_1.DISCONNECT.id, ProtocolVersion.v1_19_3.singleton to ClientboundPackets1_19_3.DISCONNECT.id, - ProtocolVersion.v1_19_4.singleton to ClientboundPackets1_19_4.DISCONNECT.id, - ProtocolVersion.v1_20.singleton to ClientboundPackets1_19_4.DISCONNECT.id // todo change to 1.20 if needed + ProtocolVersion.v1_19_4..ProtocolVersion.v1_20 to ClientboundPackets1_19_4.DISCONNECT.id, + ProtocolVersion.v1_20_2.singleton to ClientboundPackets1_20_2.DISCONNECT.id ) ) register( @@ -109,8 +121,8 @@ object PacketRegistry { ProtocolVersion.v1_19.singleton to ClientboundPackets1_19.PLUGIN_MESSAGE.id, ProtocolVersion.v1_19_1.singleton to ClientboundPackets1_19_1.PLUGIN_MESSAGE.id, ProtocolVersion.v1_19_3.singleton to ClientboundPackets1_19_3.PLUGIN_MESSAGE.id, - ProtocolVersion.v1_19_4.singleton to ClientboundPackets1_19_4.PLUGIN_MESSAGE.id, - ProtocolVersion.v1_20.singleton to ClientboundPackets1_19_4.PLUGIN_MESSAGE.id + ProtocolVersion.v1_19_4..ProtocolVersion.v1_20 to ClientboundPackets1_19_4.PLUGIN_MESSAGE.id, + ProtocolVersion.v1_20_2.singleton to ClientboundPackets1_20_2.PLUGIN_MESSAGE.id ) ) register( @@ -120,7 +132,10 @@ object PacketRegistry { ProtocolVersion.v1_8.singleton, ClientboundPackets1_8.SET_COMPRESSION.id ) - // todo update this to 1.19.3 + register(State.PLAY, Direction.SERVERBOUND, ::ConfigurationAck, mapOf( + ProtocolVersion.v1_20_2.singleton to ServerboundPackets1_20_2.CONFIGURATION_ACKNOWLEDGED.id + )) + // todo update this to latest version register( State.PLAY, Direction.SERVERBOUND, ::ServerboundChatCommand, mapOf( @@ -204,6 +219,8 @@ object PacketRegistry { try { packet.decode(byteBuf, protocolVersion) return ReferenceCountUtil.retain(packet) + } catch (e: Exception) { + throw StacklessException("Failed to decode $packetId $state $direction", e) } finally { ReferenceCountUtil.release(packet) } @@ -217,6 +234,10 @@ object PacketRegistry { ?: throw StacklessException("Failed to get id for " + packet::class.java.simpleName) } Type.VAR_INT.writePrimitive(byteBuf, id) - packet.encode(byteBuf, protocolVersion) + try { + packet.encode(byteBuf, protocolVersion) + } catch (e: Exception) { + throw StacklessException("Failed to encode $id $direction", e) + } } } diff --git a/src/main/kotlin/com/viaversion/aas/handler/Util.kt b/src/main/kotlin/com/viaversion/aas/handler/HandlerUtil.kt similarity index 100% rename from src/main/kotlin/com/viaversion/aas/handler/Util.kt rename to src/main/kotlin/com/viaversion/aas/handler/HandlerUtil.kt diff --git a/src/main/kotlin/com/viaversion/aas/handler/state/Util.kt b/src/main/kotlin/com/viaversion/aas/handler/state/HandlerStateUtil.kt similarity index 100% rename from src/main/kotlin/com/viaversion/aas/handler/state/Util.kt rename to src/main/kotlin/com/viaversion/aas/handler/state/HandlerStateUtil.kt diff --git a/src/main/kotlin/com/viaversion/aas/handler/state/LoginState.kt b/src/main/kotlin/com/viaversion/aas/handler/state/LoginState.kt index 6b9c3a5..f765392 100644 --- a/src/main/kotlin/com/viaversion/aas/handler/state/LoginState.kt +++ b/src/main/kotlin/com/viaversion/aas/handler/state/LoginState.kt @@ -90,7 +90,10 @@ class LoginState : ConnectionState { forward(handler, SetCompression().also { it.threshold = threshold }) setCompression(handler.data.frontChannel, threshold) } - handler.data.state = PlayState() + handler.data.state = when { + handler.data.frontVer!! >= ProtocolVersion.v1_20_2.version -> ConfigurationState() + else -> PlayState() + } forward(handler, loginSuccess) } @@ -289,7 +292,7 @@ class LoginState : ConnectionState { loginStart.username = backName!! // todo implement profile public key? loginStart.profileKey = null - loginStart.profileId = null + loginStart.profileId = generateOfflinePlayerUuid(loginStart.username!!) send(handler.data.backChannel!!, loginStart, true) } catch (e: Exception) { handler.data.frontChannel.fireExceptionCaughtIfOpen(e) diff --git a/src/main/kotlin/com/viaversion/aas/handler/state/PlayState.kt b/src/main/kotlin/com/viaversion/aas/handler/state/PlayState.kt index 459f6cd..fe70ff8 100644 --- a/src/main/kotlin/com/viaversion/aas/handler/state/PlayState.kt +++ b/src/main/kotlin/com/viaversion/aas/handler/state/PlayState.kt @@ -3,6 +3,7 @@ package com.viaversion.aas.handler.state import com.google.gson.JsonPrimitive import com.viaversion.aas.codec.packet.Packet import com.viaversion.aas.codec.packet.UnknownPacket +import com.viaversion.aas.codec.packet.play.ConfigurationAck import com.viaversion.aas.codec.packet.play.Kick import com.viaversion.aas.codec.packet.play.PluginMessage import com.viaversion.aas.codec.packet.play.ServerboundChatCommand @@ -33,10 +34,15 @@ class PlayState : ConnectionState { packet is Kick -> handleKick(handler, packet) packet is ServerboundChatCommand -> modifyChatCommand(packet) packet is ServerboundChatMessage -> modifyChatMessage(packet) + packet is ConfigurationAck -> handleConfigAck(handler, packet) } forward(handler, ReferenceCountUtil.retain(packet)) } + private fun handleConfigAck(handler: MinecraftHandler, packet: ConfigurationAck) { + handler.data.state = ConfigurationState() + } + private fun handleKick(handler: MinecraftHandler, packet: Kick) { kickedByServer = true mcLogger.debug( diff --git a/src/main/kotlin/com/viaversion/aas/protocol/Util.kt b/src/main/kotlin/com/viaversion/aas/protocol/Util.kt deleted file mode 100644 index c677ba9..0000000 --- a/src/main/kotlin/com/viaversion/aas/protocol/Util.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.viaversion.aas.protocol - -import com.viaversion.viaversion.api.minecraft.Position -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper -import com.viaversion.viaversion.api.protocol.remapper.ValueReader -import com.viaversion.viaversion.api.protocol.remapper.ValueWriter -import com.viaversion.viaversion.api.type.Type - -val xyzToPosition = ValueReader { packetWrapper: PacketWrapper -> - val x = packetWrapper.read(Type.INT) - val y = packetWrapper.read(Type.INT) - val z = packetWrapper.read(Type.INT) - Position(x, y, z) -} -val xyzUBytePos = ValueReader { packetWrapper: PacketWrapper -> - val x = packetWrapper.read(Type.INT) - val y = packetWrapper.read(Type.UNSIGNED_BYTE).toInt() - val z = packetWrapper.read(Type.INT) - Position(x, y, z) -} -val xyzUBytePosWriter = ValueWriter { packetWrapper: PacketWrapper, pos: Position -> - packetWrapper.write(Type.INT, pos.x()) - packetWrapper.write(Type.UNSIGNED_BYTE, pos.y().toShort()) - packetWrapper.write(Type.INT, pos.z()) -} -val xyzShortPosWriter = ValueWriter { packetWrapper: PacketWrapper, pos: Position -> - packetWrapper.write(Type.INT, pos.x()) - packetWrapper.write(Type.SHORT, pos.y().toShort()) - packetWrapper.write(Type.INT, pos.z()) -} -val xyzShortPos = ValueReader { packetWrapper: PacketWrapper -> - val x = packetWrapper.read(Type.INT) - val y = packetWrapper.read(Type.SHORT).toInt() - val z = packetWrapper.read(Type.INT) - Position(x, y, z) -} \ No newline at end of file diff --git a/src/main/resources/web/index.html b/src/main/resources/web/index.html index 8cec919..51af76f 100644 --- a/src/main/resources/web/index.html +++ b/src/main/resources/web/index.html @@ -125,6 +125,7 @@ frame-src 'self' https://login.microsoftonline.com/ https://login.live.com/" +