b98ba3afd2
Previously, the zlib compressor was initialized once, lazily, then reused for each packet by resetting the stream. This didn't properly emit the zlib headers, so packet compression was broken and caused "java.util.zip.DataFormatException: incorrect header check" on the server. Since packets are only compressed above a threshold, this problem manifested itself only on larger servers, such as 1.10.2 FTB Beyond and Skyfactory 3, and 1.12.2 SevTech: Ages, which require sending a large ModList above the compression threshold enabled by the server. Change to instead recreate the zlib compressor, each time it is used as to capture the full header. For symmetry, the decompressor is also recreated each time. * Removes self.compression_write and self.compression_read instance variables * Remove self.compression_write, initialize with cursor * Log compressing/decompressing packets in network debug mode |
||
---|---|---|
blocks | ||
gl | ||
resources | ||
shared | ||
src | ||
www | ||
.gitignore | ||
.travis.yml | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
appveyor.yml |
README.md
Stevenarella
Multi-protocol Minecraft-compatible client written in Rust
Don't expect it to go anywhere, just doing this for fun.
Images
In action: http://gfycat.com/NeedyElaborateGypsymoth
Community chatroom
We have a chatroom on EsperNet: irc.esper.net
server, #stevenarella
channel.
Join with your favorite IRC client or Matrix.
Protocol support
Game version | Protocol version | Supported? |
---|---|---|
1.14 | 477 | ✓ |
19w02a | 452 | ✓ |
18w50a | 451 | ✓ |
1.13.2 | 404 | ✓ |
1.12.2 | 340 | ✓ |
1.11.2 | 316 | ✓ |
1.11 | 315 | ✓ |
1.10.2 | 210 | ✓ |
1.9.2 | 109 | ✓ |
1.9 | 107 | ✓ |
15w39c | 74 | ✓ |
1.8.9 | 47 | ✓ |
1.7.10 + Forge | 5 | ✓ |
Stevenarella is designed to support multiple protocol versions, so that client development is not in lock-step with the server version. The level of support varies, but the goal is to support major versions from 1.7.10 up to the current latest major version. Occasionally, snapshots are also supported.
Support for older protocols will not be dropped as newer protocols are added.
Credits
Thanks to @thinkofname for the original Steven (Rust), which Stevenarella is an updated and enhanced version of.
Downloads
Windows users can download pre-compiled builds from here: https://ci.appveyor.com/project/iceiix/stevenarella (Select your platform, Click the artifacts tab and download Steven.zip)
The Visual Studio 2017 Redistributable is required to run these builds.
Building
Requires Rust stable version 1.34.1 or newer to build.
Compile and run:
cargo run --release
Just compile:
cargo build --release
For progress on web support, see www/.
Running
Standalone
Just running Stevenarella via a double click (Windows) or ./stevenarella
(everything else)
will bring up a login screen followed by a server list which you can select a server
from.
License
Dual-licensed MIT and ApacheV2