Giter Site home page Giter Site logo

cloudburstmc / protocol Goto Github PK

View Code? Open in Web Editor NEW
296.0 36.0 92.0 3.63 MB

A protocol library for Minecraft Bedrock Edition

Home Page: https://git.io/ProtocolLib

License: Apache License 2.0

Java 100.00%
bedrock protocol protocol-library minecraft mcbe mcpe bedrock-engine bedrock-edition

protocol's Introduction

Protocol

License Build Status Discord Version

Introduction

A protocol library for Minecraft that supports multiple versions. (Currently Bedrock Edition only)

Links

Usage

Check out EXAMPLES.md for examples on how to use this library.

Maven

Protocol Versions:
Class Minecraft Version
Bedrock_v291 1.7.0
Bedrock_v313 1.8.0
Bedrock_v332 1.9.0
Bedrock_v340 1.10.0
Bedrock_v354 1.11.0
Bedrock_v361 1.12.0
Bedrock_v388 1.13.0
Bedrock_v389 1.14.0 - 1.14.50
Bedrock_v390 1.14.60
Bedrock_v407 1.16.0 - 1.16.10
Bedrock_v408 1.16.20
Bedrock_v419 1.16.100
Bedrock_v422 1.16.200 - 1.16.201
Bedrock_v428 1.16.210
Bedrock_v431 1.16.220
Bedrock_v440 1.17.0
Bedrock_v448 1.17.10 - 1.17.11
Bedrock_v465 1.17.30 - 1.17.34
Bedrock_v471 1.17.40 - 1.17.41
Bedrock_v475 1.18.0
Bedrock_v486 1.18.10
Bedrock_v503 1.18.30
Bedrock_v527 1.19.0
Bedrock_v534 1.19.10
Bedrock_v544 1.19.20
Bedrock_v545 1.19.21
Bedrock_v554 1.19.30
Bedrock_v557 1.19.40
Bedrock_v560 1.19.50
Bedrock_v567 1.19.60
Bedrock_v568 1.19.62 - 1.19.63
Bedrock_v575 1.19.70 - 1.19.73
Bedrock_v582 1.19.80 - 1.19.83
Bedrock_v589 1.20.0 - 1.20.1
Bedrock_v594 1.20.10 - 1.20.15
Bedrock_v618 1.20.30 - 1.20.32
Bedrock_v622 1.20.40 - 1.20.41
Bedrock_v630 1.20.50 - 1.20.51
Bedrock_v649 1.20.60
Bedrock_v662 1.20.70
Repository:
<repositories>
    <repository>
        <id>opencollab-releases</id>
        <url>https://repo.opencollab.dev/maven-releases/</url>
    </repository>
    <repository>
        <id>opencollab-snapshots</id>
        <url>https://repo.opencollab.dev/maven-snapshots/</url>
    </repository>
</repositories>
Dependencies:
<dependencies>
    <dependency>
        <groupId>org.cloudburstmc.protocol</groupId>
        <artifactId>bedrock-connection</artifactId>
        <version>3.0.0.Beta1-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

Projects Using This Library

If you would like to add your project here, please create a pull request.

protocol's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

protocol's Issues

Entity metadata broken on BDS

When joining a bedrock dedicated server with ProxyPass (Force https://github.com/CloudburstMC/ProxyPass/blob/master/src/main/java/com/nukkitx/proxypass/network/bedrock/session/ProxyPlayerSession.java#L112 to false to enforce packet reserialization) the entity metadata packets are wrongly read/written. When pressing the sneak key all chunks flicker and the player sometimes starts to fly/glide.

Full bug description / discussion on the discord server: https://discord.com/channels/393465748535640064/599520674737946624/995395815717736620

UpdateBlockSyncedPacket#toString does not show UpdateBlockPacket properties

I made an issue for this since I'm not sure what the cleanest way of fixing this is.

Since UpdateBlockSyncedPacket inherits from UpdateBlockPacket, Lombok's toString does not show the update block fields. Manually adding the @ToString annotation and specifying to call super shows this:

UpdateBlockSyncedPacket(super=UpdateBlockPacket(flags=[NEIGHBORS, NETWORK], blockPosition=(609, 89, 1), runtimeId=134, dataLayer=0), runtimeEntityId=-515396075518, entityBlockSyncType=CREATE)

Error with encoding CameraInstructionPacket

Error occurred when using WDPE (Latest pre-release version)

Created a ticket here because WDPE already has a ticket with this problem, and it's been open unresolved since October 1 (Click here)

When a player switches servers I send him this packet and this error occurs:

16:05:43 [ERROR] Error encoding packet CameraInstructionPacket(setInstruction=CameraSetInstruction(preset=null, ease=null, pos=null, rot=null, facing=null, defaultPreset=OptionalBoolean.empty), fadeInstruction=CameraFadeInstruction(timeData=CameraFadeInstruction.TimeData(fadeInTime=0.5, waitTime=0.6, fadeOutTime=0.5), color=java.awt.Color[r=0,g=0,b=60]), clear=OptionalBoolean.empty)
java.lang.NullPointerException: Cannot invoke "org.cloudburstmc.protocol.bedrock.codec.BedrockPacketDefinition.getId()" because the return value of "org.cloudburstmc.protocol.bedrock.codec.BedrockCodec.getPacketDefinition(java.lang.Class)" is null
        at dev.waterdog.waterdogpe.network.connection.codec.packet.BedrockPacketCodec.getPacketId(BedrockPacketCodec.java:143) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.codec.packet.BedrockPacketCodec.encode(BedrockPacketCodec.java:86) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.codec.packet.BedrockPacketCodec.encode(BedrockPacketCodec.java:58) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.codec.packet.BedrockPacketCodec.encode(BedrockPacketCodec.java:36) ~[server.jar:?]
        at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[server.jar:?]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90) ~[server.jar:?]
        at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[server.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879) ~[server.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:940) ~[server.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:966) ~[server.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:934) ~[server.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:984) ~[server.jar:?]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) ~[server.jar:?]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.peer.ProxiedBedrockPeer.onTick(ProxiedBedrockPeer.java:106) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.peer.ProxiedBedrockPeer.sendPacket0(ProxiedBedrockPeer.java:126) ~[server.jar:?]
        at dev.waterdog.waterdogpe.network.connection.peer.ProxiedBedrockPeer.lambda$sendPacket$0(ProxiedBedrockPeer.java:114) ~[server.jar:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[server.jar:?]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[server.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[server.jar:?]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[server.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[server.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[server.jar:?]
        at java.lang.Thread.run(Thread.java:842) [?:?]

My client version: 1.20.51

EncryptionUtil errors

It seems that none of the methods in EncryptionUtils work, due to the following exception being thrown:

Dec 05, 2019 1:15:47 AM com.nukkitx.network.raknet.RakNetServer$ServerDatagramHandler exceptionCaught
SEVERE: An exception occurred in RakNet
java.lang.ExceptionInInitializerError
com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:28)
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:301)
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:428)
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:406)
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:394)
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:273)
        at com.nukkitx.network.raknet.RakNetServer$ServerDatagramHandler.channelRead(RakNetServer.java:288)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
        at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:647)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:547)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:501)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:461)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
        at com.nukkitx.protocol.bedrock.util.EncryptionUtils.<clinit>(EncryptionUtils.java:43)
        ... 26 more

This particular one is from verifyJwt, but it seems to happen on all methods.

Unable to inflate buffer data

Crash while receiveing packet.
maybe its my code wrong.

Dec 05, 2020 3:52:04 PM com.nukkitx.network.raknet.RakNetClient lambda$new$0
SEVERE: An exception occurred in RakNet (Client)
java.lang.RuntimeException: Unable to inflate buffer data
	at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:85)
	at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:286)
	at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32)
	at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:300)
	at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:427)
	at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:405)
	at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:393)
	at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:272)
	at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:176)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1412)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:943)
	at io.netty.channel.epoll.EpollDatagramChannel$EpollDatagramChannelUnsafe.epollInReady(EpollDatagramChannel.java:478)
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404)
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.zip.DataFormatException: Packet cannot be empty
	at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:68)
	... 20 more

Comments regarding BossEventPacket are outdated

/**
* Appears not to be implemented. Currently bar percentage only appears to change in response to the target entity's health.
*/
UPDATE_PERCENTAGE,
/**
* Also appears to not be implemented. Title clientside sticks as the target entity's nametag, or their entity transactionType name if not set.
*/
UPDATE_NAME,
/**
* Darken the sky when the boss bar is shown.
*/
UPDATE_PROPERTIES,
/**
* Not implemented :( Intended to alter bar appearance, but these currently produce no effect on clientside whatsoever.
*/

Over the time (especially with 1.18) some of those fields have been implemented.
The gophertunnel docs are partially updated:
https://github.com/Sandertv/gophertunnel/blob/0de533a5e490f127330818ffba2c96b93b813e69/minecraft/protocol/packet/boss_event.go#L42-L59
I can confirm that the title and health percentage properties are working if the BossEntityUniqueID equals the player's UUID, i have not been able to test if they work with an actual entity yet though.

Setup Guide

The guides for making a client or server don't work

ForceExperimentalGameplay option error

StartGamePacket#setForceExperimentalGameplay=true will block player join the server, which I think is an error caused by using writeOptional.
The protocol library version I am using is 594, and below is the complete content of the StartGamePacket

        var startGamePacket = new StartGamePacket();
        startGamePacket.getGamerules().add(GameRule.SHOW_COORDINATES.toNetwork());
        startGamePacket.setUniqueEntityId(playerEntity.getUniqueId());
        startGamePacket.setRuntimeEntityId(playerEntity.getUniqueId());
        startGamePacket.setPlayerGameType(gameType);
        var loc = playerEntity.getLocation();
        var worldSpawn = spawnWorld.getSpawnPosition();
        startGamePacket.setDefaultSpawn(Vector3i.from(worldSpawn.x(), worldSpawn.y(), worldSpawn.z()));
        startGamePacket.setPlayerPosition(Vector3f.from(loc.x(), loc.y(), loc.z()));
        startGamePacket.setRotation(Vector2f.from(loc.pitch(), loc.yaw()));
        startGamePacket.setSeed(0L);
        startGamePacket.setDimensionId(spawnWorld.getDimensionInfo().dimensionId());
        startGamePacket.setGeneratorId(spawnWorld.getWorldGenerator().getType().getId());
        startGamePacket.setLevelGameType(spawnWorld.getWorldGameType());
        startGamePacket.setDifficulty(spawnWorld.getDifficulty().ordinal());
        startGamePacket.setTrustingPlayers(true);
        startGamePacket.setDayCycleStopTime(0);
        startGamePacket.setLevelName(server.getServerSettings().motd());
        //TODO
        startGamePacket.setLevelId("");
        //TODO
        startGamePacket.setDefaultPlayerPermission(PlayerPermission.OPERATOR);
        startGamePacket.setServerChunkTickRange(spawnWorld.getTickingRadius());
        startGamePacket.setVanillaVersion(server.getNetworkServer().getCodec().getMinecraftVersion());
        startGamePacket.setPremiumWorldTemplateId("");
        startGamePacket.setInventoriesServerAuthoritative(true);
        startGamePacket.setItemDefinitions(ItemTypeRegistry.getRegistry().getItemDefinitions());
        startGamePacket.setAuthoritativeMovementMode(AuthoritativeMovementMode.SERVER);
        startGamePacket.setServerAuthoritativeBlockBreaking(true);
        startGamePacket.setCommandsEnabled(true);
        startGamePacket.setMultiplayerGame(true);
        startGamePacket.setBroadcastingToLan(true);
        startGamePacket.setMultiplayerCorrelationId(UUID.randomUUID().toString());
        startGamePacket.setXblBroadcastMode(GamePublishSetting.PUBLIC);
        startGamePacket.setPlatformBroadcastMode(GamePublishSetting.PUBLIC);
        //TODO
        startGamePacket.setCurrentTick(0);
        startGamePacket.setServerEngine("Allay");
        startGamePacket.setBlockRegistryChecksum(0L);
        startGamePacket.setPlayerPropertyData(NbtMap.EMPTY);
        startGamePacket.setWorldTemplateId(new UUID(0, 0));
        startGamePacket.setWorldEditor(false);
        startGamePacket.setChatRestrictionLevel(ChatRestrictionLevel.NONE);
        startGamePacket.setSpawnBiomeType(SpawnBiomeType.DEFAULT);
        startGamePacket.setCustomBiomeName("");
        startGamePacket.setEducationProductionId("");
        startGamePacket.setForceExperimentalGameplay(OptionalBoolean.of(true));
        startGamePacket.setBlockNetworkIdsHashed(true);
        sendPacket(startGamePacket);

When the player enter the server
image

Proxy connection

How can I connect the client to remote server through a proxy?

java.lang.ArrayIndexOutOfBoundsException when deserializing MovePlayer packet

This is the stacktrace:

ERROR 2019-07-06 00:48:49,962 [Network Listener - #2][RakNetClient.java:167] : An exception occurred in RakNet
java.lang.ArrayIndexOutOfBoundsException: 1737435248
        at com.nukkitx.protocol.bedrock.v354.serializer.MovePlayerSerializer_v354.deserialize(MovePlayerSerializer_v354.java:42)
        at com.nukkitx.protocol.bedrock.v354.serializer.MovePlayerSerializer_v354.deserialize(MovePlayerSerializer_v354.java:14)
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:54)
        at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:70)
        at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:17)
        at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:276)
        at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32)
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:270)
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:398)
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:375)
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:363)
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:242)
        at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:151)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
        at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:617)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:534)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at java.lang.Thread.run(Thread.java:748)

This is the code that crashes: https://github.com/NukkitX/Protocol/blob/44f16f1cf55ba8c314e9b19b5f477517838e5775/bedrock/bedrock-v354/src/main/java/com/nukkitx/protocol/bedrock/v354/serializer/MovePlayerSerializer_v354.java#L42

if (packet.getMode() == Mode.TELEPORT) {
            packet.setTeleportationCause(TeleportationCause.values()[buffer.readIntLE()]);
            packet.setUnknown0(buffer.readIntLE());
        }

Basically, the teleportation cause value is outside the supported values. In my case, the player is being teleported by a bot using commands.

It would be great if this could be gracefully handled with TeleportationCause set to TeleportationCause.UNKNOWN. At least if it's set to UNKNOWN then clients that don't care about this field (such as mine) can continue working even in the face of unknown teleportation causes.

PacketSerializeException: Error whilst deserializing PlayerAuthInputPacket

Cloudburst's Protocol tries to read values when PlayerBlockActionData::getAction() == PlayerActionType.STOP_BREAK, but most popular protocol libraries don't read anything if it's a PlayerActionType.STOP_BREAK

The most recent commits at the time of writing:
CloudburstMC's Protocol
pmmp's BedrockProtocol
Sandertv's gophertunnel

Stacktrace:

com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst deserializing PlayerAuthInputPacket(rotation=(36.403076, -20.125961, -20.125961), position=(214.3528, 70.076126, 206.3287), motion=(0.0, 0.0), inputData=[PERFORM_ITEM_INTERACTION, PERFORM_BLOCK_ACTIONS], inputMode=MOUSE, playMode=SCREEN, vrGazeDirection=null, tick=183, delta=(0.0, 0.0023533825, 0.0), itemUseTransaction=ItemUseTransaction(legacyRequestId=0, legacySlots=[], usingNetIds=false, actions=[], actionType=2, blockPosition=(215, 67, 209), blockFace=2, hotbarSlot=0, itemInHand=ItemData(id=12, damage=0, count=1, tag=null, canPlace=[], canBreak=[], blockingTicks=0, blockRuntimeId=6707, usingNetId=false, netId=0), playerPosition=(214.3528, 70.072205, 206.3287), clickPosition=(0.0, 0.0, 0.0), blockRuntimeId=0), itemStackRequest=null, playerActions=[PlayerBlockActionData(action=START_BREAK, blockPosition=(215, 67, 209), face=2), PlayerBlockActionData(action=STOP_BREAK, blockPosition=(18, 215, 67), face=209)])
	at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:66) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:74) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:283) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.lambda$onEncapsulated$0(BedrockRakNetSessionListener.java:39) ~[Waterdog.jar:?]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[Waterdog.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[Waterdog.jar:?]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[Waterdog.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[Waterdog.jar:?]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[Waterdog.jar:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(127) + length(1) exceeds writerIndex(127): UnpooledSlicedByteBuf(ridx: 127, widx: 127, cap: 127/127, unwrapped: PooledUnsafeDirectByteBuf(ridx: 173, widx: 173, cap: 8192))
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442) ~[Waterdog.jar:?]
	at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:730) ~[Waterdog.jar:?]
	at com.nukkitx.network.VarInts.decode(VarInts.java:46) ~[Waterdog.jar:?]
	at com.nukkitx.network.VarInts.readInt(VarInts.java:14) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockPacketHelper.readVector3i(BedrockPacketHelper.java:359) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.v431.serializer.PlayerAuthInputSerializer_v431.readPlayerBlockActionData(PlayerAuthInputSerializer_v431.java:31) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.v428.serializer.PlayerAuthInputSerializer_v428.deserialize(PlayerAuthInputSerializer_v428.java:99) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.v428.serializer.PlayerAuthInputSerializer_v428.deserialize(PlayerAuthInputSerializer_v428.java:17) ~[Waterdog.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:64) ~[Waterdog.jar:?]
	... 9 more

No Longer Compatible With PS4 Bedrock Edition

After testing various projects using this framework, it appears that PS4's Bedrock Edition doesn't work properly any longer.

When using two editions of Bedrock (Win10 and PS4) I am able to complete the handshake and connect using the Win10 edition, however the PS4 edition consistently fails.

When the PS4 is trying to connect, the "Locating server" dialog completely freezes for a few seconds, as if it is processing something, but then it unfreezes and begins to just spin there until I cancel it.

I'm testing with various implementations of the Protocol framework ranging from Nukkit itself (various branches), Geyser, and even DragonProxy.

The closest I've been able to get to connecting is using the "master" branch of Nukkit, however it simply crashes the PS4 version.

To confirm I didn't have a network issue at play, I also tried the official Bedrock server software and confirmed that the PS4 can connect to it without issues.

AvailableCommandsPacket wrong encoding

Hey Guys, I use a combination of CloudburstMC/Protocol driven applications (Sever -> WaterdogPE -> ProxyPass -> Client; Server -> WaterdogPE -> DebugClient). When the Proxy handle (decode + encode) the AvailableCommandsPacket it's result wrong CommandData->aliases:

Example given:

Server -> send via Proxy without decode + encode -> DebugClient:
AvailableCommandsPacket(commands=[CommandData(
name=clear
description=Entfernt Gegenstรคnde aus dem Spielerinventar.
flags=[]
permission=0
aliases=null
overloads=[
[
CommandParamData(name=args, optional=true, enumData=null, type=CommandParam(type=TEXT, defaultValue=-1), postfix=null, options=[])
]
]
)])

Server -> send via Proxy with full decoding + encoding:
AvailableCommandsPacket(commands=[CommandData(
name=clear
description=Entfernt Gegenstรคnde aus dem Spielerinventar.
flags=[]
permission=0
aliases=CommandEnumData(name=KillAliases, values={suicide=[], kill=[]}, isSoft=false) <-- All CommandData Entries have the Alias of one CommandData Entry (it's the alias from the first CommandData with Alias)
overloads=[
[
CommandParamData(name=args, optional=true, enumData=null, type=CommandParam(type=TEXT, defaultValue=-1), postfix=null, options=[])
]
]
)])

Wrong encoding in serializer?

AvailableCommands Flags

I've noticed that the flags are set and retrieved different in the serializer/deserializer.

When deserializing the flags are set using:

            for (int i = 0; i < 8; i++) {
                if (((flagsByte >>> i) & 0xf) != 0) {
                    flags.add(CommandData.Flag.values()[i]);
                }
            }

When serializing:

                for (CommandData.Flag flag : commandData.getFlags()) {
                    flags |= 1 << flag.ordinal();
                }

Serializing will set the bits of each flag to 1. So if its value is 3 then the 3rd bit is set.

Deserializing will set a flag and every flag below its position to 1 (due to the & 0xf and the !=0).

getFormData() from ModalFormResponsePacket returns corrupted/empty data

Currently updating the BedrockConnect project to Protocol version 2.9.11-SNAPSHOT.

Calling the function getFormData() from a ModalFormResponsePacket object seems to be returning empty or corrupted data. (In the context of a button being pressed in a form UI) When printing the contents of getFormData(), it seems to be empty or a random character like "โ˜ป".

Use-case/Line in question from project:

https://github.com/Pugmatt/BedrockConnect/blob/master/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java#L100

Not sure if it's just a silly mistake from my end, but I'm guessing the packet might just be getting decoded incorrectly due to a change in the packet's data layout this update.

Support proxying connections

Add support for proxying connections via a proxy, such as SOCKS5. This is useful for networking behind a firewall or other application-specific usecases.

Unable to deserialize camera instruction

Hey! Found this while trying to test out camera workings with 1.20.50 BDS.

Replication steps:

  • 1.20.50 BDS & client
  • Proxypass (Kastle's online mode fork)
  • Run camera @a set minecraft:first_person or similar in the server console - can't run it in game since trying to run any commands while connected through proxypass fully crashes the client :/

Details:
Proxypass error log:
https://paste.gg/p/anonymous/e89d6165c07b41a9b97a56986a59f1e8

Packet log (relevant parts):

  1. CameraPresetsPacket contents:
[13:49:27:407] [CLIENT BOUND] - CameraPresetsPacket(presets=[CameraPreset(identifier=minecraft:first_person, parentPreset=, pos=null, yaw=null, pitch=null, listener=null, playEffect=OptionalBoolean.empty), CameraPreset(identifier=minecraft:free, parentPreset=, pos=(0.0, 0.0, 0.0), yaw=0.0, pitch=0.0, listener=null, playEffect=OptionalBoolean.empty), CameraPreset(identifier=minecraft:third_person, parentPreset=, pos=null, yaw=null, pitch=null, listener=null, playEffect=OptionalBoolean.empty), CameraPreset(identifier=minecraft:third_person_front, parentPreset=, pos=null, yaw=null, pitch=null, listener=null, playEffect=OptionalBoolean.empty), CameraPreset(identifier=example:example_free, parentPreset=minecraft:free, pos=null, yaw=10.0, pitch=40.0, listener=null, playEffect=OptionalBoolean.empty), CameraPreset(identifier=example:example_player_effects, parentPreset=minecraft:free, pos=null, yaw=null, pitch=null, listener=null, playEffect=OptionalBoolean[true]), CameraPreset(identifier=example:example_player_listener, parentPreset=minecraft:free, pos=null, yaw=null, pitch=null, listener=PLAYER, playEffect=OptionalBoolean.empty)])
  1. BDS console shows successful usage:
camera @a set minecraft:first_person
[2023-12-08 14:42:33:544 INFO] Sent a camera instruction to the following players: onebeastofchris
camera @a set minecraft:third_person
[2023-12-08 14:42:56:200 INFO] Sent a camera instruction to the following players: onebeastofchris

Protocol versions used:

bedrock-codec = { group = "org.cloudburstmc.protocol", name = "bedrock-codec", version = "3.0.0.Beta1-20231206.150507-114" }
bedrock-common = { group = "org.cloudburstmc.protocol", name = "common", version = "3.0.0.Beta1-20231206.150507-113" }
bedrock-connection = { group = "org.cloudburstmc.protocol", name = "bedrock-connection", version = "3.0.0.Beta1-20231206.150507-113" }

Interestingly, it seems like Gophertunnel just sends the index of the camera preset, not a NamedDefinition:
https://github.com/Sandertv/gophertunnel/blob/2b48a19c84f515175e8447795e4613a520494b91/minecraft/protocol/camera.go#L66C2-L66C2

Please let me know if there's anything else i can provide, thanks!

Issue with LevelEventGenericPacket

This packet has "floating" NBT whereas the code expects them in a Compound Tag. I've only seen this packet used so far (for what I'm not sure yet) in MCEE 1.14.31.

[12:48:11 DEBUG]: Error occurred whilst decoding packet
com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst deserializing LevelEventGenericPacket(eventId=2023, tag=null)
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:60) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:73) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:276) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:307) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:434) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:412) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:405) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:279) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:153) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.read(EpollDatagramChannel.java:688) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.access$100(EpollDatagramChannel.java:57) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel$EpollDatagramChannelUnsafe.epollInReady(EpollDatagramChannel.java:507) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:502) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class com.nukkitx.nbt.NbtMap (java.lang.Integer is in module java.base of loader 'bootstrap'; com.nukkitx.nbt.NbtMap is in unnamed module of loader 'app')
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:24) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:11) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:58) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        ... 24 more
[12:48:20 DEBUG]: Error occurred whilst decoding packet
com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst deserializing LevelEventGenericPacket(eventId=2023, tag=null)
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:60) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:73) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:276) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:307) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:434) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:412) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:405) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:279) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:153) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.read(EpollDatagramChannel.java:688) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.access$100(EpollDatagramChannel.java:57) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel$EpollDatagramChannelUnsafe.epollInReady(EpollDatagramChannel.java:507) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:502) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class com.nukkitx.nbt.NbtMap (java.lang.Integer is in module java.base of loader 'bootstrap'; com.nukkitx.nbt.NbtMap is in unnamed module of loader 'app')
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:24) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:11) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:58) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        ... 24 more
[12:48:21 DEBUG]: Error occurred whilst decoding packet
com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst deserializing LevelEventGenericPacket(eventId=2023, tag=null)
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:60) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.wrapper.BedrockWrapperSerializerV9_10.deserialize(BedrockWrapperSerializerV9_10.java:73) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:276) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:32) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:307) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:434) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:412) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:405) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:279) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:153) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.read(EpollDatagramChannel.java:688) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel.access$100(EpollDatagramChannel.java:57) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollDatagramChannel$EpollDatagramChannelUnsafe.epollInReady(EpollDatagramChannel.java:507) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:394) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:510) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:413) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class com.nukkitx.nbt.NbtMap (java.lang.Integer is in module java.base of loader 'bootstrap'; com.nukkitx.nbt.NbtMap is in unnamed module of loader 'app')
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:24) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.v361.serializer.LevelEventGenericSerializer_v361.deserialize(LevelEventGenericSerializer_v361.java:11) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:58) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
        ... 26 more

Client cannot retrieve Query result

Description of issue

Somewhere at sending the response of a query request back to the client (MC:Bedrock W10, v.1.14.60, Protocol Version 390) is not working. I used my own software, but also ProxyPass to identify if this is an issue made by myself or a general issue. It is a general as it seems. Proxypass kicks my client at login sequence "Invalid Idenity Public Key". It is running under localhost (or lets say 0.0.0.0/127.0.0.0 whatever..) with its default settings.

Exception in console

[18:49:52 DEBUG]: Is player data valid? true
[18:49:52 DEBUG]: Initializing proxy session
[18:49:52 DEBUG]: Packets will be logged under C:\Users\serha\OneDrive\Desktop\ProxyPass (MITM)\.\sessions\sero583-1590684592701\packets.log
[18:49:52 DEBUG]: Downstream connected
[18:49:53 ERROR]: An exception occurred in RakNet
java.lang.IllegalStateException: Connection has been closed
        at com.nukkitx.protocol.bedrock.BedrockSession.checkForClosed(BedrockSession.java:71) ~[proxypass.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockClientSession.disconnect(BedrockClientSession.java:13) ~[proxypass.jar:?]
        at com.nukkitx.proxypass.network.bedrock.session.ProxyPlayerSession.lambda$new$0(ProxyPlayerSession.java:54) ~[proxypass.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockSession.close(BedrockSession.java:252) ~[proxypass.jar:?]
        at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener$Server.onDisconnect(BedrockRakNetSessionListener.java:90) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.close(RakNetSession.java:637) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onDisconnectionNotification(RakNetSession.java:862) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:294) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:428) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:406) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:399) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:273) ~[proxypass.jar:?]
        at com.nukkitx.network.raknet.RakNetServer$ServerDatagramHandler.channelRead(RakNetServer.java:288) ~[proxypass.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [proxypass.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [proxypass.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [proxypass.jar:?]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) [proxypass.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [proxypass.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [proxypass.jar:?]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) [proxypass.jar:?]
        at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) [proxypass.jar:?]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700) [proxypass.jar:?]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635) [proxypass.jar:?]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) [proxypass.jar:?]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) [proxypass.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) [proxypass.jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [proxypass.jar:?]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_192]

Spawning Particle

When I spawn Particle with command block, it shows but i got somthing like that in logs:

com.nukkitx.protocol.bedrock.exception.PacketSerializeException: Error whilst deserializing SpawnParticleEffectPacket
	at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:47) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:75) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:19) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:277) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:28) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:301) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:428) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:406) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:399) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:273) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.network.raknet.RakNetClient$ClientDatagramHandler.channelRead(RakNetClient.java:151) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1421) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [proxypass-1.0.0-SNAPSHOT.jar:?]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(16) + length(3137) exceeds writerIndex(40): UnpooledSlicedByteBuf(ridx: 16, widx: 40, cap: 40/40, unwrapped: PooledUnsafeDirectByteBuf(ridx: 41, widx: 41, cap: 256))
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1451) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1434) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:903) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:911) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.v361.BedrockUtils.readByteArray(BedrockUtils.java:243) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.v361.BedrockUtils.readString(BedrockUtils.java:256) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.v361.serializer.SpawnParticleEffectSerializer_v361.deserialize(SpawnParticleEffectSerializer_v361.java:25) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.v361.serializer.SpawnParticleEffectSerializer_v361.deserialize(SpawnParticleEffectSerializer_v361.java:10) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockPacketCodec.tryDecode(BedrockPacketCodec.java:45) ~[proxypass-1.0.0-SNAPSHOT.jar:?]
	... 25 more

When bound to an IP, LAN broadcasts are no longer recieved

As per a discussion in Discord when the BedrockServer is bound to an IP instead of 0.0.0.0 it will no longer see broadcast packets and thus not pick up on LAN broadcasts.

A possible solution is to bind to 0.0.0.0 using a MulticastSocket (as opposed to a DatagramSocket) which allows multiple listeners which will receive all broadcast traffic when a specific IP is set in addition to the IP to receive unicast traffic.

Move Player Bug

Greetings,

my problem is not really related to this project, but I have no plan to fix it, because everything seems right.
I'm trying to move players with the appropriate "MovePlayerPacket" but, I the Bedrock Client just replies with the last coordinates, and on the client-side my player ist just rotating. The entity absolute move packet works just for the current player.

I send everything that Nukkit also sends. Hopefully anyone has an idea which causes that strange behavior of the client. It's no problem to reverse engineer the server but the client...

Kind regards
Valaphee

P.S.: Here are some of the packets logged:
https://tmp.valaphee.com/bagabilewu.js
BE = Bedrock Edition

BedrockPacketHelper#getBlockingItemIdentifier() can return wrong value

Some bedrock server use "shield" as an identifier for the blocking item. They ommit the "minecraft:" on all entries which seems to work for the vanilla bedrock client. Protocol currently only support "minecraft:shield" which causes errors on other server software. PowerNukkit for example only sends "shield" in the item entries

Problems with packet decompression while connecting from beta version

Hello, I added v402 codec to NukkitX 2.0. When I trying to connect from 1.16.x, I catched this problem:

22:10:43 [ERROR] An exception occurred in RakNet
java.lang.RuntimeException: Unable to inflate buffer data
	at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:83) ~[bedrock-common-2.5.4.jar:?]
	at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:19) ~[bedrock-common-2.5.4.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockSession.onWrappedPacket(BedrockSession.java:277) ~[bedrock-common-2.5.4.jar:?]
	at com.nukkitx.protocol.bedrock.BedrockRakNetSessionListener.onEncapsulated(BedrockRakNetSessionListener.java:28) ~[bedrock-common-2.5.4.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onEncapsulatedInternal(RakNetSession.java:301) ~[raknet-1.6.16.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onOrderedReceived(RakNetSession.java:428) ~[raknet-1.6.16.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.checkForOrdered(RakNetSession.java:406) ~[raknet-1.6.16.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onRakNetDatagram(RakNetSession.java:394) ~[raknet-1.6.16.jar:?]
	at com.nukkitx.network.raknet.RakNetSession.onDatagram(RakNetSession.java:273) ~[raknet-1.6.16.jar:?]
	at com.nukkitx.network.raknet.RakNetServer$ServerDatagramHandler.channelRead(RakNetServer.java:288) ~[raknet-1.6.16.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
	at java.lang.Thread.run(Thread.java:835) [?:?]
Caused by: java.util.zip.DataFormatException: No zlib header
	at com.nukkitx.protocol.util.Zlib.inflate(Zlib.java:32) ~[common-2.5.4.jar:?]
	at com.nukkitx.protocol.bedrock.compressionhandler.DefaultBedrockCompressionHandler.decompressPackets(DefaultBedrockCompressionHandler.java:64) ~[bedrock-common-2.5.4.jar:?]
	... 24 more

And I tested it on different versions (chanched field protocolVersion to 392...401)

  • 1.15.0.51 - no problems
  • 1.15.0.53 - no problems
  • 1.15.0.54 - exception after receiving login packet
  • 1.16.0.51 - disconnecting itself from server without exceptions
  • 1.16.0.53 - always catching this exception
  • 1.16.0.55 - always catching this exception

[Repositories who use Protocol Branch]

Hello people.

I think this is a good ideea to give us a point or a link of project/discord group if you use Protocol branch for your project to see how much people are implicated with that.

Thank you and have a nice day.

Unable to serialize LevelSoundEvent2Packet when snowball projectiles are thrown

https://mclo.gs/xsV16xa
Seems like some type "511" can't be properly deserialized.

To replicate:

  • use 1.20.71 BDS
  • Proxypass
  • connect with a 1.20.7x client
  • throw a snowball

It also seems to occur with snowmen, so it's probably the snowball projectile itself?

Full stacktrace:

14:04:09 INFO ]: Failed to decode packet
org.cloudburstmc.protocol.bedrock.codec.PacketSerializeException: Error whilst deserializing LevelSoundEvent2Packet(sound=null, position=null, extraData=0, identifier=null, babySound=false, relativeVolumeDisabled=false)
	at org.cloudburstmc.protocol.bedrock.codec.BedrockCodec.tryDecode(BedrockCodec.java:59) ~[bedrock-codec-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec.decode(BedrockPacketCodec.java:59) [bedrock-connection-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec.decode(BedrockPacketCodec.java:19) [bedrock-connection-3.0.0.Beta1-SNAPSHOT.jar:?]
	at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.ProxyInboundRouter.channelRead(ProxyInboundRouter.java:66) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.common.EncapsulatedToMessageHandler.channelRead0(EncapsulatedToMessageHandler.java:15) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at org.cloudburstmc.netty.handler.codec.raknet.common.EncapsulatedToMessageHandler.channelRead0(EncapsulatedToMessageHandler.java:8) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
Caused by: org.cloudburstmc.protocol.bedrock.codec.PacketSerializeException: Error whilst deserializing LevelSoundEvent2Packet(sound=null, position=null, extraData=0, identifier=null, babySound=false, relativeVolumeDisabled=false)

	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
Caused by: java.lang.NullPointerException: type null for id 511

	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.onOrderedReceived(RakSessionCodec.java:352) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.checkForOrdered(RakSessionCodec.java:333) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.handleDatagram(RakSessionCodec.java:326) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec.channelRead(RakSessionCodec.java:217) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:102) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.AdvancedChannelInboundHandler.channelRead(AdvancedChannelInboundHandler.java:48) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.client.RakClientProxyRouteHandler.channelRead(RakClientProxyRouteHandler.java:50) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:97) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.101.Final.jar:4.1.101.Final]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.NullPointerException: type null for id 511
	at org.cloudburstmc.protocol.common.util.Preconditions.checkNotNull(Preconditions.java:929) ~[common-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.common.util.TypeMap.getType(TypeMap.java:49) ~[common-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.bedrock.codec.v332.serializer.LevelSoundEventSerializer_v332.deserialize(LevelSoundEventSerializer_v332.java:28) ~[bedrock-codec-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.bedrock.codec.v332.serializer.LevelSoundEventSerializer_v332.deserialize(LevelSoundEventSerializer_v332.java:12) ~[bedrock-codec-3.0.0.Beta1-SNAPSHOT.jar:?]
	at org.cloudburstmc.protocol.bedrock.codec.BedrockCodec.tryDecode(BedrockCodec.java:57) ~[bedrock-codec-3.0.0.Beta1-SNAPSHOT.jar:?]
	... 89 more
[14:04:09 WARN ]: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.handler.codec.DecoderException: org.cloudburstmc.protocol.bedrock.codec.PacketSerializeException: Error whilst deserializing LevelSoundEvent2Packet(sound=null, position=null, extraData=0, identifier=null, babySound=false, relativeVolumeDisabled=false)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
	at org.cloudburstmc.netty.handler.codec.raknet.ProxyInboundRouter.channelRead(ProxyInboundRouter.java:66) [netty-transport-raknet-1.0.0.CR1-SNAPSHOT.jar:?]
	at io.netty.channel.AbstractChannelHandlerContext.

Wrong AuthoritativeMovementMode deseralizer in v3

Hey,

The AuthoritativeMovementMode of my BDS is set to "sever-auth" (AuthoritativeMovementMode.SERVER), if I debug the StartGamePacket with protocol library v3, it is output AuthoritativeMovementMode.SERVER_WITH_REWIND.

If I debug the same with protocol lib v2 (ProxyPass for example), it is output the correct MovementType Server.

Unable to resolve through the repo given

Cannot resolve unable to find valid certification path to requested target

Using the specified repo

    <repositories>
        <repository>
            <id>nukkitx-repo-release</id>
            <url>https://repo.nukkitx.com/maven-releases/</url>
        </repository>
        <repository>
            <id>nukkitx-repo-snapshot</id>
            <url>https://repo.nukkitx.com/maven-snapshots/</url>
        </repository>
    </repositories>
        <dependency>
            <groupId>com.nukkitx.protocol</groupId>
            <artifactId>bedrock-v471</artifactId>
            <version>2.9.5-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.