diff options
Diffstat (limited to 'azalea-protocol/README.md')
| -rw-r--r-- | azalea-protocol/README.md | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/azalea-protocol/README.md b/azalea-protocol/README.md index b4741a3b..d2ad356e 100644 --- a/azalea-protocol/README.md +++ b/azalea-protocol/README.md @@ -12,13 +12,16 @@ Unfortunately, using azalea-protocol requires Rust nightly because [specializati Adding new packets is usually pretty easy, but you'll want to have Minecraft's decompiled source code which you can obtain with tools such as [DecompilerMC](https://github.com/hube12/DecompilerMC). -1. Find the packet in Minecraft's source code. Minecraft's packets are in the `net/minecraft/network/protocol/<state>` directory. The state for your packet is usually `game`. -2. Add a new file in the [`packets/<state>`](./src/packets/game) directory with the snake_cased version of the name Minecraft uses. -3. Copy the code from a similar packet and change the struct name. -4. Add the fields from Minecraft's source code from either the read or write methods. -If it's a `varint`, use `#[var] pub <name>: i32` (or u32 if it makes more sense). -If it's a `varlong`, use `#[var] pub <name>: i64` (or u64). -If it's a byte, use i8 or u8. -Etc.. You can look at [wiki.vg](https://wiki.vg/Protocol) if you're not sure about how a packet is structured, but be aware that wiki.vg uses different names for most things. -5. Add the packet to the `mod.rs` file in the same directory. You will have to look at [wiki.vg](https://wiki.vg/Protocol) to determine the packet id here. -6. That's it! Format your code, submit a pull request, and wait for it to be reviewed. +1. First, you'll need the packet id. You can get this from azalea-protocol error messages, or from wiki.vg. +2. Run `python codegen/newpacket.py [packet id] [clientbound or serverbound] \[game/handshake/login/status\]`\ +3. Go to the directory where it told you the packet was generated. If there's no comments, you're done. Otherwise, keep going. +4. Find the packet in Minecraft's source code. Minecraft's packets are in the `net/minecraft/network/protocol/<state>` directory. The state for your packet is usually `game`. +5. Add the fields from Minecraft's source code from either the read or write methods. You can look at [wiki.vg](https://wiki.vg/Protocol) if you're not sure about how a packet is structured, but be aware that wiki.vg uses different names for most things. +6. Format the code, submit a pull request, and wait for it to be reviewed. + +### Implementing packets + +You can manually implement reading and writing functionality for a packet by implementing McBufReadable and McBufWritable, but you can also have this automatically generated for a struct or enum by deriving McBuf. + +Look at other packets as an example. + |
