diff options
| author | mat <github@matdoes.dev> | 2022-05-27 00:05:14 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-05-27 00:05:14 -0500 |
| commit | e9e60eca80d159fd3e340ae91f2cfeb03c838f45 (patch) | |
| tree | b3fc6f2c1c475d2184b0acb7f1e2c4bf78cf9cfe /azalea-protocol/README.md | |
| parent | 0c0fec00655fd5850e2123cb6fc2da94731dd409 (diff) | |
| download | azalea-drasl-e9e60eca80d159fd3e340ae91f2cfeb03c838f45.tar.xz | |
Update README.md
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. + |
