938905068b
Previously, we would send the latest supported protocol version in the server ping packet. This normally works fine since the server will respond with the protocol version it supports, which we'll use. However, some server software such as BungeeCord supports _multiple_ protocols, and the server will match what the client sent in the ping (if it supports it). Since BungeeCord is a proxy, it forwards to backend servers which can be of various versions, which won't necessarily be the latest. This change adds a command-line option to change the "default" protocol version, -p or --default-protocol-version, which is used in the ping packet instead. Current default is 477 (1.14), but if you pass for example -p 404 (1.13.2), then BungeeCord will respond accordingly: packet = Some(StatusResponse(StatusResponse { status: "{\"version\":{\"name\":\"BungeeCord 1.8.x-1.14.x\",\"protocol\":404},\"players\":{\"max\":1,\"online\":0},\"description\":{\"extra\":[{\"color\":\"dark_blue\",\"text\":\"Another Bungee server\"}],\"text\":\"\"},\"modinfo\":{\"type\":\"FML\",\"modList\":[]}}" })) [main.rs:95][INFO] Detected server protocol version 404 and this protocol will be used. Effectively, this option lets you masquerade as any supported client version. See https://github.com/iceiix/stevenarella/issues/125#issuecomment-489484701 |
||
---|---|---|
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