diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2022-06-08 23:37:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-08 23:37:54 +0000 |
| commit | 601637bd48fcba826da01725430268f706181449 (patch) | |
| tree | 5b58723b931450d358d7e4387d87cc8e8b9166b2 /azalea-protocol/README.md | |
| parent | ea7249fb77a8e07d232600081c9c3df5f698d70f (diff) | |
| parent | fb1d419a3d4207a293a1ad6001253192f1b4d12f (diff) | |
| download | azalea-drasl-601637bd48fcba826da01725430268f706181449.tar.xz | |
Merge pull request #7 from mat-1/1.19
1.19
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. + |
