Added README

master
James T. Martin 2020-12-02 12:09:39 -08:00
parent 9acc85be48
commit 900f08c17c
Signed by: james
GPG Key ID: 4B7F3DA9351E577C
1 changed files with 46 additions and 0 deletions

46
README.md Normal file
View File

@ -0,0 +1,46 @@
# tmd
A Minecraft protocol-compatible server written from scratch in Rust.
Supports Minecraft version 1.16.1 (protocol version 736),
including protocol compression, encryption, and authentication.
Most of the protocol infrastructure is there, so complete protocol support
is mostly a matter of defining Play state packets with my handy macros.
The protocol infrastructure is actually written bi-directionally
and in theory should work as a protocol client as well,
although that is not currently actively persued or tested.
## Features
### Compression
The server will use protocol compression by default.
You can disable it by disabling the crate's `compression` feature,
although disabling it would probably be pointless.
The compression threshold is 64 bytes.
### Encryption
The server will also use protocol encryption by default.
You can disable it by disabling the crate's `encryption` feature.
To use encryption, you will need to a 1024-bit RSA keypair
and store it in DER format as `private/pub.der` and `private/priv.der`.
You can do that with OpenSSL using these comamnds:
```
openssl genpkey -algorithm RSA -aes256 -pkeyopt rsa_keygen_bits:1024 -outform DER -out priv.der
openssl rsa -pubout -inform DER -in priv.der -outform DER -out pub.der
```
### Authentication
The server will run in 'online mode' by default,
which means only players authenticated with Mojang can connect.
You can disable it by disabling the crate's `authentication` feature.
This feature also depends on the `encryption` feature.
**If you wish to set your server to 'offline mode', you will have to disable encryption as well.**
Although disabling authentication means that the server will allow unauthenticated clients to connect,
the official client will disconnect from an encrypted server if it fails to authenticate with Mojang.
To be able to connect to a server with authentication off and encryption on,
you would either need to be logged in (which defeats the point) or use a modified client.
To my knowedge, no such modified client currently exists.