aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/README.md
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-05-27 00:05:14 -0500
committermat <github@matdoes.dev>2022-05-27 00:05:14 -0500
commite9e60eca80d159fd3e340ae91f2cfeb03c838f45 (patch)
treeb3fc6f2c1c475d2184b0acb7f1e2c4bf78cf9cfe /azalea-protocol/README.md
parent0c0fec00655fd5850e2123cb6fc2da94731dd409 (diff)
downloadazalea-drasl-e9e60eca80d159fd3e340ae91f2cfeb03c838f45.tar.xz
Update README.md
Diffstat (limited to 'azalea-protocol/README.md')
-rw-r--r--azalea-protocol/README.md23
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.
+