valence/packet_inspector/README.md
Ryan Johnson 0a75f103aa
Packet filtering (#67)
* Add `PacketName`

* Fix inefficiency in codec.rs

* Add regex argument to packet_inspector

* Reorder imports

* Make the regex arg optional

* Update README
2022-09-16 05:31:37 -07:00

79 lines
2 KiB
Markdown

# What's This?
The packet inspector is a very simple Minecraft proxy for viewing the contents of packets as they are sent/received.
It uses Valence's protocol facilities to print packet contents.
This was made for three purposes:
- Check that packets between Valence and client are matching your expectations.
- Check that packets between vanilla server and client are parsed correctly by Valence.
- Understand how the protocol works between the vanilla server and client.
# Usage
First, start a server
```sh
cargo r -r --example conway
```
In a separate terminal, start the packet inspector.
```sh
cargo r -r -p packet_inspector -- 127.0.0.1:25566 127.0.0.1:25565
```
The client must connect to `localhost:25566`. You should see the packets in `stdout`.
The third argument to the packet inspector is an optional regular expression compatible with
the [regex](https://docs.rs/regex/latest/regex/) crate. Packets with names that match the regex are printed while those
that don't are ignored. If the regex is not provided then the empty string is assumed and all packets are considered
matching.
If you're only interested in packets `Foo`, `Bar`, and `Baz`, you can use a regex such as `^(Foo|Bar|Baz)$`.
```sh
cargo r -r -p packet_inspector -- 127.0.0.1:25566 127.0.0.1:25565 '^(Foo|Bar|Baz)$'
```
Packets are printed to `stdout` while errors are printed to `stderr`. If you only want to see errors in your terminal,
direct `stdout` elsewhere.
```sh
cargo r -r -p packet_inspector -- 127.0.0.1:25566 127.0.0.1:25565 > log.txt
```
## Quick start with Vanilla Server via Docker
Start the server
```sh
docker run -e EULA=TRUE -e ONLINE_MODE=false -d -p 25565:25565 --name mc itzg/minecraft-server
```
View server logs
```sh
docker logs -f mc
```
Server Rcon
```sh
docker exec -i mc rcon-cli
```
In a separate terminal, start the packet inspector.
```sh
cargo r -r -p packet_inspector -- 127.0.0.1:25566 127.0.0.1:25565
```
Open Minecraft and connect to `localhost:25566`.
Clean up
```
docker stop mc
docker rm mc
```