A Fabric mod / Velocity plugin / BungeeCord plugin that uses RakNet to improve multiplayer experience significantly under unreliable and rate-limited connections.
MIT License
148
stars
2
forks
source link
Krypton incompatibility with *small* packets on Vanilla transport #1
Install both Krypton 0.1.6 and Raknet Fabric 0.1.0+alpha.1.4-all on the server.
Join with vanilla protocol & transport (i.e. no raknet;). Localhost vs. external server doesn't matter.
Get a Diamond Pickaxe with Unbreaking 1 from an enchanting table.
Get another Diamond Pickaxe with Efficiency 1 and Unbreaking 1 from an enchanting table.
Note, the order of enchantments may matter here.
Attempt to combine the Unbreaking 1 pickaxe with the Efficiency 1 & Unbreaking 1 pickaxe in an anvil.
Get immediately kicked due to badly compressed packet?
Notes
The server was with stock settings at the time of testing, which means the compression threshold of 256 was applied. There are no other configs available, for as LazyDFU (present purely to reduce boot time), Krypton and RaknetFabric has no user/admin-configurable options.
The full server.properties for reference.
```properties
#Minecraft server properties
#Sun Feb 20 12:57:52 CST 2022
enable-jmx-monitoring=false
rcon.port=25575
gamemode=survival
enable-command-block=false
enable-query=false
level-name=world
motd=A Minecraft Server
query.port=25565
pvp=true
difficulty=easy
network-compression-threshold=256
require-resource-pack=false
max-tick-time=60000
use-native-transport=true
max-players=20
online-mode=true
enable-status=true
allow-flight=false
broadcast-rcon-to-ops=true
view-distance=10
server-ip=
resource-pack-prompt=
allow-nether=true
server-port=25565
enable-rcon=false
sync-chunk-writes=true
op-permission-level=4
prevent-proxy-connections=false
hide-online-players=false
resource-pack=
entity-broadcast-range-percentage=100
simulation-distance=10
rcon.password=
player-idle-timeout=0
force-gamemode=false
rate-limit=0
hardcore=false
white-list=false
broadcast-console-to-ops=true
spawn-npcs=true
spawn-animals=true
function-permission-level=2
text-filtering-config=
spawn-monsters=true
enforce-whitelist=false
resource-pack-sha1=
spawn-protection=16
max-world-size=29999984
```
Logs
The full, unmodified logs with both the Vanilla and Raknet transports used. The same task was attempted with both, with only the Vanilla transport crashing.
```java
[12:57:45 INFO]: Loading Minecraft 1.18.1 with Fabric Loader 0.13.2
[12:57:46 INFO]: Loading 7 mods:
- com_velocitypowered_velocity-native 1.1.0-SNAPSHOT via krypton
- fabricloader 0.13.2
- java 17
- krypton 0.1.6
- lazydfu 0.1.2
- minecraft 1.18.1
- raknet-fabric 0.1.0+alpha.1.4
[12:57:46 INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/kjp12/Downloads/raknet/libraries/net/fabricmc/sponge-mixin/0.11.2+mixin.0.8.5/sponge-mixin-0.11.2+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER
[12:57:46 INFO]: Compatibility level set to JAVA_16
[12:57:46 WARN]: Error loading class: net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon (java.lang.ClassNotFoundException: net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon)
[12:57:51 INFO]: Compression will use libdeflate (Linux x86_64), encryption will use OpenSSL 1.1.x (Linux x86_64)
[12:57:51 INFO]: Krypton is now accelerating your Minecraft server's networking stack 🚀
[12:57:52 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[12:57:52 WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[12:57:52 WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
[12:57:52 WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
[12:57:52 WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
[12:57:52 WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[12:57:52 INFO]: Reloading ResourceManager: Default
[12:57:53 INFO]: Loaded 7 recipes
[12:57:53 INFO]: Loaded 1141 advancements
[12:57:56 INFO]: Starting minecraft server version 1.18.1
[12:57:56 INFO]: Loading properties
[12:57:56 INFO]: Default game type: SURVIVAL
[12:57:56 INFO]: Generating keypair
[12:57:56 INFO]: Starting Minecraft server on *:25565
[12:57:56 INFO]: Using epoll channel type
[12:57:56 INFO]: Using epoll channel type
[12:57:56 INFO]: Preparing level "world"
[12:57:56 INFO]: Preparing start region for dimension minecraft:overworld
[12:57:57 INFO]: [STDOUT]: Krypton detected, applying compatibility
[12:57:58 INFO]: Preparing spawn area: 0%
[12:57:58 INFO]: UUID of player _KJP12 is 82fe072f-b2d9-4005-b8a6-9284195a576e
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:01 INFO]: Preparing spawn area: 0%
[12:58:02 INFO]: Preparing spawn area: 4%
[12:58:02 INFO]: Preparing spawn area: 10%
[12:58:03 INFO]: Preparing spawn area: 17%
[12:58:03 INFO]: Preparing spawn area: 33%
[12:58:04 INFO]: Preparing spawn area: 42%
[12:58:04 INFO]: Preparing spawn area: 55%
[12:58:05 INFO]: Preparing spawn area: 69%
[12:58:05 INFO]: Preparing spawn area: 79%
[12:58:06 INFO]: Preparing spawn area: 79%
[12:58:06 INFO]: Preparing spawn area: 83%
[12:58:07 INFO]: Preparing spawn area: 85%
[12:58:07 INFO]: Preparing spawn area: 88%
[12:58:08 INFO]: Preparing spawn area: 91%
[12:58:08 INFO]: Preparing spawn area: 96%
[12:58:09 INFO]: Preparing spawn area: 98%
[12:58:09 INFO]: Time elapsed: 12561 ms
[12:58:09 INFO]: Done (12.780s)! For help, type "help"
[12:58:09 INFO]: _KJP12[/[0:0:0:0:0:0:0:1%0]:45814] logged in with entity id 200 at (-32.127683096115916, 71.0, -73.60408038656982)
[12:58:09 INFO]: _KJP12 joined the game
[12:58:12 INFO]: [STDERR]: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 259 is below server threshold of 512
[12:58:12 INFO]: [STDERR]: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 120 is below server threshold of 512
[12:58:12 INFO]: _KJP12 lost connection: Internal Exception: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 259 is below server threshold of 512
[12:58:12 INFO]: _KJP12 left the game
[13:01:06 INFO]: [STDOUT]: Krypton detected, applying compatibility
[13:01:06 INFO]: UUID of player _KJP12 is 82fe072f-b2d9-4005-b8a6-9284195a576e
[13:01:06 INFO]: [STDOUT]: _KJP12 logged in via RakNet, mtu 1398
[13:01:06 INFO]: _KJP12[/[0:0:0:0:0:0:0:1%0]:44051] logged in with entity id 214 at (-32.127683096115916, 71.0, -73.60408038656982)
[13:01:06 INFO]: _KJP12 joined the game
[13:01:06 INFO]: [STDOUT]: [MultiChannellingDataCodec] Started multichannel
```
Steps to Reproduce
raknet;
). Localhost vs. external server doesn't matter.Notes
The server was with stock settings at the time of testing, which means the compression threshold of
256
was applied. There are no other configs available, for as LazyDFU (present purely to reduce boot time), Krypton and RaknetFabric has no user/admin-configurable options.The full
```properties #Minecraft server properties #Sun Feb 20 12:57:52 CST 2022 enable-jmx-monitoring=false rcon.port=25575 gamemode=survival enable-command-block=false enable-query=false level-name=world motd=A Minecraft Server query.port=25565 pvp=true difficulty=easy network-compression-threshold=256 require-resource-pack=false max-tick-time=60000 use-native-transport=true max-players=20 online-mode=true enable-status=true allow-flight=false broadcast-rcon-to-ops=true view-distance=10 server-ip= resource-pack-prompt= allow-nether=true server-port=25565 enable-rcon=false sync-chunk-writes=true op-permission-level=4 prevent-proxy-connections=false hide-online-players=false resource-pack= entity-broadcast-range-percentage=100 simulation-distance=10 rcon.password= player-idle-timeout=0 force-gamemode=false rate-limit=0 hardcore=false white-list=false broadcast-console-to-ops=true spawn-npcs=true spawn-animals=true function-permission-level=2 text-filtering-config= spawn-monsters=true enforce-whitelist=false resource-pack-sha1= spawn-protection=16 max-world-size=29999984 ```server.properties
for reference.Logs
The full, unmodified logs with both the Vanilla and Raknet transports used. The same task was attempted with both, with only the Vanilla transport crashing.
```java [12:57:45 INFO]: Loading Minecraft 1.18.1 with Fabric Loader 0.13.2 [12:57:46 INFO]: Loading 7 mods: - com_velocitypowered_velocity-native 1.1.0-SNAPSHOT via krypton - fabricloader 0.13.2 - java 17 - krypton 0.1.6 - lazydfu 0.1.2 - minecraft 1.18.1 - raknet-fabric 0.1.0+alpha.1.4 [12:57:46 INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/kjp12/Downloads/raknet/libraries/net/fabricmc/sponge-mixin/0.11.2+mixin.0.8.5/sponge-mixin-0.11.2+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER [12:57:46 INFO]: Compatibility level set to JAVA_16 [12:57:46 WARN]: Error loading class: net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon (java.lang.ClassNotFoundException: net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon) [12:57:51 INFO]: Compression will use libdeflate (Linux x86_64), encryption will use OpenSSL 1.1.x (Linux x86_64) [12:57:51 INFO]: Krypton is now accelerating your Minecraft server's networking stack 🚀 [12:57:52 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [12:57:52 WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [12:57:52 WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [12:57:52 WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [12:57:52 WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [12:57:52 WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [12:57:52 INFO]: Reloading ResourceManager: Default [12:57:53 INFO]: Loaded 7 recipes [12:57:53 INFO]: Loaded 1141 advancements [12:57:56 INFO]: Starting minecraft server version 1.18.1 [12:57:56 INFO]: Loading properties [12:57:56 INFO]: Default game type: SURVIVAL [12:57:56 INFO]: Generating keypair [12:57:56 INFO]: Starting Minecraft server on *:25565 [12:57:56 INFO]: Using epoll channel type [12:57:56 INFO]: Using epoll channel type [12:57:56 INFO]: Preparing level "world" [12:57:56 INFO]: Preparing start region for dimension minecraft:overworld [12:57:57 INFO]: [STDOUT]: Krypton detected, applying compatibility [12:57:58 INFO]: Preparing spawn area: 0% [12:57:58 INFO]: UUID of player _KJP12 is 82fe072f-b2d9-4005-b8a6-9284195a576e [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:01 INFO]: Preparing spawn area: 0% [12:58:02 INFO]: Preparing spawn area: 4% [12:58:02 INFO]: Preparing spawn area: 10% [12:58:03 INFO]: Preparing spawn area: 17% [12:58:03 INFO]: Preparing spawn area: 33% [12:58:04 INFO]: Preparing spawn area: 42% [12:58:04 INFO]: Preparing spawn area: 55% [12:58:05 INFO]: Preparing spawn area: 69% [12:58:05 INFO]: Preparing spawn area: 79% [12:58:06 INFO]: Preparing spawn area: 79% [12:58:06 INFO]: Preparing spawn area: 83% [12:58:07 INFO]: Preparing spawn area: 85% [12:58:07 INFO]: Preparing spawn area: 88% [12:58:08 INFO]: Preparing spawn area: 91% [12:58:08 INFO]: Preparing spawn area: 96% [12:58:09 INFO]: Preparing spawn area: 98% [12:58:09 INFO]: Time elapsed: 12561 ms [12:58:09 INFO]: Done (12.780s)! For help, type "help" [12:58:09 INFO]: _KJP12[/[0:0:0:0:0:0:0:1%0]:45814] logged in with entity id 200 at (-32.127683096115916, 71.0, -73.60408038656982) [12:58:09 INFO]: _KJP12 joined the game [12:58:12 INFO]: [STDERR]: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 259 is below server threshold of 512 [12:58:12 INFO]: [STDERR]: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 120 is below server threshold of 512 [12:58:12 INFO]: _KJP12 lost connection: Internal Exception: io.netty.handler.codec.DecoderException: Badly compressed packet - size of 259 is below server threshold of 512 [12:58:12 INFO]: _KJP12 left the game [13:01:06 INFO]: [STDOUT]: Krypton detected, applying compatibility [13:01:06 INFO]: UUID of player _KJP12 is 82fe072f-b2d9-4005-b8a6-9284195a576e [13:01:06 INFO]: [STDOUT]: _KJP12 logged in via RakNet, mtu 1398 [13:01:06 INFO]: _KJP12[/[0:0:0:0:0:0:0:1%0]:44051] logged in with entity id 214 at (-32.127683096115916, 71.0, -73.60408038656982) [13:01:06 INFO]: _KJP12 joined the game [13:01:06 INFO]: [STDOUT]: [MultiChannellingDataCodec] Started multichannel ```Minimal reproducible world
The world contains a chest with both pickaxes in the required order to reproduce the same error.