Go to file
ice_iix 938905068b Add command-line option to change default protocol version
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
2019-05-06 16:00:01 -07:00
blocks Bump collision from 0.18.0 to 0.19.0 (#95) 2019-01-19 07:47:46 -08:00
gl Remove unnecessary 'extern crate's in Rust 2018 edition, import macros 2018-11-04 12:39:23 -08:00
resources Rename project to Stevenarella (#83) 2019-01-11 20:41:19 -08:00
shared 1.13.2 (404) multiprotocol support (#67) 2018-12-28 21:22:58 -08:00
src Add command-line option to change default protocol version 2019-05-06 16:00:01 -07:00
www Add support for compiling WebAssembly wasm32-unknown-unknown target (#92) 2019-03-03 08:32:36 -08:00
.gitignore Add support for compiling WebAssembly wasm32-unknown-unknown target (#92) 2019-03-03 08:32:36 -08:00
.travis.yml Add support for compiling WebAssembly wasm32-unknown-unknown target (#92) 2019-03-03 08:32:36 -08:00
Cargo.lock Update to Rust stable 1.34.1 2019-05-05 06:22:31 -07:00
Cargo.toml Add command-line arguments parsing, --server (#90) (#114) 2019-05-04 18:36:22 -07:00
LICENSE-APACHE Duel license under MIT and ApacheV2 2016-03-26 17:34:47 +00:00
LICENSE-MIT Duel license under MIT and ApacheV2 2016-03-26 17:34:47 +00:00
README.md Add Forge handshake support. Closes #88 (#134) 2019-05-05 18:39:58 -07:00
appveyor.yml Update to Rust stable 1.34.1 2019-05-05 06:22:31 -07:00

README.md

Stevenarella

Build Status

Multi-protocol Minecraft-compatible client written in Rust

Don't expect it to go anywhere, just doing this for fun.

Images

Steven on Hypixel Steven

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